Step 1、
编写native方法类文件,缩写完成后,
AndroidStudio中 build -> make project
Step 2、
1)在 /build/intermediates/classes/debug/… 路径找到 类.class
2)在 Terminal 窗口中执行
javah -d [output目录] -classpath ./app/build/intermediates/classes/debug/ [包+类 完整名称]-d 后面的目录是生成 文件目录
-classpath 后面的目录是编译class目录
Step 3、
在生成的jni目录中编写c文件代码,编写完成后,
1)AndroidStudio中 build -> make project
提示
Error:Execution failed for task ':app:compileDebugNdk'.
> 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.
在项目根目录中的 gradle.properties 文件中增加
android.useDeprecatedNdk=true
2)AndroidStudio中 build -> make project
提示
Error:Execution failed for task ':app:compileDebugNdk'.
> NDK not configured.
Download the NDK from http://developer.android.com/tools/sdk/ndk/.
Then add ndk.dir=path/to/ndk in local.properties.
(On Windows, make sure you escape backslashes, e.g. C:\ndk rather than C:
dk)
配置NDK目录到 local.properties 文件中
ndk.dir=/Users/miles/Library/Android/ndk/android-ndk-r10e
3)在AndroidStudio中 build -> make project
提示完成
Step 4、
编译APK安装,调用方法提示
java.lang.UnsatisfiedLinkError:
Couldn't load HelloLibs from loader dalvik.system.
PathClassLoader[DexPathList[[zip file “/*******-1.apk"]
打开APP module中的 build.gradle,
增加代码到defaultConfig中
例如
defaultConfig {
applicationId “***********”
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk {
moduleName "HelloLibs" // 生成库的名称 默认前面会加 lib ( libHelloLibs.so )
}
}
Step 5、
编译生成 执行,OK
生成的SO库在 APP module中的 build/intermediates/ndk/ 中
AndroidStudio 项目中 引用 .so 库文件
1、在main目录中创建 jniLibs目录
2、将armeabi / x86 / armeabi-v7a / 等等目录复制到jniLibs中
3、引用的java文件,包名不要变,在做库文件的时候,直接封装成jar,供项目使用