android 64位机子兼容32位.so库文件

 猴子在调用高德地图的时候,遇到一个操作系统兼容问题,异常堆栈说是找不到so库文件,猴子就不懂了,明明有他说的那个文件。

        后来和同行交流,他们的jniLibs中有一个arm64-v8a的文件夹用来存放64位操作系统的so库文件,于是猴子自己建了一个arm64-v8a文件夹,因为高德并没有把64位的so库文件公布出来,所以,猴子直接把他们唯一的so库考到了arm64-v8a文件夹下。自以为这下就该好了,于是等待见证奇迹。奇迹果然发生了,爆出了那个so库是32位而非64位的异常。猴子果断蒙圈了。下载了高德的demo,看到她们的demo里面也只有armeabi这一个库文件夹。这让猴子感觉到,64位的操作系统可以兼容32位的库文件。于是多方查找资料。终于在一家英文网站上找到了答案。

       解决方案也很简单,在build.gradle中加上,这句话的意思大概就是,告诉程序加载如下的so文件


defaultConfig {
  ......

    ndk {
        abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
    }


}

这时会报错,因为gradle的配置中,并不知道是否要做操作系统的兼容,这时只要在gradle.properties文件中加上

android.useDeprecatedNdk=true

就可以了。

运行,终于能奇迹般地运行起来了。

 

另外ffmpeg 编译生成动态库过程中 --arch 与--cross-prefix对应关系如下

archs=(
  'arm'
    'arm64'
    'x86'
    'x86_64'
    'mips'
    'mips64'
)

toolchains=(
    'arm-linux-androideabi-4.9'
    'aarch64-linux-android-4.9'
    'x86-4.9'
    'x86_64-4.9'
    'mipsel-linux-android-4.9'
    'mips64el-linux-android-4.9'
)


---------------------
作者:vhawk
来源:CSDN
原文:https://blog.csdn.net/vhawk/article/details/49964475
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值