2016-06-23 11 views
1

productFlavorsに関する技術的な質問があります。つまり、複数の同じアプリケーションがある場合、BuildVariantの選択に応じていくつかの具体的なクラス(たとえば1つだけのフレーバー)が選択されます。コンパイルしないでください。わかったよ。しかし、どのように共通のクラスのそれらを参照することができますか?なぜなら私が特別な味(このクラスを使用する)を選択しない限り、アプリケーション全体はコンパイルされないからです。 私のコードProductFlavors - 一部のクラスがコンパイルされない

...私は学生ですが、私は、全体のコードを探し、他のフレーバーのクラスを無効にするよりも、これで働く人々ということは、簡単な方法を持つべきだと思う

で私はこの検証

public boolean isPro() { 
     return "pro".equals(BuildConfig.FLAVOR); 
    } 

作成し、このコード

を試してみてください一般的な活動で

productFlavors { 
     free { 
      applicationId "com.example.flavors.free" 
     } 

     pro { 
      applicationId "com.example.flavors.pro" 
     } 
    } 

をgradle.build

if (isPro()) { 
      Toast.makeText(this, "Versão Pro", Toast.LENGTH_SHORT).show(); 
     } else { 

//   startActivity(new Intent(getApplicationContext(), BannerActivity.class)); 

     } 

このBannerActivityは(無料の風味フォルダに作成)自由な風味のespecificである私は(プロの味の)他のBuilderVariantを使用する場合、私はこの活動を無効にしない場合、その後、全体のコードは動作しません。 (コンパイルしないでください)... 1つのアクティビティだけを無効にするのは簡単ですが、多くのアクティビティがある場合は?

ありがとうございます。

答えて

0
  1. プロフェッショナルで空のBannerActivityを作成することができます。それは使用されませんが、あなたのアプリはコンパイルされます。

  2. 各フレーバで2種類の呼び出しアクティビティを作成できます。無料版ではstartActivity()がプロで表示されます。Toast.makeText()

+1

これは機能します。しかし、パッケージの名前はsrc/nameFlavor/packageNameで同じでなければなりません。もしこれらのpackageNameが異なっていれば、インポートも異なってくるのでコードもコンパイルされません。ありがとうございました。 – Anita

関連する問題