2013-07-30 49 views
0

我們的應用程序是由多個市場,併爲開發者,我需要做出不同的代碼運行爲每個目標的分佈是這樣的:編譯到Android不同的目標

if (target == ROCK) do A; 
else if (target == PAPER) do B; 

等,確實ADT/Eclipse中支持這些東西?

我應該怎麼做呢?

+0

你是指在不同版本的SDK中,還是在不同的位置/載體中? –

+0

既不,我想有我自己定義的目標,這可能嗎? –

+0

[This answer](http://stackoverflow.com/a/4526126/622391)說你不能,但還有其他方法。看看[這個解決方案](https://weblogs.java.net/blog/schaefa/archive/2005/01/how_to_do_condi_1.html)哪個_「[使用] Ant的副本和過濾器功能來創建源代碼不同的代碼「_。 –

回答

1

您可以在res/values文件夾中設置一個參數(例如strings.xml中的字符串)來檢查。該字符串可以與目標參數(例如res/values-480x800中的screensize)。

1

有兩種方法可供選擇,這取決於你想要什麼:

  1. 多個APK,每個硬編碼的選項。
  2. 有條件地執行代碼的單個APK。

對於方法1,你可以在gradle/Android Studio中使用build flavors(我不認爲ADT支持這個)。基本上可以構建單個APK的多個版本,每個版本都選擇不同的源文件。然後,在Play商店中,您可以根據您的條件分發這些不同的文件。

對於方法2,你有幾種選擇:

  1. 資源,你可以provide different files取決於語言和地區(或MCC)。
  2. 對於代碼,getResources().getConfiguration().locale.getCountry()來獲得設備或TelephonyManager.getNetworkOperator()國的MCC