配置引用未知 class 'String'

the configuration refers to the unknown class 'String'

我正在使用 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

这是混淆器-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

这是什么意思?

在您的 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 的区别。

希望这对您有所帮助。干杯