忽略了Android ProGuard的外部库 [英] Ignore external libraries with Android proguard

查看:742
本文介绍了忽略了Android ProGuard的外部库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用Proguard的主要表现为混淆的原因。

我有ProGuard的Andr​​oid中的一个问题。我用simpleframework解析XML;其外部。

在ProGuard的CFG:

  -keepattributes *注释*,EnclosingMethod
    -keep公共类org.simpleframework ** {*。 }
    -keep公共类org.simpleframework.xml ** {*。 }
    -keep公共类org.simpleframework.xml.core ** {*。 }
    -keep公共类org.simpleframework.xml.util ** {*。 }
    -keep公共类org.simpleframework.xml.stream ** {*。 }
    -keep公共类的javax ** {*。 }
    -keep公共类javax.xml.stream中** {*。 }

    -keep公共类org.simpleframework。** {
      公共无效套*(***);
      公开***得到*();
    }
 

错误:

 警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLInputFactory
警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLInputFactory
警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLInputFactory
警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLInputFactory
警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLInputFactory
警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamProvider:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.XMLEventReader
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $项:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $项:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $项:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $项:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $项:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $项:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.Location
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.StartElement
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.StartElement
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.Location
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.StartElement
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.StartElement
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.Location
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $开始:找不到引用的类javax.xml.stream.events.Attribute
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.Characters
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.Characters
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.Characters
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.XMLEvent
警告:org.simpleframework.xml.stream.StreamReader $文字:找不到引用的类javax.xml.stream.events.XMLEvent
 

我不知道如何解决这个问题。路径摇篮CFG就可以了。

在摇篮:

  buildTypes {
        推出  {
            runProguard真
            proguardFile文件(proguard.txt)
            signingConfig signingConfigs.release
        }
    }
 

解决方案

这ProGuard的配置帮我:<一href="http://stackoverflow.com/questions/12163250/proguard-obfuscation-is-breaking-simplexml/14458048#14458048">Proguard模糊处理是打破了SimpleXML

 #下面这行可能会有所不同
-libraryjars&LT; java.home&GT; /lib/rt.jar(Java / **,使用javax / **)

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dont preverify
-verbose
#(3)不删除未使用的code
-dontshrink

-optimizations!code /简/算术,!现场/ * ,!类/合并/ *

-keep公共类*扩展android.app.Activity
-keep公共类*扩展android.app.Application
-keep公共类*扩展android.app.Service
-keep公共类*扩展android.content.BroadcastReceiver
-keep公共类*扩展android.content.ContentProvider
-keep公共类*扩展android.app.backup.BackupAgentHelper
-keep公共类*扩展的Andr​​oid。preference。preference
-keep公共类com.android.vending.licensing.ILicensingService
#(2)简单的XML
-keep公共类org.simpleframework ** {*。 }
-keep类org.simpleframework.xml ** {*。 }
-keep类org.simpleframework.xml.core ** {*。 }
-keep类org.simpleframework.xml.util ** {*。 }
#(1)批注和签名
-keepattributes *注释*
-keepattributes签名

-keepclasseswithmembernames类* {
    天然的LT;方法&gt ;;
}

-keepclasseswithmembers类* {
    公共和LT; INIT&GT;(android.content.Context,android.util.AttributeSet);
}

-keepclasseswithmembers类* {
    公共和LT; INIT&GT;(android.content.Context,android.util.AttributeSet,INT);
}

-keepclassmembers类*扩展android.app.Activity {
   公共无效*(android.view.View);
}

-keepclassmembers枚举* {
    公共静态** []值();
    公共静态**的valueOf(java.lang.String中);
}

-keep类*实现android.os.Parcelable {
  公共静态最终android.os.Parcelable $造物主*;
}
 

I want to use Proguard mainly for obfuscation reasons.

I have a problem with proguard in Android. I used simpleframework to parse XML; its external.

In proguard cfg:

    -keepattributes *Annotation*,EnclosingMethod    
    -keep public class org.simpleframework.**{ *; }
    -keep public class org.simpleframework.xml.**{ *; }
    -keep public class org.simpleframework.xml.core.**{ *; }
    -keep public class org.simpleframework.xml.util.**{ *; }
    -keep public class org.simpleframework.xml.stream.**{ *; }
    -keep public class javax.** { *; }
    -keep public class javax.xml.stream.**{ *; }

    -keep public class org.simpleframework.** {
      public void set*(***);
      public *** get*();
    }

error:

Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLInputFactory
Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLInputFactory
Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLInputFactory
Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLInputFactory
Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLInputFactory
Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamProvider: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.XMLEventReader
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Entry: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Entry: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Entry: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Entry: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Entry: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Entry: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.Location
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.StartElement
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.StartElement
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.Location
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.StartElement
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.StartElement
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.Location
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Start: can't find referenced class javax.xml.stream.events.Attribute
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.Characters
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.Characters
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.Characters
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.XMLEvent
Warning: org.simpleframework.xml.stream.StreamReader$Text: can't find referenced class javax.xml.stream.events.XMLEvent

I have no idea how to fix this problem. Path to gradle cfg is OK.

in gradle:

    buildTypes {
        release  {
            runProguard true
            proguardFile file('proguard.txt')
            signingConfig signingConfigs.release
        }
    }

解决方案

This proguard configuration help me: Proguard obfuscation is breaking simplexml

# The following line may be different
-libraryjars <java.home>/lib/rt.jar(java/**,javax/**)

-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
# (3)Not remove unused code
-dontshrink

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
# (2)Simple XML
-keep public class org.simpleframework.**{ *; } 
-keep class org.simpleframework.xml.**{ *; } 
-keep class org.simpleframework.xml.core.**{ *; } 
-keep class org.simpleframework.xml.util.**{ *; }
# (1)Annotations and signatures
-keepattributes *Annotation*
-keepattributes Signature

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

这篇关于忽略了Android ProGuard的外部库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆