目 录CONTENT

文章目录

解决Android引用多个库的jni架构平台支持冲突的问题

DevWiki
2016-09-02 / 0 评论 / 0 点赞 / 26 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-03-31,若内容或图片失效,请留言反馈。 部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

今天在自己写Demo时, 引用了两个库: Realm 和高德地图.

接着时开开心心地码代码,顺利地编译apk.然后一运行挂了!!!
异常如下:java.lang.UnsatisfiedLinkError

查看了代码,找到了异常原因:

高德地图只有一个 armeabi 的so文件,而 Realm 带有全平台的so文件.运行时由于手机是 armeabi-v8a ,所以一运行就挂了!

怎么解决呢?本来想下载Realm的源码重新编译aar然后去除其他平台的so文件,但又在群里问了一下,找到了简单的方法.

解决办法

在module的build.gradle文件添加如下设置:

buildTypes {
    release {
        ndk {
            abiFilters = ["armeabi"]
        }
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    debug {
        ndk {
            abiFilters = ["armeabi"]
        }
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

在ndk设置里面添加过滤,只添加需要的架构,然后重新编译.问题解决了.

这个知识点虽小,但是替换了我之前粗暴的解决办法: 直接删除aar文件的so文件!

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
博主关闭了所有页面的评论