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

如何在Android Studio中生成不含特定依赖native library的APK?

嘿,这个需求其实通过Gradle配置就能轻松搞定,我来给你分两种常见情况详细说下,保证能解决你的问题:

方法一:针对单个架构排除特定so库

如果你只需要排除某一个CPU架构下的目标so库,直接在对应Module的build.gradle(注意是模块级别的配置文件,不是项目根目录的那个)里添加packagingOptions配置就行:

android {
    // 保留你原本的compileSdk、defaultConfig等配置...

    packagingOptions {
        // 示例:排除armeabi-v7a架构下的libfoo.so
        exclude 'lib/armeabi-v7a/libfoo.so'
        // 如果还要排除arm64-v8a架构的,就再加一行
        exclude 'lib/arm64-v8a/libfoo.so'
    }
}

这里的路径对应APK打包后内部的lib目录结构,你需要根据自己要排除的so库实际所在的架构目录来写路径。

方法二:批量排除全架构下的同名so库

要是这个so库在多个CPU架构目录里都存在,不想逐个架构写配置,可以用通配符来批量排除:

android {
    // 保留你原本的配置...

    packagingOptions {
        // 匹配所有架构目录下的libfoo.so,一次性全部排除
        exclude 'lib/**/libfoo.so'
    }
}

** 是通配符,表示匹配任意层级的目录,这样不管是x86还是mips等架构下的目标so都会被排除在外。

额外注意事项
  • 如果你要排除的是自己项目里native模块编译出来的so,除了上面的打包排除,还可以直接在CMakeLists.txt或者Android.mk里移除对应的编译目标,这样连编译阶段都不会生成这个so,更彻底。
  • 配置完成后记得点击Android Studio右上角的「Sync Now」同步Gradle配置,然后重新编译APK。你可以通过菜单栏的「Build -> Analyze APK」打开生成的APK,检查lib目录下是否已经没有目标so库了。

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

火山引擎 最新活动