1. ホーム
  2. android

[解決済み] Gradleを使ったAndroidの開発 if caseのようなコードでフレーバーをビルドする

2023-03-26 05:36:48

質問

ビルドフレーバーで作業しようとしています。私のbuild.gradleでは、2つのフレーバー、通常のフレーバーと管理フレーバーを定義しています。

基本的に、adminフレーバーはメインアクティビティに追加ボタンがあります。

私は、異なるフレーバーのために異なるパッケージ/クラスを定義できることを理解しています。しかし、フレーバーに応じてコードの一部を追加/削除するための一種のifケースを作成する方法はありますか?

基本的に、私は2つのバージョンのActivityを必要とします。しかし、私は2つの全く異なるバージョンのアクティビティを必要とせず、それらを維持します。

そこで、私のアクティビティでは、次のことを行いたいと思います。

=> gradleはflavorが'admin'であるかどうかをチェックします。

=> もしそうなら、ボタンに次のコードを追加します。

これは可能でしょうか?それとも、2つの異なる物理的な活動が必要で、そのため、後から機能を追加するときに両方を維持することになるのでしょうか。

どのように解決するのですか?

BuildConfig.FLAVOR を使用すると、製品の風味を組み合わせることができます。 そのため、1つのフレーバーディメンジョンしかない場合

productFlavors {
    normal {
    }

    admin {
    }
}

あとは確認するだけです。

if (BuildConfig.FLAVOR.equals("admin")) {
    ...
}

しかし、複数のフレーバーディメンジョンがある場合

flavorDimensions "access", "color"

productFlavors {
    normal {
        dimension "access"
    }

    admin {
        dimension "access"
    }

    red {
        dimension "color"
    }

    blue {
        dimension "color"
    }
}

もあります。 BuildConfig.FLAVOR_accessBuildConfig.FLAVOR_color のフィールドがあるので、このようにチェックする必要があります。

if (BuildConfig.FLAVOR_access.equals("admin")) {
    ...
}

そして BuildConfig.FLAVOR は完全なフレーバー名を含んでいます。例えば adminBlue .