SDK升级到r_16后,混淆程序又出现问题了.找到解决办法.

怎么升级SDK和ADT会遇到这么多的问题,续jar包出现问题后,又到混淆出现问题了.

以下是在网络上找到的解决办法,经验证有效。

        编译与反编译,一对相辅相成的矛盾。反编译有时候会和不光彩的事情联系在一起,以致于编译者常常费劲心思,加大反编译的难度,比如采用混淆代码等方式。ProGuard正是这么一个工具:

The ProGuard tool shrinks, optimizes, and obfuscates your code by removing unused code and renaming classes, fields, and methods with semantically obscure name.

Android SDK整合了ProGuard,并在文档中用了一个章节来描述如何使用它。依照文档来实施,多半没有问题,不过在使用中有时候遇到了一些问题:(就是提示一些包找不到)

 

依照以往的惯例,发生warning,可忽视之,只有看到error,才会小紧张一把。不过这次的warning导致了BUILD FAILED,这回问题大了。

按照提示,在proguard.cfg里,加入-dontskipnonpubliclibraryclasses,再试,还是有问题。

那就到官网找找答案吧,Manual -> Troubleshooting -> “Warning: can’t find referenced class”,找到这么一句话:try your luck with the -ignorewarnings option, or even the -dontwarn option.再对比日志信息,发现:

[proguard] Warning: net.poemcode.Digest: can’t find referenced class org.apache.CastleProvider

打开proguard.cfg,加入-dontwarn net.poemcode.**,在打包一次。'

 

附件是default.properties和proguard.cfg 文件

posted @ 2011-12-30 20:51  S.Kei.Cheung  阅读(342)  评论(0编辑  收藏  举报