2014-07-17 47 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 
相关问题