配置引用未知类'String'

时间:2015-10-11 20:04:42

标签: java android android-studio proguard

我正在使用Android Studio和ProGuard插件。

当我构建我的版本时,我得到以下注释:

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

这是我的Gradle配置:

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

这意味着什么?

1 个答案:

答案 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的差异。

希望这会有所帮助。干杯