今天在使用Proguard keep一个 静态内部类的时候,混淆完之后一直找不到那个静态内部类,内心抓狂啊。

最后在stackoverflow上找到了答案:

**[html]** [view plain](http://blog.csdn.net/top_code/article/details/18225501#)[copy](http://blog.csdn.net/top_code/article/details/18225501#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/154763)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/154763/fork)
  <div>
    <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_1">
    </embed>
  </div>
</div>
- -keepattributes Exceptions,InnerClasses,&#8230;

- -keep class [packagename].A{

- *;

- }

- -keep class [packagename].A$* {

- *;

- }

 

其中 A$* 表示所有A的内部类都保留下来,也可以如下使用:

**[html]** [view plain](http://blog.csdn.net/top_code/article/details/18225501#)[copy](http://blog.csdn.net/top_code/article/details/18225501#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/154763)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/154763/fork)
  <div>
    <embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_2">
    </embed>
  </div>
</div>
- -keepattributes Exceptions,InnerClasses,&#8230;

- -keep class com.xxx.A{ *; }

- -keep class com.xxx.A$B { *; }

- -keep class com.xxx.A$C { *; }

 

这样可以根据需要只保留A的某一个内部类

以下是proguard文件一部分

**[html]** [view plain](http://blog.csdn.net/top_code/article/details/18225501#)[copy](http://blog.csdn.net/top_code/article/details/18225501#)[![在CODE上查看代码片](https://code.csdn.net/assets/CODE_ico.png)](https://code.csdn.net/snippets/154763)[![派生到我的代码片](https://code.csdn.net/assets/ico_fork.svg)](https://code.csdn.net/snippets/154763/fork)
  <div>
    <embed id="ZeroClipboardMovie_3" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" type="application/x-shockwave-flash" width="18" height="18" align="middle" name="ZeroClipboardMovie_3">
    </embed>
  </div>
</div>
- #-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

- -keepattributes Exceptions,InnerClasses,&#8230;

- -keep class com.yulore.reverselookup.api.YuloreWindowConfiguration{ *; }

- -keep class com.yulore.reverselookup.api.YuloreWindowConfiguration$Builder{ *; }

 

注意:第一行和第二行都可以解决问题

转自:http://blog.csdn.net/top_code/article/details/18225501

 

💬 评论