[英]Unable to build apk - android studio
现在已经一周了,我们无法为我们的 andorid 项目构建 apk 文件。 我们得到的错误与 proguard 相关(请参阅附加的错误):
警告:有 416 个未解析的类或接口引用。
错误:任务“:app:transformClassesAndResourcesWithProguardForDebug”的执行失败。 java.io.IOException: 请先更正上述警告。
该项目用于在我们最近的一次提交之前构建。 因此,当我们结帐到该提交时,它就起作用了! 我们已经在 stackoverflow/internet 上尝试了与此相关的所有可用内容,但没有任何效果! 最糟糕的是,它只能在我们的一台计算机上构建,我们无法弄清楚为什么它不能在具有相同版本 Android Studio 的其他计算机上运行。
我们甚至尝试使用以下命令来抑制警告:
-不要警告
-保持类
因此,在这种情况下,构建成功但应用程序崩溃。
使用的不同组件的版本:
安卓工作室 - 2.1.2
混淆器 - 5.2.1
构建工具版本 23.0.2
这些是我们在项目中使用的 proguard 规则:
-dontwarn com.github.siyamed.shapeimageview.path.parser.SvgToPath
-dontwarn com.google.android.gms.internal.zzhu
-dontwarn com.squareup.okhttp.**
-keep class com.opentok.** { *; }
-keep class org.webrtc.** { *; }
-keepattributes SourceFile,LineNumberTable
-keepattributes *Annotation*
-keep class org.acra.** { *; }
-keepclassmembers class com.paytm.pgsdk.PaytmWebView$PaytmJavaScriptInterface {
public *;
}
##MoEngage proguard rules, src : http://docs.moengage.com/docs/android-configuring-proguard
-dontwarn com.google.android.gms.location.**
-dontwarn com.google.android.gms.gcm.**
-dontwarn com.google.android.gms.iid.**
-dontwarn okio.**
-keep class com.google.android.gms.gcm.** { *; }
-keep class com.google.android.gms.iid.** { *; }
-keep class com.google.android.gms.location.** { *; }
-keep class com.facebook.drawee.**{*;}
-dontwarn com.facebook.drawee.*
-keep class com.moe.pushlibrary.activities.** { *; }
-keep class com.moe.pushlibrary.internal.MoEService
-keep class com.moe.pushlibrary.GeofenceIntentService
-keep class com.moe.pushlibrary.InstallReceiver
-keep class com.moengage.push.MoEPushWorker
-keep class com.moe.pushlibrary.PushGcmBroadcastReceiver
-keep class com.moe.pushlibrary.providers.MoEProvider
-keep class com.moengage.receiver.MoEInstanceIDListener
-keep class com.moengage.worker.MoEGCMListenerService
-keep class com.moe.pushlibrary.models.** { *;}
-keep class com.moe.pushlibrary.internal.GeoTask
-keep class com.moengage.locationlibrarynew.LocationHandlerImpl
-dontwarn com.moengage.locationlibrarynew.LocationHandlerImpl
-dontwarn com.moe.pushlibrary.internal.GeoTask
-dontwarn com.moengage.receiver.*
-dontwarn com.moengage.worker.*
-dontwarn com.moengage.*
-keep class com.delight.** { *; }
## for rx java
-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;
}
当您添加一些依赖项时,proguard 会混淆依赖项代码的巨大变化。 因此,使用-dontwarn (它基本上不会警告您一些未解析的引用),您应该使用-keep class 。
找到依赖包名称,然后防止它们的类被 proguard 混淆。
-- 更新 --
从您的日志中,有 2 个依赖项需要解决:facebook 和 android-shape-imageview。
对于 facebook,请尝试将其添加到您的 proguard:
-keep class com.facebook.** {
*;
}
对于形状图像视图:
-dontwarn android.support.v7.**
-keep class android.support.v7.** { ; }
-keep interface android.support.v7.* { ; }
-keepattributes *Annotation,Signature
-dontwarn com.github.siyamed.**
-keep class com.github.siyamed.shapeimageview.**{ *; }
阅读更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.