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

来源:互联网 发布:tsp问题蚁群算法总结 编辑:程序博客网 时间:2024/06/06 16:59

今天在生成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.FilesWarning:okio.Okio: can't find referenced class java.nio.file.Path            .........Warning:rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef: can't find referenced class sun.misc.UnsafeWarning: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了。以后出现类似的问题,只要找到对应的混淆规则添加,就可以了。。。希望对大家有用,下一篇文章,我会整理一下一些实用频率很高的混淆配置。

原创粉丝点击