本示例演示使用AndroidStudio自动生成so文件并打包
1.新建一个android项目HelloJni
2.初始项目大约是这样的
3.新建一个类及native方法
4.接下来需要需要生成AppUtils.class文件和AppUtils.class对应的.h头文件
生成class文件方法有两种:通过androidstudio自动生成class文件 ,通过命令行生成class文件
- 通过androidstudio自动生成class文件
项目的class文件存放在 项目名称/app/build/intermediates/classes文件夹之下,如果看不到全部的结构,在下图中更改
classes文件下当前没有AppUtils.class文件,需要重新生成 ,点击菜单Build -> ReBuild Project
接下来通过命令行进入debug文件夹使用javah命令生成.h文件
接下来在main文件夹中新建jni文件夹,然后将刚才生成的.h文件移动到jni文件夹之中
5.使用C/C++实现h文件
在jni文件夹下面新建.cpp文件并实现方法:
6.配置NDK编译
执行编译,然后可能会遇到一点问题:
Error:(14, 0) Error: NDK integration is deprecated in the current plugin. Consider trying the new experimental plugin. For details, see http://tools.android.com/tech-docs/new-build-system/gradle-experimental. Set "android.useDeprecatedNdk=true" in gradle.properties to continue using the current NDK integration.
日志显示需要启用 android.useDeprecatedNdk=true ,在gradle.properties加入该选项,如果没有gradle.properties文件自行新建
配置NDK环境:
然后重新Rebuild Project , 注意刚才的命令行如果没有退出,可能会报app:clean 失败,关掉命令行
7.注意接下来坑来了:
build的时候可能会报以下错误:
那么这是什么问题呢,通过baidu google找到答案,如果jni下面只有一个cpp/h文件 就会报错,解决方案就是:新建一个空的文件:
重新编译通过
8最后调用jni方法:
运行项目 完成: