Android 生成Release版本时,混淆问题的解决

今天在生成release版本的apk时,出现了编译失败,百度以后,发现是混淆配置出现错误

Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class Warning:com.squareup.picasso.OkHttpDownloader: can't find referenced class com.squareup.okhttp.Request
.........
Warning:okio.Okio: can't find referenced class java.nio.file.Files Warning:okio.Okio: can't find referenced class java.nio.file.Path
.........
Warning:rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef: can't find referenced class sun.misc.Unsafe Warning:rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef: can't find referenced

从上面的log中可以看到有三个包配置不正确,第一个是okhttp,第二个是okio,第三个是rx,打开app下proguard-rules.pro,配置如下内容,便可以编译成功。

okhttp

# okhttp
-keepattributes SourceFile,LineNumberTable -keep class com.parse.*{ *; } -dontwarn com.parse.** -dontwarn com.squareup.picasso.** -keepclasseswithmembernames class * { native <methods>;
}

okio

# Okio
-dontwarn com.squareup.**
-dontwarn okio.**
-keep public class org.codehaus.* { *; }
-keep public class java.nio.* { *; }

rx

# RxJava RxAndroid
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
long producerIndex;
long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

通过如上配置,可以正常生成release版本的apk了。以后出现类似的问题,只要找到对应的混淆规则添加,就可以了。。。希望对大家有用,下一篇文章,我会整理一下一些实用频率很高的混淆配置。

转载于:Android 生成Release版本时,混淆问题的解决-蒲公英云

猜你喜欢

转载自blog.csdn.net/weixin_42602900/article/details/126579120