Android Studio下JNI编程(引入外部或AS自行编译so文件)
来源:互联网 发布:12315可以投诉淘宝官方 编辑:程序博客网 时间:2024/06/05 14:07
1. 引用外部so文件
已验证过的引用外部so文件主要有三种方式:
1.1 main目录下创建jniLibs目录,so文件按平台存放于子目录下(最简单方式)
只需在app/src/main目录下创建jniLibs目录,然后将so文件按平台存放于对应子目录下即可。
1.2 将jniLibs重定向到libs目录。(Eclipse项目习惯)
将so文件放在app/libs目录下。修改build.gradle文件,增加sourceSets 将jniLibs重定向到libs目录。
sourceSets { main { jniLibs.srcDirs = ["libs"] }}
1.3 so文件放在libs目录下,先将so文件打包成jar包,再将该jar包一起打包进apk。
so文件位置与1.2相同。不同的是build.gradle文件的修改,不需要sourceSets,增加:
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") { destinationDir file("$projectDir/libs") baseName "Native_Libs" extension "jar" from fileTree(dir: "libs", include: "**/*.so") into "lib/"}tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn(nativeLibsToJar)}
2. Android Studio直接编译so文件
2.1 NDK配置
下载NDK
解压,以我的环境为例,解压到了D:\develop\Android-NDK\android-ndk-r10e目录;
配置AS(Android Studio),File->Project Structure,Android NDK location配置为上述目录。
2.2 创建调用native方法的类
创建本地方法工具类NativeKit,该类中将演示众多JNI使用情形。
2.3 生成.h文件
打开terminal,cd到app/scr/main/java下,然后执行javah –jni <包名+类名>,生成.h文件。
2.4 创建jni目录
2.5 实现native方法
将.h文件拷贝到jni目录下,并创建相应的.cpp文件,实现.h文件定义的方法。(方法名不要改动)
2.6 添加moduleName(so文件名)
修改build.gradle文件,添加moduleName,值即为生成的.so文件名。对应上文提到的System.loadLibrary(“JniDemo”)
2.7 运行app,AS将自动编译so文件
可在工程目录下 app\build\intermediates\ndk\debug\obj\local目录查看各平台的so文件。
3 参考链接
工程源码:https://git.oschina.net/huangximin/JniTest-AS.git
参考文章:(在此表示感谢!若有版权问题,请留言提醒,将尽快删除相关内容)
http://blog.csdn.net/qinjuning/article/details/7607214
http://blog.csdn.net/qiujuer/article/details/42040963
http://m.blog.csdn.net/blog/haikuotiankong8/47318281
转自:http://blog.csdn.net/huangximin1990/article/details/50441400
- Android Studio下JNI编程(引入外部或AS自行编译so文件)
- Android Studio下JNI编程(引入外部或AS自行编译so文件)
- Android Studio下JNI编程(引入外部或AS自行编译so文件)
- Android Studio jni编译生成so文件
- Android studio NDK-JNI 编译so文件
- android studio下JNI生成so文件
- Android Studio引入外部so的方法
- android studio引入.so文件
- Android studio 引入So文件
- android studio 引入so文件
- android studio中使用ndk编译.so文件,调用C/C++代码(jni编程)
- AS引入so文件
- Android Studio下JNI调用与编译so包
- 重温android studio jni编译生成so文件
- Android studio 下JNI编程实例并生成so库
- Android studio 下JNI编程实例并生成so库
- Android Studio如何引入so文件
- android studio用引入.so文件
- 如何部署web服务到tomcat中
- Taijan算法模板
- goahead上传文件的问题
- Gartner全球IAAS市场报告:阿里云进入全球前三
- Android控件篇 Button(二)
- Android Studio下JNI编程(引入外部或AS自行编译so文件)
- 一文理解深度学习,卷积神经网络,循环神经网络的脉络和原理3-残差神经网络
- 数据库事务操作
- ucos 获取查找最高优先级任务算法
- android学习笔记(二)
- 汉诺塔问题
- C++的STL之stack
- 【性能测试-jmeter】使用jmeter做dubbo服务线程同步并发测试(多图)
- Fiddler使用界面简介、简单的抓包分析(一)