2015-10-11 16 views
0

我正在使用Android Studio和ProGuard插件。配置引用未知类'String'

当我建立我的版本,我得到了以下注释:

Note: the configuration refers to the unknown class 'String' 
    Maybe you meant the fully qualified name 'java.lang.String'? 

这里是我的摇篮配置:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 
      'proguard-rules.pro', 'proguard-guava.pro' 

这里是proguard-rules.pro:

-dontnote org.apache.http.conn.scheme.HostNameResolver 
-dontnote org.apache.http.conn.** 
-dontnote org.apache.http.params.** 
-dontnote android.net.http.** 

-dontnote **ILicensingService 
-dontnote com.android.vending.billing.IInAppBillingService 

这里是proguard-guava.pro:

-keep class com.google.common.io.Resources { 
    public static <methods>; 
} 
-keep class com.google.common.collect.Lists { 
    public static ** reverse(**); 
} 
-keep class com.google.common.base.Charsets { 
    public static <fields>; 
} 

-keep class com.google.common.base.Joiner { 
    public static Joiner on(String); 
    public ** join(...); 
} 

-keep class com.google.common.collect.MapMakerInternalMap$ReferenceEntry 
-keep class com.google.common.cache.LocalCache$ReferenceEntry 

-dontwarn sun.misc.Unsafe 
-dontwarn com.google.common.collect.MinMaxPriorityQueue 

这是什么意思?

+0

难道你的ProGuard正在吐出来吗? –

+0

是的,它来自Proguard! – confile

+0

然后粘贴您的程序文件 –

回答

1

在你proguard-guava.pro文件,尝试改变这一点:

-keep class com.google.common.base.Joiner { 
    public static Joiner on(String); 
    public ** join(...); 
} 

这样:

-keep class com.google.common.base.Joiner { 
    public static Joiner on(java.lang.String); 
    public ** join(...); 
} 

通知java.lang.String差异。

希望这会有所帮助。欢呼声

+0

顺便说一下,这是对ProGuard使用Guava规则的正确方法吗? – confile

+0

对我来说看起来不错。您可以将该文件中的所有内容放入另一个内容中,以便压缩内容。但它不是必需的 –

+0

你也有这个想法:''注意:android.support.v4.app.NotificationCompatJellybean调用'Field.getType''' – confile

相关问题