2016-03-28 61 views
2

不同的產品,不同風味的方法,我需要這樣的:如何調用從普通的java類

任何方法:

if(for one flavor) 

    do something 

else 

    do something 

我如何處理從Java口味?

回答

1

您可以爲flavor指定文件。如果我是你,我會做這樣的事情: 把一個文件放在main/java/your/package源文件中,我們把它叫做CustomClass.java。 它包含了這樣的事情:

public class CustomClass { 
    public static void myCustomMethod() { 
     //Do something here... 
    } 
} 

之後,你可以在風味名的文件夾中創建(旁邊的主文件夾)這個類的味道特定版本。 所以把CustomClass.java在這裏:your_flavor_name/java/your/package ,做點別的:

public class CustomClass { 
     public static void myCustomMethod() { 
      //Do something here for that specific flavor! 
     } 
    } 

構建將合併文件,並使用特定的人對你的味道,並使用主要版本,如果沒有特殊味道的文件中找到。您可以將它用於drawables,以及其他所有文件(assets,...)。

你只需要在此之後創建一個新的味道。在您的gradle這個補充一點:

productFlavors { 
     your_flavor_name { 
      applicationId "your.package" 
     } 
} 

更多的東西在這裏:http://developer.android.com/tools/building/configuring-gradle.html

0

感謝您的回答@GaborNovak

其實,我搜索類似的東西爲通用類:

if("flavor-name".equals(getApplicationContext().getPackageName())){ 
       myIntent.setClass(thisClass.this, nextClass.class); 
      } 
      else { 
       myIntent.setClass(thisClass.this, nextClass.class); 
      } 

我覺得有點混亂。當我編寫getApplicationContext.getpackageName - >它會在構建gradle中定義選定flavor的application_id。 當我編寫BuildConfig.APPLICATION_ID - >它獲取包名稱。有沒有人可以解釋這一邏輯的背後?這不是令人困惑嗎?

0

定義兩個string.xml用於兩個product-flavors分開並添加通用名稱的字符串中的每個,例如,在第一香味string.xml添加<string name="flavor">Flavor One</string>和在第二香味string.xml添加<string name="flavor">Flavor Two</string>。現在在該方法中,獲取字符串flavor的值並相應地添加代碼行。 因爲,對於這兩種口味,絃樂味道將有兩個不同的值。

0

在productFlavor創建的東西()類:

主要常見來源:

main\java\com.exmaple.test\class.java - > something() 

Flavor1來源:

flavor\java\com.exmaple.test\class.java - > something() 

Flavor2來源:

flavor\java\com.exmaple.test\class.java - > something()