android studio NDK开发环境设置
2017-03-17 12:50
357 查看
1、 新建一个android工程
新建一个android工程NdkTest,注意,在新建过程中,未选择Include C++ Support。2、 安装/设置NDK路径
在此可以通过android studio在线下载安装NDK,也可以离线下载NDK安装包再设置NDK路径。本人将NDK直接放在了SDK目录下,如下:3、 创建Native接口类
在NdkTest工程中app->src->main->java新建一个native java层的接口类JavaNdk.java,以后就可以用此类中的接口直接调用C/C++实现,在此处用了静态初始化块导入动态库(库名暂时忽略)。如下:4、 新建JNI目录
在main目录下新建一个jni目录,如下:5、 生成native C头文件
生成native c头文件有两种方式,如下:5.1 通过*.class文件生成native头文件
1、编译工程,无错。2、windows下(本人是),通过cmd命令,进入工程目录NdkTest\app\build\intermediates\classes\debug下。
3、通过javah命令生成native c头文件
4000
。命令如下:
javah -classpath . -jni com.example.xk.ndktest.JavaNdk
此处注意:com.example.xk.ndktest是包名,JavaNdk是类名。
扩展:若用eclipse生成头文件时,需要进入eclipse工程下的bin\classes目录下,再javah命令生成头文件。
javah -classpath . -jni com.example.xk.ndktest.JavaNdk
4、完成后,将在NdkTest\app\build\intermediates\classes\debug目录下生成一个头文件,头文件名就是com_example_xk_ndktest_JavaNdk.h。仔细观察,文件名是有规律的。文件内容如下:
仔细观察文件内容,可以发现一定的规律,只是函数的参数类型可能需要研读JNI相关文件才能明白,此处不做说明。
5、将com_example_xk_ndktest_JavaNdk.h拷贝到jni目录下,并修改为JavaNdk.h(根据个人喜好修改文件名)。
6、至此完成native C/C++头文件的生成。
5.2、通过*.java文件生成native 头文件
1、通过cmd命令进入NdkTest\app\src\main目录。2、通过javah生成native 头文件。命令如下:
javah -d jni -classpath ./java com.example.xk.ndktest.JavaNdk
说明:-d jni 头文件生成到jni文件夹。
./java 即在当前的java目录下
3、自动生成一个com_example_xk_ndktest_JavaNdk.h头文件到jni目录下,修改文件名为JavaNdk.h。
6、新建native c文件
在jni目录下,根据JavaNdk.h新建一个JavaNdk.c文件。需要注意:生成的头文件中,函数只声明了参数类型,而没有参数名,所以在JavaNdk.c中需要添加参数名,否则会报错。(此只是一些小细节),如下:此处只是为了方便,所以都是return 0。
7、设置NDK编译参数
1、打开app目录下build.gradle文件,在defaultConfig项目下添加如下:ndk{
moduleName"NdkTest"
//abiFilters "armeabi","armeabi-v7a", "x86"
}
moduleName:生成的.so文件名,系统生成后会自动添加前缀和后缀,即libNdkTest.so
abiFilters:根据不同平台生成不同so文件,默认生成android studio支持所有平台so文件。
扩展:按住 Ctrl进行点击ndk或moduleName会进入相关文件。
以下即是ndk的相关参数。分别对应:
ndk{
moduleName "JniDemo" // 设置生成的文件名
cFlags "-DANDROID_NDK -D_RELEASE" //这个对应的是生成模式
ldLibs "m", "log", "jnigraphics" //这个对应 LOCAL_LDLIBS 但是需要去掉前面的 “l”
abiFilters "all" //这个是对应的 APP_ABI
stl "stlport_shared" //这个对应的是 APP_STL
}
说明:在某些情况下需要在buildTypes项下添加如下,具体情况需要具体分析。
sourceSets.main {
jni.srcDirs = [] //disable automatic ndk-build
call
jniLibs.srcDir"src/main/libs"
}
2、打开工程下gradle.properties文件,在文件末尾添加android.useDeprecatedNdk=true,否则不会生成so文件。
3、查看local.properties文件中NDK路径是否准确。如图:
8、编译工程
在JavaNdk.java中添加库名即步骤7中moduleName设置的名字,如下:经过上述设置后,编译工程即可在NdkTest\app\build\intermediates\ndk目录下生成各平台的so文件,并直接生成APK文件。
9、引用第三方so库
在NdkTest\app\src\main下新建一个JniLibs文件夹,并新建相关平台的目录,然后相关平台的so文件放入其中。如图:在相应的nativejava类中声明相关的库名和接口即可正常使用。
文中引用了很多大神的结晶。在此一一谢过。
相关文章推荐
- android studio NDK开发环境设置
- android studio NDK开发环境设置
- android studio NDK开发环境设置
- android studio NDK开发环境设置
- android studio NDK开发环境设置
- NDK+AndroidStudio+Mac环境开发
- android studio NDK开发环境配置
- Android Studio NDK开发之环境配置和简单实例
- Android Studio NDK开发环境搭建及Demo示例
- android-studio(1):配置NDK开发环境
- Android Studio JNI/NDK 编程(二) Windows 下环境搭建 demo 开发
- Android Studio NDK开发-环境配置
- android studio NDK开发环境搭建实践
- Android NDK开发 Android Studio使用新的Gradle构建工具配置NDK环境(一)
- 004androidStudio ndk开发环境
- NDK开发环境配置-AndroidStudio
- AndroidStudio NDK开发 c环境调用java代码
- android studio ndk环境搭建 和开发
- Android Studio JNI/NDK 编程 Windows 下环境搭建 demo 开发
- Android Studio NDK开发环境搭建及Demo示例