混淆後我的jar文件的集合與菱形圖案的依賴關係:如何留住JAR依賴使用ProGuard
base.jar
/ \
dep1.jar dep2.jar
\ /
dep3.jar
我想使用ProGuard混淆他們保留自己的依賴關係,因此,例如,base.jar的模糊版本和dep2.jar可以獨立執行,不需要dep1.jar和dep3.jar的混淆版本(就像它們可以,未混淆一樣)。在具有相同包名的罐子中分佈有類,並且依賴罐中的方法調用方法(在各種類中),我想在它們所依賴的罐子中對其進行模糊處理。
當我試圖一次模糊所有瓶子時,ProGuard並不「理解」它們的依賴;並從base.jar中的類採取靜態方法,並將其移至dep1.jar中的混淆類。如果dep1.jar不在類路徑中,代碼位於dep2.jar的模糊版本中,「期望」base.jar中的方法在運行時失敗。
我該如何確保混淆瓶子中的依賴關係得以保留?
文檔建議使用incremental obfuscation但-applymapping
開關似乎需要只能拿一個參數告訴依賴方法混淆的名稱在調用到它們依賴於罐子使用,這會首先混淆。 dep1.jar的混淆可以產生一個這樣的映射文件參數,而dep2.jar的混淆可以產生另一個,但dep3.jar的混淆需要這些映射文件(加上base.jar?)在其-applymapping
論據。然而,dep1.jar和dep2.jar不能混淆在一起(,或者他們可以?),因爲代碼可能會從一個映射文件重新定位到另一個映射文件。 我必須自己合併映射文件嗎?
謝謝!這似乎奏效了。 – lefty