Java 将ProGuard与Android一起使用

Java 将ProGuard与Android一起使用,java,android,eclipse,obfuscation,proguard,Java,Android,Eclipse,Obfuscation,Proguard,我在处理ProGuard和Android方面有问题 我在网上搜索了几个小时,找到了多种方法来混淆Android应用程序。目前,我正在尝试一种看起来最简单的方法,因此: 我在项目的根目录中创建了一个config.cfg文件 我在我的project.properties中添加了proguard.config=config.cfg 我使用Eclipse导出向导导出并签署.apk文件 我收到一条消息说,Proguard返回了错误代码1。请参阅控制台和控制台中的: Proguard returned

我在处理ProGuard和Android方面有问题

我在网上搜索了几个小时,找到了多种方法来混淆Android应用程序。目前,我正在尝试一种看起来最简单的方法,因此:

  • 我在项目的根目录中创建了一个
    config.cfg
    文件
  • 我在我的
    project.properties中添加了
    proguard.config=config.cfg
  • 我使用Eclipse导出向导导出并签署.apk文件
我收到一条消息说,
Proguard返回了错误代码1。请参阅控制台
和控制台中的:

Proguard returned with error code 1. See console
Note: there were 3847 duplicate class definitions.
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
Warning: com.fasterxml.jackson.databind.ext.DOMSerializer: can't find referenced class org.w3c.dom.bootstrap.DOMImplementationRegistry
      You should check if you need to specify additional program jars.
Warning: there were 4 unresolved references to classes or interfaces.
         You may need to specify additional library jars (using '-libraryjars').
Error: Please correct the above warnings first.
即使我使用Proguard官方网站提供的配置或默认配置,我也有错误。
这是我的自定义配置(myProject/config.cfg):

-injars箱/类
-injars libs
-libraryjars“C:\Program Files\Android\Android sdk\Platform\Android-13\Android.jar”
-DontskipnonPublicLibraryClass
-优化过程5
-printmapping map.txt
-扁平封装层次结构
-不要翻转
-重新打包类“”
-允许访问修改
-优化!代码/简化/算术
-keepattributes*注释*
-keep public class*扩展android.app.Application
-keep public class*扩展android.app.Activity
-keep public class*扩展android.app.PreferenceActivity
-keep public class*扩展了android.view.view
-keep public class*扩展了android.widget.BaseAdapter
-keep public类*实现android.view.view.OnTouchListener
-keep public class*扩展了android.view.view{
public(android.content.Context);
public(android.content.Context、android.util.AttributeSet);
public(android.content.Context,android.util.AttributeSet,int);
公共无效集*(…);
}
-keepclassswithmembers类*{
public(android.content.Context、android.util.AttributeSet);
}
-keepclassswithmembers类*{
public(android.content.Context,android.util.AttributeSet,int);
}
-keepclassmembers类*扩展了android.content.Context{
public void*(android.view.view);
public void*(android.view.MenuItem);
}
-keepclassmembers类*实现android.os.Parcelable{
静态android.os.Parcelable$Creator;
}
-keepclassmembers类**.R$*{
公共静态;
}
我不能让它工作。。。任何想法都将不胜感激

注意:我使用存储在我的项目的
libs
文件夹中的Jackson JSON库

Android Ant/Eclipse构建已经为您指定了-injars/-libraryjars。如果在配置中再次指定它们,ProGuard会注意到它们是重复的。所以不要指定-injars/-libraryjars

(二)

输入代码中不存在org.w3c.dom.bootstrap.doImplementationRegistry,但com.fasterxml.jackson.databind.ext.DOMSerializer正在使用它。如果您的应用程序仍然有效,您可以通过以下方式让ProGuard接受:

-dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry

我也遇到了同样的问题,我通过引用JRE rt.jar文件解决了这个问题:

-libraryjars/lib/rt.jar


我希望它能帮助这里提供的ProGuard配置文件:


解决我的问题

谢谢你的帮助。编译/模糊处理可以正常工作,但当我点击按钮将我重定向到具有使用JSON库的对象的活动时,应用程序崩溃……对我来说也是……它没有抛出错误,但我的flexJson已停止working@miNde你找到这个问题的答案了吗?谢谢@eyyo没有看到你的评论。我记得不太清楚,但我可能忽略了警告,或者只是禁用了优化,这可能不是最好的主意。但是我需要一个快速的解决方案来为某人发布一个应用程序。这个配置文件没有指定injar和outjar。
-dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry