【问题标题】:Exclude abi from apk从 apk 中排除 abi
【发布时间】:2015-11-26 20:02:09
【问题描述】:

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

谢谢

【问题讨论】:

    标签: android gradle 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。您可能可以定义一个包含x86armeabi-v7a 的“通用”风格。

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

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

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

    【讨论】:

    • 当前 ndk {} 部分已弃用。你现在有另一种使用方式吗?
    • 这也可以在不使用产品风格的情况下完成,您只需根据需要将 ndk 部分添加到调试或发布部分。见这里stackoverflow.com/questions/30946365/…
    • @Vetalll 你可以在 gradle.properties 中使用 android.useDeprecatedNdk=true。但是,我不确定
    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多