Android Studio引入so库
来源:互联网 发布:二维码点餐软件 编辑:程序博客网 时间:2024/04/20 16:11
1.在如下目录中新建jniLibs目录,在jniLibs目录下新建armeabi、armeabi-v7a、x86等目录,并将各个版本的so库拷贝至相应目录中
2.根据so提供的函数,建立符合其命名规则的包名,并在包下建立符合其命名规则的类,如果函数为Java_com_example_myapplication_MainActivity_stringFromJNI,则建立com.example.myapplication包和MainActivity类
3.在上述类中声明native方法
public native String stringFromJNI();
4.在程序中加载soSystem.loadLibrary("hello-jni");
5.在程序中直接调用上述native方法即可
也许有人说,so包应该跟jar包一样呗,放在对应模块的libs目录下,eclipse就是这样的。有这么简单吗?答案是:NO
原理:
其实在AndroidStudio中,我们之所以可以把jar包放在对应模块的libs目录下,比如app模块(也就是通常意义下的主工程了)的libs目录中,而不需要再去配置build.gradle文件,就可以正常使用这些jar包,是因为在AndroidStudio中新建项目时,系统已经在默认为我们配置好了gradle,如果仔细看模块下的build.gradle文件的话,一般会有这么一句:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar'])}
看到了吧,这句就是告诉gradle,我们的第三方jar包在libs目录下,如果没有这一行配置,那么理论上我们把jar包直接放在libs目录下其实是不行的,只不过新建项目时系统已经为我们配好了。这里libs是个相对路径,因为我们的build.gradle文件本身就在app模块下,那么这里的libs当然也就是指app模块下的libs,其实build.gradle文件中所有的路径都可以写相对路径,我们下边讲的so包的路径也是只写相对路径就可以了。
OK,言归正传,现在知道jar包的引入原理了,那么so包为什么要放在那么奇怪的目录下?能不能放在任意一个自定义的目录呢?当然是可以的。
其实在build.gradle中,默认会有一些这样的配置:
sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] aidl.srcDirs = ['src/main/aidl'] }}
这些配置在你新建工程之后,在build.gradle文件中默认是没有的,因为默认就是这样的,当然也就不写也可以,当然你写出来也没错。意思是so包就去src/main/jniLibs目录下找,aidl文件默认就到src/main/aidl目录下找。当然还有许多其它的配置,你还可以配置你的AndroidManifest.xml文件在哪里,还可以配置你的Java代码在哪里,如果你不配的话都会有一个默认值,这里只是以jniLibs和aidl为例而已。
看到这里你应该就明白了,为什么我们把so包直接放到src目录下的main目录下的jinLibs目录就可以了,而不需要配置gradle文件了,因为系统默认就会到这个目录下找,如果你想把so包放在一个你喜欢的地方,比如直接放在app目录下的myJniLibs目录下,那你只需要把上面内容改成:
sourceSets { main { jniLibs.srcDirs = ['myJniLibs'] aidl.srcDirs = ['src/main/aidl'] }}
这样就可以了。明白了原理,似乎一切都明了了,同理,如果不想把aidl文件放在默认目录下,也可以改aidl.srcDirs的值,如果不想把java代码放在默认目录,就可以改java.srcDirs的值,如果不想把资源文件放在默认目录下,就可以改res.srcDirs的值。如果你想把目录结构改的跟eclipse下的工程一样,就改这里的值就可以,不一一细说了。
- android studio引入so库
- Android Studio引入so库
- android studio中如何引入.so库
- android studio引入.so文件
- Android studio 引入So文件
- android studio 引入so使用
- android studio 引入so文件
- IntelliJ IDEA使用 - idea和android studio引入so库
- Android Studio 引入编写好的.so库
- Android Studio如何引入jar包和so库?
- Android Studio如何引入so文件
- android studio用引入.so文件
- Android Studio 引入jar及so
- Android Studio signed apk 引入so包
- Android Studio如何引入so,jar文件
- Android Studio引入.so文件的方法
- Android Studio中引入.so文件
- Android Studio引入外部so的方法
- Matlab基本操作
- Gradle实现多渠道打包
- OpenCv 4----(正式篇)opencv的简介 /* 不断更新 */
- 小抄:UDTF&UDAF示例
- 游戏设计模式
- Android Studio引入so库
- 翻译《有关编程、重构及其他的终极问题?》——21.正确的检查文件的结尾符(EOF)
- js 优化方面
- python 判断是不是中文字
- java再复习——泛型使用语法上的一些坑
- servlet中使用HttpServletResponseWrapper截获返回的页面内容
- java 企业网站源码模版 有前后台 springmvc SSM 生成静态化
- Vulkan编程指南翻译 第四章 队列和命令 第3节 清空和填充图像
- 反编译工具的使用