你好我正在編寫一個Android應用程序,我已經設置了Proguard來模糊我的應用程序。然而,我使用類加載器爲我的應用程序動態加載不同的擴展。問題是如果它們的名稱被改變,這些加載不會正確。我如何讓Proguard避免混淆特定的類名?Proguard保留類名?
回答
使用您proguard.cfg的-keepnames
選項
參見手冊中 https://www.guardsquare.com/en/proguard/manual/usage#keepoptions:
-keepnames
class_specification簡稱
-keep,allowshrinking
class_specification指定類和類成員,其如果名字不存在,名稱將被保留在萎縮階段沒有被取消。例如,您可能希望保留實現Serializable接口的類的所有類名,以便處理後的代碼與任何原始序列化的類保持兼容。完全不用的類仍然可以刪除。只有在混淆時才適用。
這樣可以使類名不變:
-keepnames class com.somepackage.*
方便的技巧爲大家誰不希望ProGuard的改變任何類名稱:
# please KEEP ALL THE NAMES
-keepnames class ** { *; }
這樣你會得到可讀的堆棧跟蹤同時仍然拋出你不需要的東西。 :-)
'''-dontobfuscate'''是禁用混淆的正確方法。 –
錯誤的方法。最好關閉這個配置的混淆:「-dontobfuscate/n -optimizations!code/allocation/variable」 – oxied
- 1. Proguard保留R類
- 2. Proguard keepclassmembers持續保留類
- 3. ProGuard保留類名稱,但更改包名稱
- 4. 在Proguard中保留帶註釋的類
- 5. 保留使用反射的類Android Proguard
- 6. ProGuard:保留私人內部分類
- 7. Proguard保留接口和抽象類的參數名稱
- 8. 在proguard中,如何保留一組類的方法名?
- 9. proguard的不保持匿名類
- 10. 如何從保留類標記proguard中排除特定類
- 11. 保留類名在Groovy
- 12. 保留類名的Visual C++
- 13. Proguard - 保留所有類和方法的名稱,但混淆字段
- 14. 保留只有功能名稱時混淆proguard
- 15. Proguard keepclasseswithmembers:會員不被保留?
- 16. Android Proguard保留一個文件夾
- 17. ProGuard的「保留」參數中的泛化
- 18. 爲什麼Proguard在Android中保留Activity類?
- 19. Java ProGuard。類保留(不要刪除),但允許被混淆
- 20. 從Proguard的保留規則中排除一些類
- 21. ProGuard - 如何正確使用Android?要保留哪些類和庫?
- 22. ProGuard的保留類成員與「未使用」註釋
- 23. Proguard將不會保留一個類成員的枚舉
- 24. Proguard保留所有實現某個接口的內部類
- 25. 儘管「保留名稱」,proguard並不會停止混淆方法名稱
- 26. ProGuard如何保持類實現子句(類簽名)
- 27. foreach:保留名稱
- 28. MySQL保留列名
- 29. sortBy保留鍵名
- 30. Proguard的犯規保留的行號和方法名稱在堆棧跟蹤
所以我輸入: -keepnames com.randompackage.lol.ClassName – Nik
好吧有沒有辦法做到這一點與整個包? – Nik
是的,你使用*通配符。即,-keepnames com.randompackage.lol。* 將保持所有類在lol –