2013-03-06 63 views
7

我希望能夠同時構建和安裝我的應用程序的多個版本,針對不同的環境,例如開發,暫存和當然還有生產環境。針對不同環境的不同Android版本

AndroidManifest.xml中的軟件包名稱似乎是此處的主要障礙,因爲它是唯一標識該應用的唯一標識。我認爲可以簡單地在com.mydomain.prodcom.mydomain.stagingcom.mydomain.dev之間切換或者某種類似的約定,但到目前爲止,我還沒有想到可以使用適用於此方法的包結構。

我可以用什麼策略儘可能地減輕痛苦?

+0

AndroidManif中的包字段est.xml只是Google Play使用的唯一標識符,不需要與您的Java源代碼包結構相同。 – yorkw 2013-03-06 03:39:10

+0

這不可能是真的,可以嗎?如果我改變它,gen文件夾會發生變化,並且我會得到大量「R無法解析爲變量」的錯誤。有沒有辦法避免這種情況? – 2013-03-06 03:43:33

+0

文檔:軟件包名稱用作應用程序的唯一標識符。它也是應用程序進程的默認名稱(請參閱元素的進程進程屬性)和活動的默認任務關係(請參閱元素的taskAffinity屬性)。 – 2013-03-06 03:50:09

回答

0

我建議您使用'ant'構建工具來指定'regexp'任務,它可以用來替換某些文件中的文本(即根據正確的構建目標替換清單文件中的應用程序包名) 。你也可以爲每個構建目標定義不同的屬性文件(例如'build_development.properties'來保存所有參數來構建你的產品以進行開發環境。)...希望這有幫助..

4

使用Gradle,你可以指定不同的「風味」你的應用程序。這是在您的build.gradle完成:

android { 
    // … 

    defaultConfig { 
     // … 
    } 

    productFlavors { 
     prod 
      applicationId "com.mydomain.prod" 
     } 

     staging { 
      applicationId "com.mydomain.staging" 
     } 

     dev { 
      applicationId "com.mydomain.dev" 
      versionCode 2 
     } 
    } 
} 

每種風格屬性從defaultConfig繼承。現在

,在src目錄中的應用程序,你可以在它創建具有特定風味的代碼/資源目錄:

app/ 
|-- src/ 
    |-- main/ 
    |-- prod/ 
    |-- staging/ 
    |-- dev/ 

這些鏈接可能是有用的:

相關問題