Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法构建apk-android studio_Java_Android_Android Studio_Proguard - Fatal编程技术网

Java 无法构建apk-android studio

Java 无法构建apk-android studio,java,android,android-studio,proguard,Java,Android,Android Studio,Proguard,现在已经一周了,我们无法为我们的android项目构建apk文件。我们得到的错误与proguard有关(请参阅随附的错误): 警告:有416个未解析的类或接口引用 错误:任务执行失败:应用程序:transformClassesAndResourcesWithProguardForDebug'。 java.io.IOException:请先更正上述警告 在我们最近的一次提交之前用于构建的项目。所以,当我们签出到该提交时,它就工作了!我们已经在stackoverflow/互联网上尝试了与此相关的所有

现在已经一周了,我们无法为我们的android项目构建apk文件。我们得到的错误与proguard有关(请参阅随附的错误):

警告:有416个未解析的类或接口引用

错误:任务执行失败:应用程序:transformClassesAndResourcesWithProguardForDebug'。 java.io.IOException:请先更正上述警告

在我们最近的一次提交之前用于构建的项目。所以,当我们签出到该提交时,它就工作了!我们已经在stackoverflow/互联网上尝试了与此相关的所有可用方法,但没有任何效果! 最糟糕的是,它只能在我们的一台计算机上构建,我们无法理解为什么它不能在其他具有相同版本Android Studio的计算机上运行

我们甚至尝试使用以下方法抑制警告:

-唐特沃恩

-上课

因此,在本例中,构建成功,但应用程序崩溃

所用不同组件的版本:

安卓工作室-2.1.2

Proguard-5.2.1

BuildToolsVersion23.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将对依赖项代码进行巨大的更改。因此,您应该使用-keep class,而不是使用-dontwarn(它基本上不会警告您一些未解析的引用)

找到依赖项包名称,然后防止proguard破坏它们的类

--更新--

从您的日志中,有两个依赖项需要解决: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.**{ *; }
更多信息请访问:


  • 在此提交后,您是否添加了新的依赖项或更改了proguard规则中的某些内容?不,我们没有更改proguard规则中的任何内容,但在build.gradle文件中添加了一些依赖项。您是否提供了新添加的依赖项列表?大多数依赖项为您的proguard文件提供规则。@AshishRanjan:请阅读我的更新答案。这些是新添加的依赖项:compile'com.hannesdorfmann.sqlbrite:dao:0.6.1'+compile'com.hannesdorfmann.sqlbrite:annotations:0.6.1'+apt'com.hannesdorfmann.sqlbrite:object mapper:0.6.1'hey@isnotmenow,谢谢你的回答,我们确实尝试过为我们得到的错误添加-保留类规则,但是后来构建项目花费了很多时间,最后它抛出了一些错误。我不明白的是,为什么它会构建在其中一台PC上?它与构建工具版本或gradle版本有关吗?@AshishRanjan:什么错误?。。。可能这台电脑上的项目与其他电脑上的项目不完全相同。请先尝试清理和重建项目。有时Android Studio在运行应用程序时会使用较旧的编译代码。顺便说一句,尝试注释一些规则:-dontwarn com.github.siyamed.shapeimageview.path.parser.SvgToPat和*-keep class com.facebook.pauree.*{;}-dontwarn com.facebook.pauree.*在使用我的answer.project中的规则之前是完全相同的,我们刚刚从git中提取了代码,是的,我们多次尝试清理和重建,但都没有成功!