atlas框架接入带有so库的bundle不成功的问题

如果你是在真机或者armeabi的模拟器上面失败的,请看1和2。如果是用genymotion模拟器的请全看
1、关于NDK的配置,如果的你bundle中存在so库,你是需要在gradle中进行配置的。
ps:build.gradle
android {
compileSdkVersion 25
buildToolsVersion '25.0.0'
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
ndk{
abiFilters "armeabi","x86"
}
}
debug{
ndk{
abiFilters "armeabi","x86"
}
}
}
sourceSets{
main{
jniLibs.srcDirs = ['libs'] //so库放在工程的根目录的libs目录//默认开发情况下是把so库放在main下的jniLibs目录
}
}
}

备注说明:如果Abundle依赖了B module,so库是在B module中,则A和B都要进行配置,只是此时A不需要配置sourceSets了。

2、atlas中的atlas_core中的SoLoader中的loadLibrary(String libName)在x86模拟器上存在问题,这个方法中只有一个if,if(supportArmeabi()){},也就是说如果是x86模拟器他也会将armeabi的so拷贝到本地的目录下面,导致在x86上存在问题。所以需要对这个方法进行修改。

3、在跟genymotion模拟器上面还存在一个问题,就是在执行System.loadLibrary()的时候崩溃报错,错误如下:
library 'system/lib/libhoudini.so' not find
网上的解决方案是 genymotion-arm-translation 把这个zip拖到模拟器中,等待安装成功后进行重启模拟器就好,但是在运行atlasdemo中如果需要加载so的工程中会出现上述错误。此时我已经将上述压缩包拖到模拟器中进行了安装。我的模拟器是genymotion4.4.4.
我的方法:将这个压缩包进行解压,/system/lib/下面存在两个so库,libhoudini.so,libdvm_houdini.so,将这两个库与你自己的so库放在同样的目录下面,只放在x86的文件夹下面。
如果还是不行,那么网上还存在一个方法,就是下载gapps-kk-20140105-signed.zip,然后拖拽到模拟器里面。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值