Android(安卓)生成Release版本时,混淆问题的解决
16lz
2021-01-24
今天在生成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 ;}
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彻底退出程序的多种办法
- android常见错误记录--持续更新中
- Android(安卓)studio 3.0问题、错误积累
- Android(安卓)Studio导入项目错误之Gradle版本过高
- 检测android app是否第一次启动
- android中引入okhttp
- android关于手机和3.0版本以上平板去标题问题
- Android(安卓)CTS包下载地址
- Gradle上传aar到Maven