You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

集成BitcoinJ库后Android APK安装失败:INSTALL_FAILED_NO_MATCHING_ABIS

解决INSTALL_FAILED_NO_MATCHING_ABIS错误(集成BitcoinJ后)

这个问题我之前在集成原生库依赖时也踩过坑,本质是APK中打包的原生库(.so文件)和你真机的CPU架构不匹配导致的。结合你的配置来看,bitcoinj-core:0.14.7这个老版本默认支持的原生架构不全,再加上web3j:core:3.3.1-android的依赖叠加,就触发了这个安装错误。

试试下面的完整解决方案:

1. 调整Gradle的ABI配置

在你的android块里补充以下配置,确保覆盖主流真机的架构,同时处理可能的库冲突:

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.umerkiani.osrwallet"
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        
        // 新增:指定要打包的原生架构,覆盖主流机型
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
        }
    }
    
    // 调整splits配置,加入arm64-v8a(很多新真机用这个架构)
    splits {
        abi {
            enable true
            reset()
            include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
            universalApk true
        }
    }
    
    // 新增:处理多个依赖可能带来的同名so文件冲突
    packagingOptions {
        pickFirst 'lib/**/*.so'
    }

    // 你的其他配置(buildTypes、dataBinding、compileOptions)...
}

2. 清理并重建项目

执行以下命令彻底清理旧的编译产物,避免缓存影响:

./gradlew clean
./gradlew assembleDebug

然后重新安装APK到真机上。

3. 可选:升级BitcoinJ版本(谨慎操作)

0.14.7是比较旧的版本了,后续版本对Android的原生架构支持更完善。如果你能兼容API变化,可以尝试升级到0.16.2(相对稳定的版本):

implementation 'org.bitcoinj:bitcoinj-core:0.16.2'

为什么之前的配置没用?

你之前的splits配置漏掉了arm64-v8a架构——现在大部分中高端Android真机都是这个架构,缺少对应的原生库就会导致安装失败。加上ndk.abiFilters可以明确告诉Gradle只打包你指定的架构库,避免引入不必要的架构文件。

内容的提问来源于stack exchange,提问作者Umer Kiani

火山引擎 最新活动