簡體   English   中英

我們可以縮小所有類,但只用混淆器混淆一些類嗎?

[英]Can we shrink all classes but only obfuscate some with proguard?

通常,使用 -keep 排除類可以防止類被混淆

然而,它也可以防止它被縮小。

是否可以定義一個 proguard-project.txt 來縮小所有類,除了那些用 -keep 排除的類,但也只混淆類的特定子集?

目的是使用 proguard 保持在 android 65k 方法限制以下,同時也僅在 APK 中混淆第一方代碼。

謝謝

是的,你可以添加修改allowshrinking-keep只應適用於模糊處理(優化)步驟的選項。 例如:

-keep,allowshrinking class com.example.SomeClass

如果指定的類在收縮步驟中未使用,則可以將其刪除,否則,其名稱將在混淆步驟中保留。

埃里克的回答很好,還有另一種方法。

首先,有以下簡寫:

-keep,allowshrinking

您可以使用:

-keepnames

您也可以使用相反的方法來做到這一點:

-keepnames class !com.example.apackage.** {*;}

因此,這將混淆apackage所有類,而不會混淆其他任何類,同時仍然允許對所有內容進行死代碼剝離。

另一個注意事項是,如果您打開了混淆,它將刪除所有元數據,如文件名和行號,這將破壞調試器和堆棧跟蹤。 如果你想讓它們工作,你可以添加這些行:

-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM