2015-09-27 55 views
12

私は別のビルドバリアントの風変わりなアプリケーションを構築しています。フレーバーは「無料」と「有料」です。私は、アプリが "有料"の場合にのみ起動する必要がある私のJavaクラスにいくつかのロジックを作成したい。私はこのような何かを行うことができ、アプリケーションのIDを持っていたらAndroid - フレーバーのApplicationIdを取得する方法

gradle.build

productFlavors { 
    free { 
     applicationId "com.example.free" 
     resValue "string", "app_name", "Free App" 
     versionName "1.0-free" 
    } 
    paid { 
     applicationId "com.example.paid" 
     resValue "string", "app_name", "Paid App" 
     versionName "1.0-paid" 
    } 

:以下のようにそのため私は、Gradleのビルドプロセスの間に設定された「APPLICATIONID」を取得する方法が必要になります。

if(whateverpackageid.equals("paid")) { 
     // Do something or trigger some premium functionality. 
    } 

私はアプリがコンパイルされた後のGradleビルドプロセス中に「APPLICATIONIDは」最終的には「パッケージ名」になると言って訂正するのですか?もしそうなら、「アプリケーションID」または「パッケージ名」を取得して、Javaファイルにフレーバー依存のロジックを実装できる最善の方法は何ですか?

答えて

20

私はあなたの製品のフレーバーでビルド構成変数を使用します。線に沿って何か:

productFlavors { 
    free { 
     applicationId "com.example.free" 
     resValue "string", "app_name", "Free App" 
     versionName "1.0-free" 
     buildConfigField "boolean", "PAID_VERSION", "false" 
    } 
    paid { 
     applicationId "com.example.paid" 
     resValue "string", "app_name", "Paid App" 
     versionName "1.0-paid" 
     buildConfigField "boolean", "PAID_VERSION", "true" 
    } 
} 

次にあなたが使用することができ、ビルド後:コンパイルおよびインポートする前に、属性を追加した後

if (BuildConfig.PAID_VERSION) { 
    // do paid version only stuff 
} 

あなたが同期を行う必要があり/ Gradleの上に構築Gradleがあなたのために生成するBuildConfigクラス。

10

APPLICATION_ID、BUILD_TYPE、FLAVOR、VERSION_CODE、およびVERSION_NAMEのようなすべての値を得るには最良の解決策が見つかりました

書き込み:Log.d( "Application Id:"、BuildConfig.APPLICATION_ID);あなたのコードで。あなたの味のAPPLICATION_IDを提供します。あなたは、このリンクを参照することができます詳細については

BuildConfig.java

public final class BuildConfig { 
    public static final boolean DEBUG = Boolean.parseBoolean("true"); 
    public static final String APPLICATION_ID = ""; 
    public static final String BUILD_TYPE = "debug"; 
    public static final String FLAVOR = ""; 
    public static final int VERSION_CODE = 1; 
    public static final String VERSION_NAME = ""; 
} 

http://blog.brainattica.com/how-to-work-with-flavours-on-android/

+0

最適なソリューションを、受け入れられるべきです –

関連する問題