从 apk 中排除 abi
Posted
技术标签:
【中文标题】从 apk 中排除 abi【英文标题】:Exclude abi from apk 【发布时间】:2015-11-26 20:02:09 【问题描述】:在我的应用程序中,我使用了具有 x86、armeabi-v7a 和 mips 的本机代码(每个约 2.7Mb)的渲染脚本。我还读到 mips 架构只有几个设备。所以我想将我的应用程序捆绑在两个 APK 中:通用(例如 x86 和 armeabi-v7a)和 mips。我发现拆分部分有助于为 mips 创建 apk,但通用 apk 仍然包含 mips 架构。所以我的问题是如何从结果 apk 中排除 abi?
谢谢
【问题讨论】:
【参考方案1】:您可以尝试设置包含除 MIPS 之外的所有内容的另一种风格。在作为 android Gradle 插件源的一部分的测试项目之一的 build.gradle
文件中,我发现了这个:
apply from: "../commonHeader.gradle"
buildscript apply from: "../commonBuildScript.gradle", to: buildscript
apply plugin: 'com.android.application'
android
compileSdkVersion 21
buildToolsVersion = rootProject.ext.buildToolsVersion
productFlavors
x86
ndk
abiFilter "x86"
arm
ndk
abiFilters "armeabi-v7a", "armeabi"
mips
ndk
abiFilter "mips"
看起来他们的arm
风格基本上包括两个常见的ARM ABI。您可能可以定义一个包含x86
和armeabi-v7a
的“通用”风格。
他们还有另一个test project,其build.gradle
包含:
splits
abi
enable true
reset()
include 'x86', 'armeabi-v7a', 'mips'
您也许可以使用类似的东西,然后从那里删除mips
。
【讨论】:
当前 ndk 部分已弃用。你现在有另一种使用方式吗? 这也可以在不使用产品风格的情况下完成,您只需根据需要将 ndk 部分添加到调试或发布部分。见这里***.com/questions/30946365/… @Vetalll 你可以在 gradle.properties 中使用 android.useDeprecatedNdk=true。但是,我不确定以上是关于从 apk 中排除 abi的主要内容,如果未能解决你的问题,请参考以下文章
Android apk - 如何使用 gradle 从 3rd 方依赖项中排除 .so 文件