java - apkをビルドできません - android studio
1 週間経ちましたが、Android プロジェクトの apk ファイルをコンパイルできません。受け取ったエラーはプロガードに関連しています (添付のエラーを参照):
<ブロック引用>警告: クラスまたはインターフェースへの未解決の参照が 416 ありました。
エラー: タスク ':application:transformClassesAndResourcesWithProguardForDebug' の実行エラー。 java.io.IOException: 最初に上記の警告を修正してください。
最近の婚約の前に。したがって、そのコミットメントの支払いを行うと、それは機能します!これに関連して、stackoverflow/internet で利用可能なすべてのものを試しましたが、何も機能しません! 最悪の部分は、1 台のコンピューターでしかコンパイルできず、同じ Android Studio バージョンの他のコンピューターではなぜ動作しないのか理解できないことです。
以下を使用して警告を抑制しようとさえします:
<ブロック引用>-警告しないでください
-l を長押しクラスへ
したがって、この場合、ビルドは成功しましたが、アプリは失敗しました。
使用されているさまざまなコンポーネントのバージョン:
<ブロック引用>アンドロイド スタジオ - 2.1.2
プロガード - 5.2.1
buildTools バージョン 23.0.2
保護エラー
これらは、私たちのプロジェクトで使用しているプロガード ルールです:
-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 を使用する代わりに (基本的に未解決の参照について警告しません)、-maintain class を使用する必要があります。
依存パッケージ名を見つけて、proguard がクラスを難読化するのを防ぎます。
-- 更新 --
レジストリから、解決する必要がある 2 つの依存関係があります: facebook と android-shape-imageview。
Facebook の場合は、これをあなたのプロガード:
-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.**{ *; }
詳細:
<オール>タグ:
関連記事:
GRADLE が Grails アプリケーションの間違った JAR ファイルを MAVEN リポジトリにアップロードするのはなぜですか?
sql: インデックスを追加して、Geocoder Near Search を高速化します