2013-03-04 145 views
4

有沒有辦法從shell中將Eclipse命令「Android Tools - > Rename Application Package」作爲腳本執行?Android:在Eclipse中重命名包

我想用不同的選項(例如免費和付費版本)多次編譯我的Android應用程序,而無需手動執行某些操作。 自動執行此操作非常重要。所有像庫這樣的解決方案都無濟於事,因爲有幾件事情必須手工完成。

+0

我不認爲這是可能的,最快的方法是使用鍵盤快捷鍵(cmd +選項+ R在操作系統x) – vault 2013-03-04 16:45:48

+0

好問題,這將是非常方便。儘管如此,我發現UI工具不到100%完美,所以我不確定我是否會將它用作自動構建的一部分。 – 2013-03-04 16:46:27

+0

「像庫這樣的所有解決方案都無濟於事,因爲有幾件事情必須手工完成」 - 這些「幾件事情」是什麼? – CommonsWare 2013-03-04 16:47:43

回答

1

是的,這是可能的。您必須手動調用aapt工具來打包已編譯的項目,然後再次調用aapt以添加類,請使用jarsigner對其進行簽名,並將其與zipalign對齊。通常,Eclipse ADT插件會爲您製作構建步驟鏈。

這些步驟的示例調用如下。

  1. 包裝用不同的包名的應用程序:

    aapt package -f -M ./AndroidManifest.xml -S res/ \ 
        -I android.jar -F renamed_project.apk.unaligned \ 
        --rename-manifest-package "com.example.some_new_package" -v 
    
  2. 然後添加類:

    aapt add -f renamed_project.apk.unaligned classes.dex -v 
    
  3. 簽名:

    jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 \ 
        -keystore "some_keystore_file" \ 
        renamed_project.apk.unaligned "key_name" 
    
  4. 對齊它:

    zipalign -v 4 renamed_project.apk.unaligned renamed_project.apk 
    

一些更多的信息可以例如here找到。

此外,您可以使用Ant更輕鬆地完成此操作。 Here你可以找到更多的信息。

+0

對不起,但這不是解決方案。重命名並添加classes.dex(步驟1 + 2)後,應用程序的大小比以前減少了一半。在模擬器上安裝會引發「Failure [INSTALL_FAILED_DEXOPT]」錯誤。 – Marcel 2013-03-06 14:24:30

+0

我只寫了一個示例包裝。您的構建可能需要爲呼叫添加更多參數,例如項目庫。 – Tomik 2013-03-06 16:37:13