从 apk 中排除 abi

Exclude abi from apk

在我的应用程序中,我使用 renderscript,它具有 x86、armeabi-v7a 和 mips(每个约 2.7Mb)的本机代码。我还读到 mips 架构只有几个设备。所以我想将我的应用程序捆绑在两个 APK 中:通用(例如 x86 和 armeabi-v7a)和 mips。我发现拆分部分有助于为 mips 创建 apk,但通用 apk 仍然包含 mips 架构。所以我的问题是如何从结果 apk 中排除 abi?

谢谢

您可以尝试设置另一种风格,其中包含除 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。您或许可以定义一个包含 x86armeabi-v7a.

的 "universal" 风味

他们还有另一个 test project, whose build.gradle 包含:

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a', 'mips'
    }
}

您也许可以使用类似的东西,然后从那里删除 mips