本帖最后由 birdsaction 于 2014-08-26 16:50:48 编辑

解决方案 »

  1.   

    导入lib文件,并且用-dontwarn  和  keep class结合试试,例如:-libraryjars libs/log4j.jar-dontwarn    org.apache.log4j.*-keep class  org.apache.log4j.** { *;}将-dontwarn和-keep 结合使用,意思是保持包里面的所有类和所有方法而不混淆,接着还叫ProGuard不要警告找不到这个包里面的类的相关引用。
      

  2.   

    JNI部分, Java和JNI层关联的类名和方法名是不能混淆的, 混淆以后就找不到的方法了。例子
    -keep public class com.xxxx.xxxxx.xxxxx{
    public protected <methods>;
    }如果有用到gson, 需要添加以下代码
    -keep class sun.misc.Unsafe { *; }
    -keep class com.google.gson.examples.android.model.** { *; }用到jar包, 则添加
    -ignorewarnings
    -libraryjars libs/xxxxx.jar  (修改成对应的jar包名字)如果用到第三方lib项目,由于第三方的项目一般都是开源的, 都不混淆的了
    -keep public class com.actionbarsherlock.** { *; }以上内容都是配置在 proguard-project.txt (名字可以修改)里,
    然后在project.properties里面引用 
    proguard.config=proguard-project.txt
      

  3.   

    把不该混淆的代码混淆了导致方法找不到了吧?actionbarsherlock?try-keep class android.support.v4.app.** { *; }
    -keep interface android.support.v4.app.** { *; }
    -keep class com.actionbarsherlock.** { *; }
    -keep interface com.actionbarsherlock.** { *; }-keepattributes *Annotation*