2014-07-17 62 views
3

通常情況下,排除具有-keep的類可防止類被模糊化我們可以縮小所有類,但只能用proguard模糊一些類嗎?

但是,它也可以防止它被縮小。

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

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

感謝

回答

3

是的,你可以添加修改allowshrinking到應只適用於混淆(和優化)的步驟-keep選項。例如:

-keep,allowshrinking class com.example.SomeClass 

指定的類,如果它出現在收縮步驟中未使用的可以去除,但除此之外,它的名字將在混淆步驟中保存。

1

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

首先是簡寫:

-keep,allowshrinking 

您可以使用:

-keepnames 

您還可以使用逆它:

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

因此,這將混淆所有apackage內部的類並沒有其他任何東西,但仍然允許在所有內容上剝離死代碼。

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

-renamesourcefileattribute SourceFile 
-keepattributes SourceFile,LineNumberTable 
相關問題