二十五、爬取毛豆新車的數據
1036
2025-04-01
今天碰到一個問題,Maven混淆過的包發送給客戶,然后客戶發現里面的 com.a.a.a 的類和另一個 SDK 重名了,手動修改 jar 的包名顯然很不現實,因為不知道還有其它哪些地方也引用了該類,這時就輪到 jarjar.jar 出場了。
轉自 https://www.cnblogs.com/yejiurui/p/4283505.html
有時候我們根據一些場景 需要替換第三方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
例如:拿多盟廣告的jar包為例,使用命令如下:
java -jar jarjar.jar strings domob_Android_sdk.jar
(3)更換包名的命令為:##
java -jar jarjar.jar process
###注意事項###
這里面有一個重要的東西是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
JAR
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。