我的Android項目和我的Java應用程序服務器項目中有一些共享代碼。在服務器項目中,我忽略了一些toString()
日誌記錄方法,這在Android項目中並不需要。然後,我使用ProGuard優化了我的Android項目中的代碼。但是當我反編譯生成的APK的classes.dex,toString()
方法仍然存在。如果我不刪除它,它可能仍然是一個易於逆向工程的缺陷。
我試過-assumenosideeffects
選項,但它不起作用。有沒有辦法通過編輯ProGuard配置或Android項目配置來刪除這些toString()
方法?如何使用Proguard或其他工具刪除未使用的重寫的toString()方法?
0
A
回答
0
編號Proguard不會刪除引用它的代碼。
您最好的選擇是「強制」編譯器刪除行: 使用BuildConfig.DEBUG或自定義常量並將調用包裝在其中。
如果編譯器找到一個計算結果爲false的常量表達式,它可能會刪除嵌套代碼。
1
沒有簡單的使用檢測,任何Object.toString都可以調用你的類的toString。
馬克每個照明toString
用自己的編譯時註釋,像
@DevelopOnly
@Override
public String toString() { ...
,然後使用註解處理器(APT),以去除方法。 有很多很好的例子。
收集AbstractProcessor中的類並使用ASM或另一個庫刪除方法。
相關問題
- 1. 如何使用ProGuard刪除方法
- 2. 如何使用記事本++或其他工具刪除重複的塊?
- 3. 使用str_replace或其他手工刪除
- 4. Proguard的設置不刪除未使用的方法
- 5. 使用jQuery或任何其他方法刪除樣式
- 6. Proguard將抽象類中的重寫方法移除爲未使用
- 7. 使用BASH或awk或sed或其他方法刪除文件的前兩行
- 8. 如何在Java中使用其他方法刪除對象?
- 9. 如何刪除的方法有回調或以其他方式
- 10. 使用的toString從其它方法
- 11. 使用sed或其他bash工具刪除字符串末尾的圖案
- 12. 如何從Arraylist中刪除元素而不使用clear()或其他方法?
- 13. 使用Proguard刪除Google Play Services庫中未使用的類
- 14. 如何使用其他類的方法?
- 15. 數據未到達重寫ToString()方法
- 16. 如何刪除?action =使用url重寫?
- 17. 刪除重複的使用方法
- 18. 啓用proguard只用於刪除未使用的代碼
- 19. Visual Studio自動刪除未引用的方法的工具
- 20. 從其他類的toString調用toString方法。不重新創建值
- 21. 重寫NHibernate使用的POCO的ToString()
- 22. 如何使用lambdaj或其他工具過濾表格
- 23. 如何使用clang或其他工具生成數據流圖?
- 24. 使用wireshark或其他工具繪製RTT直方圖
- 25. 使用額外參數重寫django model.py的刪除方法
- 26. 的java的ProGuard刪除(收縮)未使用的類
- 27. 如何在編譯時刪除未使用的protobuf方法
- 28. 如何使用javascript或其他方式清除IE DNS緩存?
- 29. 如何編寫toString()方法
- 30. 如何在Java中使用toString方法?
該代碼由web和Android共享,構建代碼時沒有'BuildConfig.DEBUG'可用。你也不能在方法周圍放置一個'if',只能放置內容。這就是說,一個'super.toString()'調用對於逆向工程來說不是什麼問題。 – TWiStErRob
是的,這就是爲什麼我說「或一個自定義」常量,是的:你不能包裝一個方法在一個if,因此我說「調用」就像'如果(INDEBUG)日誌(myObj.toString())' –