通常,使用-keep排除类会阻止类被混淆
然而,它也可以防止它缩小。
是否可以定义一个proguard-project.txt,它将缩小除-keep之外的所有类,但是只对这些类的特定子集进行模糊处理?
目的是使用proguard保持低于android 65k方法限制,同时也只是在APK中混淆第一方代码。
由于
答案 0 :(得分:3)
是的,您可以将修饰符allowshrinking
添加到仅应用于混淆(和优化)步骤的-keep
选项中。例如:
-keep,allowshrinking class com.example.SomeClass
如果指定的类在收缩步骤中看似未使用,则可以将其删除,否则,其名称将在混淆步骤中保留。
答案 1 :(得分:1)
Eric的回答很好,还有另一种方式。
首先,有简写:
-keep,allowshrinking
您可以使用:
-keepnames
您也可以使用反向来执行此操作:
-keepnames class !com.example.apackage.** {*;}
所以这会混淆apackage
内的所有类,而不是其他任何东西,同时仍允许死代码剥离所有内容。
另一个注意事项是,如果打开了模糊处理,它将删除所有元数据,如文件名和行号,这将破坏调试器和堆栈跟踪。如果您希望它们工作,您可以添加以下行:
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable