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

Android中如何对native库链接的第三方so依赖执行minify压缩?

Android第三方原生依赖库strip/minify配置方案

AGP默认仅对项目源码编译生成的原生库执行strip操作,预制引入的第三方so默认会跳过该流程,可通过以下两种方案实现第三方so的压缩:

方案1:修改AGP构建配置(推荐,适配AGP 7.0+)

在app模块的build.gradle中新增以下配置:

android {
    // 保留原有配置不变,新增以下packagingOptions块
    packagingOptions {
        jniLibs {
            // 若需要保留部分so的调试符号,添加下方规则,不需要可删除
            // keepDebugSymbols += "**/libxxx.so"
            // 强制开启所有jni库的strip操作,包含第三方预制so
            stripDebugSymbols = true
        }
    }
}

若使用AGP 4.2及更低版本,替换为以下配置:

android {
    ndk {
        stripDebugSymbols = true
    }
}

方案2:自定义Gradle Task手动strip

若AGP版本存在适配问题,可新增自定义task调用NDK自带的strip工具执行压缩:

// 请根据你的NDK版本、宿主编译系统调整strip工具路径
// Windows路径示例:def stripToolPath = "${android.ndkDirectory}/toolchains/llvm/prebuilt/windows-x86_64/bin/llvm-strip.exe"
// Mac路径示例:def stripToolPath = "${android.ndkDirectory}/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip"
def stripToolPath = "${android.ndkDirectory}/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip"

// 注册自定义strip任务,Debug变体示例,Release变体将对应字段替换为Release即可
tasks.register('stripThirdPartySo', Exec) {
    dependsOn 'mergeDebugNativeLibs'
    doFirst {
        fileTree("${buildDir}/intermediates/merged_native_libs/debug/out").each { soFile ->
            if (soFile.name.endsWith('.so')) {
                commandLine stripToolPath, '--strip-unneeded', soFile.absolutePath
            }
        }
    }
}

// 将自定义任务插入构建流程
tasks.whenTaskAdded { task ->
    if (task.name == 'stripDebugDebugSymbols') {
        task.dependsOn stripThirdPartySo
    }
}

注意事项

  • 操作前备份原始第三方so,部分依赖内部动态符号加载的第三方库strip后可能出现运行时崩溃
  • NDK r23及以上版本优先使用llvm-strip工具,旧版本NDK使用对应架构binutils目录下的strip工具
  • 若需要保留指定符号,可给strip命令添加--keep-symbols=符号列表文件路径参数自定义保留规则
  • 验证生效方式:构建完成后对比merged_native_libs和stripped_native_libs目录下对应so的体积,或执行readelf -S so文件路径检查是否还存在debug节区

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 12:39:02