关于Android Studio .so文件打包不到APK中的原因

         郁闷和困惑我了好几天的问题终于解决了,感觉像心里一块石头落地了,没解决之前,都想着是不是AS工具出现问题了,系统出现问题了,还是电脑有问题?各种原因都找了,功夫不负有心人,最后没办法,只能一行一行代码去看,最终找到了原因。

1,需要在build中添加如下配置,这是必备的

android {
   sourceSets {
       main {
           jniLibs.srcDirs = ['libs']
       }
   }
}

2,如果添加了该项配置出现了问题可能原因是引用了第三方包引起

比如我这边引用了xutils这个包,因为该包中也有一个.so的文件libwebpbackport.so,所以该包中配置了打包的命令导致上述(第一条1原因)配置失效,不过经过测试,也有打包成功的时候,不过大多数时候都是失败的,具体原因还有待研究。

compile 'org.xutils:xutils:3.3.36'

最后把该包去掉,自己的.so文件就被打包到APK中了,具体查看如下:

root@android:/data/data/com.wizarpos.company # ls
cache
files
lib
shared_prefs
root@android:/data/data/com.wizarpos.company # cd lib/
root@android:/data/data/com.wizarpos.company/lib # ls
libwebpbackport.so
root@android:/data/data/com.wizarpos.person/lib # ls
libjni_cloudpos_rfcard.so
libjni_wizarpos_hsm.so
root@android:/data/data/com.wizarpos.person/lib #

3,如何解决该问题

要解决这个问题可以不是用gradle引用,改为jar包引用,步骤如下

首先找到该包的地址如:http://dl.bintray.com/wyouflf/maven/org/xutils/xutils/3.3.36/

下载对应的xutils-3.3.36.aar,之后解压该文件,提取其中的.so和class.jar文件,其中.so在jni文件夹中

class.jar在根目录中,修改一下class.jar的名字xutils3.3.36.jar,这样方便查看版本。

这样就解决了.so不能被打包的问题了。。。。。




猜你喜欢

转载自blog.csdn.net/fhl13017599952/article/details/52120739
今日推荐