我有一個proguard-rules.pro
文件爲app
模塊只包含以下內容的Android項目:我如何教導ProGuard擺脫一些它保持不被使用的東西?
# ProGuard rules
-dontobfuscate
-dontwarn android.arch.util.paging.CountedDataSource
-dontwarn android.arch.persistence.room.paging.LimitOffsetDataSource
我沒有任何保留自己。所有-keep
規則都來自其他內容,無論是由getDefaultProguardFile('proguard-android-optimize.txt')
提供的規則還是來自庫中包裝的規則。
但是,東西被保留,我不使用。如果我在我的release
版本上使用Android Studio APK分析器,而ProGuard刪除了許多被刪除的內容,但我還沒有引用其他很多內容。
例如:通過傳遞依賴關係,我有支持庫模塊,該應用程序的依賴關係樹中包含ViewPager
。但是,我沒有(目前)在此應用程序中使用ViewPager
。儘管如此,還是有一些東西導致它被保留下來,因爲APK Analyzer爲android.support.v4.view.ViewPager
顯示了107個已定義的方法,包括其構造函數。
我可以使用各種ProGuard選項來追蹤爲什麼這樣被保留。但是,這不是來自我的規則。沒有我自己的-keep
需要修復— -keep
來自其他人,大概是Google工程師。
那麼,我該如何擺脫ViewPager
?有沒有一種方法可以覆蓋導致其保留的-keep
規則(例如,使用allowshrinking
)?如果是這樣,那麼Android Studio調用的ProGuard如何確定哪一個規則獲勝?
「不可能重寫-keep規則;它們只會累積」 - * *將是一個有用的功能,儘管我可以理解哪些地方可能會有趣的實現。我沒有'build/intermediates/exploded-aar /',但我認爲你所指的規則在'build/intermediates/proguard-rules/release/aapt_rules.txt'中。現在我更好地理解爲什麼要保留'ViewPager'。非常感謝! – CommonsWare