web-dev-qa-db-ja.com

Android Studio:デフォルトのデバッグおよびリリースbuildTypesのビルドバリアントを削除/フィルタリングし、カスタムbuildTypesを使用しているものだけを保持する方法は?

次のようにカスタムbuildTypeを作成しました。

 buildTypes {
        releasefree.initWith(buildTypes.release)
        releasefree {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
        releasepro.initWith(buildTypes.release)
        releasepro {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
            applicationIdSuffix ".pro"
        }
        debugfree.initWith(buildTypes.debug)
        debugfree {
            shrinkResources true
            applicationIdSuffix ".debug"
            debuggable true
        }
        debugpro.initWith(buildTypes.debug)
        debugpro {
            shrinkResources true
            applicationIdSuffix ".pro.debug"
            debuggable true
        }
    }

デフォルトのデバッグビルドタイプとリリースビルドタイプを使用するつもりはなく、ビルドバリアントリストからそれらを削除したいと思います。私はいくつかのフレーバーを持っていて、バリアントのリストが多すぎます。デフォルトのデバッグタイプとリリースタイプでバリアントを削除すると、それらを使用することはないので役立ちます。

次のようにバリアントフィルターを使用してみましたが、機能しませんでした

Android.variantFilter { variant ->
    if(variant.buildType.name.endsWith('Release') || variant.buildType.name.endsWith('Debug')) {
        variant.setIgnore(true);
    }
}

バリアントのフィルタリング方法に問題がありますか、それともデフォルトのデバッグおよびリリースビルドタイプでバリアントを削除できないだけですか?.

理解した。それは私の側では本当にばかげた間違いでした。上記のバリアントフィルターは機能します。名前はすべて小文字で、比較した文字列の大文字が原因でした。

次のように変更すると(比較文字列を小文字にする)、期待どおりに機能しました。

Android.variantFilter { variant ->
    if(variant.buildType.name.endsWith('release') || variant.buildType.name.endsWith('debug')) {
        variant.setIgnore(true);
    }
}

またはこれ

Android.variantFilter { variant ->
    if(variant.buildType.name.equals('release') || variant.buildType.name.equals('debug')) {
        variant.setIgnore(true);
    }
}

名前で除外したい場合は、次のようなものを使用してください

Android.variantFilter { variant ->
    if(variant.name.equals("qaRelease")|| variant.name.equals('something')) {
        variant.setIgnore(true);
    }
}
1
Alan Cruz