Android 程式設計下如何修改 jar 檔案的包名

sunzn發表於2014-12-16

首先我們要說說為什麼要修改 jar 檔案的包名,jar 包我們會非常高頻率的使用,尤其是用一些其他三方庫的時候,往往把 java 程式碼打包成 jar 檔案,方便專案依賴使用。筆者在開發過程中遇到過一些問題,是由於 jar 檔案裡面的包名和專案或者執行時環境的引用檔案包名上存在衝突導致的,這時候我們修改 jar 檔案的包名是一個比較快速有效的解決辦法。舉兩個例子,是筆者親身經歷的兩個情況。

  • Gson庫:這個相信很多人都在使用,但是直接匯入 gson 的 jar 包,在 HTC Desire HD 這款手機上會丟擲異常(TypeNotFoundException)
  • Jackson庫:這也是個 json 解析的,我們在做蘋果推送後臺的時候,後臺用 java 寫的,使用 java-apns 庫,依賴於 Jackson,然後執行就會丟擲異常,具體原因沒有查,初步懷疑包名衝突,修改之後就解決的。

下面介紹如何修改jar檔案的包名,需要用到一個小工具,叫做 jarjar.jar

這裡我們以 gson.jar 為例,在 gson.jar 包目錄下新建一個文字檔案,名字隨意,例如 rule.txt,寫入下面的內容。

rule com.google.gson.** com.google.mygson.@1

上面寫的就是修改規則,我們將包名中的 gson 修改為 mygson。開啟命令列,輸入如下命令。

java -jar jarjar.jar process rule.txt gson.jar mygson.jar

命令執行完畢,同目錄下會多出一下 mygson.jar,這個就是修改包名之後的 jar 檔案,我們專案匯入這個 jar 包使用即可。

相關文章