web-dev-qa-db-ja.com

APKからabiを除外する

私のアプリケーションでは、x86、armeabi-v7a、およびmips(それぞれ約2.7Mb)のネイティブコードを持つrenderscriptを使用しています。また、mipsアーキテクチャにはいくつかのデバイスしかないことも読みました。そこで、アプリケーションをユニバーサル(x86やarmeabi-v7aなど)とmipsの2つのAPKにバンドルしたいと思います。分割セクションはmipsのapkを作成するのに役立ちますが、ユニバーサルapkにはまだmipsアーキテクチャが含まれています。だから私の質問は、結果apkからabiを除外する方法ですか?

ありがとう

12
Viktor K

MIPS以外のすべてを含む別のフレーバーを設定してみることができます。 Android Gradleプラグインソースの一部であるテストプロジェクトの1つからの 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フレーバーには基本的に2つの一般的なARM ABIが含まれているようです。おそらくx86armeabi-v7aを含む「ユニバーサル」フレーバーを定義できます。

彼らには別の テストプロジェクト があり、その build.gradle には以下が含まれています:

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

同様のものを使用して、そこからmipsを削除できる場合があります。

10
Vlad