2011-02-28 106 views
6

我最近發現BlackBerry treats all classes with the same fully-qualified name as identical - 無論它們是否完全不同的應用程序或不是 - 導致使用不同版本的共享庫的應用程序在安裝在同一個手機上時中斷。在構建Bamboo之前更改軟件包名稱

爲了解決這個問題,我們正在計劃更改軟件包名稱以包含版本號,然後構建。有人能解釋如何使用竹,我可以插入我們的構建過程中的步驟是:

  • 改變某些包名稱
  • 替換爲新的包名引用舊包名稱的所有代碼引用?

回答

2

一個特別爲更改jar文件中Java類的完全限定名而完成的工具是jarjar。它可以在Ant中輕鬆使用,或者可以使用from a shell script

我從來沒有用過竹 - 我想,它也應該在那裏工作。當然,在這個環境中可能會有一些特殊的限制(關於字節碼操作),我不知道(?)

+0

Drat,看起來非常酷,我不確定它會在我們的具體情況下工作。它看起來像jarjar替換了jar任務,但我們不使用jar來構建 - BlackBerry有自己的ant任務rapc來處理編譯。你知道是否有可能使用jarjar *只做*包重命名步驟? – 2011-03-04 21:30:55

+0

@Amanda:我做了一個快速的谷歌搜索rapc(我對此一無所知)。看起來,它也可以用於jar文件:http://codeforfun.wordpress.com/2008/09/09/how-to-use-rapc-from-rim-dirty-details/「最後參數應該指定包含已編譯類的jar文件,或者指定要編譯的.java文件的列表。「如果這樣的話,你可以先將你的類放入jar中,然後應用jarjar,然後在jar上運行rapc。 – 2011-03-04 21:43:08

2

我對Bamboo並不熟悉,也沒有包含關於構建系統的更多信息。如果您正在使用Maven,你可以使用shade plugin

此插件提供的能力打包神器在尤伯杯罐子,包括它的依賴和遮陽 - 即重命名 - 一些依賴的包。

second example here顯示如何配置程序包重命名。生成的jar文件將不得不由rapc進行處理,如Chris Lerchers評論his answer。應該也可以使用exec plugin將其集成到maven版本中。

相關問題