You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android应用安装时libexample.so无法自动复制至data/app/lib的技术求助

解决Native库未自动复制到data/app/lib的建议

以下是针对你的问题的具体排查和解决步骤:

  • 确认项目中Native库的存放路径与打包配置
    确保你的libexample.so放在项目的正确位置:Android Studio项目中,标准路径是src/main/jniLibs/arm64-v8a/,而非app/lib/。如果自定义了路径,需要在Module级别的build.gradle中明确指定:

    android {
        sourceSets {
            main {
                jniLibs.srcDirs = ['app/lib'] // 匹配你的自定义路径
            }
        }
        // 同时确保指定了目标ABI
        defaultConfig {
            ndk {
                abiFilters 'arm64-v8a'
            }
        }
    }
    

    另外检查packagingOptions是否意外排除了.so文件,避免类似exclude 'lib/**'的错误配置。

  • 验证extractNativeLibs配置的正确性
    确认android:extractNativeLibs="true"是在AndroidManifest.xml的<application>标签下设置,而非其他节点:

    <application
        android:allowBackup="true"
        android:extractNativeLibs="true"
        android:icon="@mipmap/ic_launcher"
        ...>
    

    若你的targetSdkVersion >= 23,还可以在build.gradle中同步配置,避免manifest被gradle覆盖:

    android {
        defaultConfig {
            extractNativeLibs true
        }
    }
    
  • 检查设备ABI兼容性
    通过adb shell getprop ro.product.cpu.abi命令确认设备确实是arm64-v8a架构。如果设备是其他架构(如armeabi-v7a、x86),系统不会提取arm64架构的库。同时避免应用中存在其他ABI的同名库,导致系统优先选择其他版本。

  • 排查APK本身的完整性
    解压你的APK文件,确认lib/arm64-v8a/libexample.so存在且文件大小正常,没有损坏。如果APK中不存在该文件,说明打包过程出现问题,需要重新检查构建配置。

  • 清理构建缓存并重建项目
    执行以下操作清除旧缓存,避免构建异常:

    1. 在Android Studio中选择File -> Invalidate Caches... -> Invalidate and Restart
    2. 运行命令行:./gradlew clean assembleDebug(根据测试环境替换为Release)
  • 排查第三方工具的影响
    如果你使用了应用加固、混淆或第三方打包工具,这类工具可能会修改APK的Native库结构,导致系统无法正常提取。检查工具的配置,确保Native库被正确保留,未被篡改或排除。

内容的提问来源于stack exchange,提问作者Yarin Shitrit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:25:20