【发布时间】:2022-11-04 08:29:06
【问题描述】:
okhttp:3.12.13 中的此代码可与 minifyEnabled false 一起正常工作
private static boolean supportsAlpn() {
if (Security.getProvider("GMSCore_OpenSSL") != null) {
return true;
} else {
try {
Class.forName("android.net.Network"); //NoClassDefFoundError here if minifyEnabled true
return true;
} catch (ClassNotFoundException ignored) { }
}
return false;
}
但使用minifyEnabled true 在Android 4.1.2 上会出现以下错误
Caused by: java.lang.ExceptionInInitializerError
at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:292)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:258)
at okhttp3.OkHttpClient.<init>(OkHttpClient.java:231)
Caused by: java.lang.ExceptionInInitializerError
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:217)
at java.lang.Class.forName(Class.java:172)
at okhttp3.internal.platform.AndroidPlatform.supportsAlpn(AndroidPlatform.java:219)
at okhttp3.internal.platform.AndroidPlatform.buildIfSupported(AndroidPlatform.java:262)
at okhttp3.internal.platform.Platform.findAndroidPlatform(Platform.java:246)
at okhttp3.internal.platform.Platform.findPlatform(Platform.java:202)
at okhttp3.internal.platform.Platform.<clinit>(Platform.java:78)
Caused by: java.lang.NoClassDefFoundError
at android.net.Network.<clinit>(Unknown Source)
应该在Proguard 中添加哪些行以避免崩溃?
These rules 工作,但 apk 大小增加了 0.6 MB。
-keepattributes Signature
-keepattributes *Annotation*
-keep class okhttp3.** { *; }
-keep interface okhttp3.** { *; }
-dontwarn okhttp3.**
我想知道是否可以在不将所有 okhttp3 类保留在 apk 中的情况下解决此问题。
【问题讨论】: