Android JNI开发的基本使用,一个Hello World的native方法展示,已经有很多了,比如我网上参考的一个简单的编译JNI 的基础展示
这里放入链接:http://blog.csdn.net/qjay_dev/article/details/51343312(Android JNI/NDK开发之基本姿势<一>)
这里遇到了一些问题:
首先,我不知道是不是我的AS问题,通过AS下载的NDK,有点问题,编译不通过,老是出现错误,没办法我又在官网下载了最新的android-ndk-r14b-windows-x86_64
一直到 AS 的 Rebuild Project 在app的build/intermediates/目录下面始终没有看到预期的ndk文件夹,找不到想要的so文件,很是惆怅,然后开始网上搜该问题的解决办法,各种尝试,
保证 ndk目录没问题,local.properties文件中ndk.dir=E\:\\android_sdk\\android-ndk-r14
gradle.properties文件里面设置 android.useDeprecatedNdk=true
在app的build.gradle里面 设置: defaultConfig{ ... ndk{ moduleName 'jnidemo'//自定义名称 } } android{ .... sourceSets{ main{ jniLibs.srcDir 'src/main/jni_src'//告知jni源码目录 } } } 在生成想要的.h和.c/.cpp文件之后,在jni文件夹下最好生成一个空的.c/.cpp文件,这可能是AS的一个bug,编译之后但是还是没有出现想要的ndk文件so文件, 在交叉编译的时候怎么都无法生成so文件,javah生成的头文件没错,c文件也没有错,java文件也没有错原因:是JNI文件夹路径不对 1 在执行javah命令时,我进入的是cd app/src/main/java 这样jni文件夹在java文件夹下,作为一个包存在,这样就无法生成so文件 执行javah的正确姿势: 2 进入app/src/main目录:cd app/src/main 执行javah命令:javah javah -d jni -classpath ./Java com.chatone.jni.JniDemo 3, -d jni 头文件生成到jni文件夹(当前在<Project>\app\src\main目录下,所以.h所在的目录为<Project>\app\src\main\jni ) -classpath ./java 指定去当前路径下java下寻找包名指定的类 这样再rebuild一下,就会生成so文件了