Android studio版本
新建Native C++项目
取名为JniDemo
C++ Standard 选择Default
修改app/buidl.gradle文件,选择仅支持arm64-v8a架构
新建JNI Folder
点击finish
查看app/build.gradle自动生成sourceSets/main/jni/srcDirs这个节点
使用NDK编译库,模拟为第三方库,目录结构
sice@T:~/AndroidStudioProjects$ tree libhello/
libhello/
├── hello.c
└── hello.h
hello.c的内容
sice@T:~/AndroidStudioProjects$ cat libhello/hello.c
#include <hello.h>
int do_inc(void)
{
static int i = 0;
return i++;
}
hello.h的内容
sice@T:~/AndroidStudioProjects$ cat libhello/hello.h
#ifndef __HELLO__
#define __HELLO__#ifdef __cplusplus
extern "C" {
#endif /* _cplusplus */
int do_inc(void);
#ifdef __cplusplus
};
#endif /* _cplusplus */#endif
编译libhello.a库文件
aarch64-linux-android30-clang -c -I. hello.c
aarch64-linux-android-ar -rcs libhello.a hello.o
效果
sice@T:~/AndroidStudioProjects/libhello$ tree .
.
├── hello.c
├── hello.h
├── hello.o
└── libhello.a
拷贝hello.h和libhello.a到 app/src/main/jni目录后,右键jni选择Reload from Disk
引入libhello.a和hello.h效果
修改app/src/main/cpp/native-lib.cpp调用libhello.a库的do_inc函数
修改app/src/main/cpp/CMakeLists.txt引入libhello.a参与编译
修改app/src/main/java/MainActivity.java
编译结果
编译运行JniDemo效果
<完>