Android studio导入第三方so库 --绝杀篇

来源:互联网 发布:mac开机黑屏文件问号 编辑:程序博客网 时间:2024/05/21 11:04

由于工程要做硬件方面的配对与嵌入。厂家直接扔了个demo过来,我以为跟往常一样so easy,谁知道嵌入工程后各种闪退,那个无语啊。工期比较紧,燥了起来(这是大忌!),联系厂家的攻城狮之后,才一下子开朗起来,特意做个mark!N久没写了,黑线。


往常的so库导入,可见文章。http://blog.csdn.net/haikuotiankong8/article/details/47318281

以下的几点,是转自上面地址的文章。

1.Studio自带jniLibs方法(推荐)

这种方式对于新建的studio项目很适用

因为Studio支持jniLibs方式,所以在项目目录下的 app/src/main目录下创建一个名叫jniLibs文件夹,然后将对应的so文件拷贝到该目录下,如下所示:
这里写图片描述
这样即可将so库导入导到工程目录中去

2.修改build.gradle文件(推荐)

这种方式对于迁移到studio的项目很适用(比如eclipse项目)

打开项目的”build.gradle”文件,并加入如下行,将so文件路径(jniLibs)指向"libs"路径,这样就可以把so文件打包到APK的lib文件夹中
这里写图片描述

3.打包前先生成Jar后自动解包到apk

task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {      destinationDir file("$buildDir/native-libs")      baseName 'native-libs'      extension 'jar'      from fileTree(dir: 'libs', include: '**/*.so')      into 'lib/'  }  tasks.withType(Compile) {      compileTask -> compileTask.dependsOn(nativeLioJar) 
  • 1
  • 29
  • 1

打包生成目录(build\native-libs)中的.jar文件

compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') 

4.手动生成jar后自动解包到apk

将所有需要使用的.so文件压缩为.zip文件(zip中的文件目录结构为: lib/armeabi/*.so)

然后把zip文件后缀改为.Jar

然后放到libs下,android studio编译时会自动将libs下jar打包
这里写图片描述

这样就相当于借助jar文件将so文件导包



好的,他山之石 借鉴完毕,现在说说我的绝杀技了。

我也是再次检验了 我的项目之后,竟然还是闪退了,这个郁闷啊。

有下面的两点:


5、厂家给到的SDK ,不要乱放,更不要改包名!!!

例如,XXX.java,是放在com.123.123 下面的,千万不要忽视或是手贱,放到其他文件夹下面,不然你会跟了2个小时也不清楚问题出在哪里,别问我为啥知道。


6、若是上面的5个方法之后,还是没效果,恭喜你,遇到跟我一样的不常见现象。

       在代码里,需要调用到的地方,例如a.java里的某方法。在调用之前加上一句:

   System.loadLibrary("XXX");
       要即时load一下第三方库。注意不要搞错库名。


Ok,这下子妥妥的搞定任务了,赶紧撸完,做点拯救自己的事情吧。


原创粉丝点击