有時候我們根據一些場景 需要替換第三方jar包的包名,比如Android廣告平台sdk,更換他們jar包包名的話,可以防止市場檢測到有廣告插件,所以,今天就介紹一下如何使用jarjar.jar工具來替換jar包的包名
一、首先下載jarjar.jar工具
地址在:https://code.google.com/p/jarjar/
二、下載完以后,使用cmd命令--打開到它所在的目錄,它有三個命令:
(1)java –jar jarjar.jar 查看幫助信息的
(2)java –jar jarjar.jar strings <cp> 這個是查看jar包里面所有包名的。
例如:拿多盟廣告的jar包為例,使用命令如下:
java -jar jarjar.jar strings domob_android_sdk.jar
(3)更換包名的命令為:
java -jar jarjar.jar process <rulesFile> <inJar> <outJar>
注意事項:這里面有一個重要的東西是rulesFile,就是定義一個替換規則。injar就是指要替換的jar包,outjar就是替換完要輸出的jar包
rulesFile直接用.txt文檔寫就行,
rulesFile有三種指令,分別如下:
1. rule用來取代Package的名稱。
rule pattern result
2.zap用來移除符合名稱的Package。
zap pattern
3.keep只會保留符合的Package的名稱,其他的則會刪除。如果和zap一起使用,將會在zap執行完之后才執行。
keep pattern
備注: pattern為要比對的字串,可以使用「*」和「**」來表示任意的Package名稱。「*」可以代表一層的Package,「**」可以代表多層的Package。
result為要取代成的字串,可以使用「@1」、「@2」這類的符號表示要使用第幾個pattern的「*」或「**」所代表的字串。
如果要將Jar包內的「cn.domob」名稱全都替換成「com.google」,可以編寫以下的rulesFile:
rule cn.domob.** com.google.@1
三、正式替換包名
命令為(我所有的jar包放到同一個目錄下了,所以可以使用 ./ ):
java -jar jarjar.jar process ./rule.txt domob_android_sdk.jar ./google.jar
已經ok。