2012-11-02 61 views
4

我有一個android項目,我需要創建多個apks。每個apk之間的唯一區別是包名(例如com.my.package.name)和應用程序字符串名,以便我可以在一臺設備上安裝該應用程序的多個實例。有沒有更好的方法來做到這一點?我想過創建一個圖書館項目,但我認爲這樣做可能更簡單。如何從一個項目創建多個apks?

回答

0

我實際使用apktool反編譯APK,然後編輯使用一些Perl腳本的smali文件更改軟件包名稱。

+0

嗨!我想知道我應該編輯哪些文件,如果我想從相同的源碼(測試版)製作不同的APK。我不能重命名包名,因爲我使用了guice,它變得瘋狂:\ – Karoly

0

您無法以編程方式更改包名稱。所以唯一的解決方案是手動更改並創建apk

1

庫項目是這樣做的正確方法。您創建並處理庫項目併爲每個版本創建一個項目,這取決於庫項目。請記住,您需要爲每個項目準備一個正確的Androidmanifest。

+0

所以,如果我做的庫項目的Ant構建它自動生成APK爲其他依賴項目? – squistbe

+0

您可以爲所有項目創建單個ant構建,但我不知道可能會自動爲您執行此「反向依賴構建」的工具。然而,這些項目的構建會非常相似,所以這不會造成很多額外的工作。 – stoilkov

+0

對於每個項目都有正確的Androidmanifest,你的意思是什麼? – squistbe

0

要改變,你可以做到這一點的包名:

你需要複製的項目。右鍵單擊其中一個,選擇「Android工具 - >重命名應用程序包」

希望得到這個幫助。

+0

我已經在eclipse中完成了這項工作。我寧願做一些事情來自動化它,而不是改變包名30次不同的時間,然後建立另一個apk。 – squistbe

1

你可以在app級別的gradle中使用productFlavors。

flavorDimensions "tier" 
    productFlavors { 

     dev 
       { 
        dimension "tier" 
        buildConfigField "String", "URL", "\"http://glapp/demo.php\"" 
        buildConfigField "boolean", "ENABLE_DEBUG", "false" 
        versionName = android.defaultConfig.versionName + " dev" 
        applicationId = "com.abc.glnewapp.dev" 
        resValue "string", "app_name", "GL Demo" 
       } 
     prod 
       { 
        dimension "tier" 
        buildConfigField "String", "URL", "\"http://glapp/live.php\"" 
        buildConfigField "boolean", "ENABLE_DEBUG", "false" 
        applicationId = "com.abc.glnewapp.prod" 
        resValue "string", "app_name", "GL Live" 
       } 

    } 

然後選擇構建變量建立APK按照爲變體光盤 你可以把你想要的許多面粉(不同的APK)。

enter image description here

您可以通過src目錄下falour名稱的文件夾添加相同的資源結構發生變化的應用程序圖標和其他可繪製。此外,如果你找到相關的谷歌JSON任何問題,那麼就在SRC-> productflavour

複製谷歌JSON文件欲瞭解更多信息請訪問at