2017-12-22 25 views
1

(任意の書式設定の問題について謝罪、SOの解析ロジックは、せいぜい疑問であると私はので、私はこの質問を提出することができませんことを余儀なくされたものでした)apkをビルドしようとしてエラーが発生しました:重複した依存関係を特定する方法

だから私のアプリが正常に動作が、私は生成しようとすると、署名しますAPK、私は非常に似て、10のエラーを取得します。

 Error:Uncaught translation error: java.lang.IllegalArgumentException: 
already added: Lcom/google/common/base/FinalizableReference; 
    Error:Uncaught translation error: java.lang.IllegalArgumentException: 
already added: Lcom/google/common/base/FinalizableReferenceQueue; 
    Error:Uncaught translation error: java.lang.IllegalArgumentException: 
already added: 
Lcom/google/common/base/FinalizableReferenceQueue$DecoupledLoader; 
    (SNIP!) errors end with this: 
    Error:Execution failed for task 
':newAppVariable:transformClassesWithDexForRelease'. 
    > com.android.build.api.transform.TransformException: 
com.android.ide.common.process.ProcessException: 
java.util.concurrent.ExecutionException: java.lang.RuntimeException: 
Translation has been interrupted 

読み込みから、私は何らかの形で依存関係が重複しています。ここでは(以下Eyadの提案からの変更を含む)私のトップレベルのGradleです:

buildscript { 
    repositories { 
     jcenter() 
     google() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.1' 
     classpath 'com.google.gms:google-services:3.1.2' 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     google() 
    } 
} 

、ここでは私のモジュールレベルのGradleは(再び、これはV 2.0以下Eyadの推奨される変更が含まれている)である:

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
} 


android { 
    compileSdkVersion 26 
    buildToolsVersion '26.0.2' 

    defaultConfig { 
     applicationId "com.mogl" 
     minSdkVersion 21 
     targetSdkVersion 26 
     multiDexEnabled true 
    } 

    packagingOptions { 
     exclude 'META-INF/DEPENDENCIES' 
     exclude 'META-INF/NOTICE' 
     exclude 'META-INF/LICENSE' 
     exclude 'META-INF/license.txt' 
     exclude 'META-INF/notice.txt' 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles 'proguard.cfg' 
     } 
    } 

    useLibrary 'org.apache.http.legacy' 

    dexOptions { 
     javaMaxHeapSize "4g" 
     preDexLibraries = false 
    } 



    lintOptions { 
     disable 'ValidFragment' 
    } 

} 

dependencies { 
    implementation 'org.greenrobot:eventbus:3.1.1' 
    api files('libs/client-0.0.1-SNAPSHOT-jar-with-dependencies.jar') 
    implementation 'com.android.support:multidex:1.0.2' 
    implementation 'com.android.support:support-v4:26.1.0' 
    implementation 'com.android.support:animated-vector-drawable:26.1.0' 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation 'com.android.support:cardview-v7:26.1.0' 
    implementation 'com.android.support:customtabs:26.1.0' 
    implementation 'com.google.android.gms:play-services-maps:11.8.0' 
    implementation 'com.google.android.gms:play-services-plus:11.8.0' 
    implementation 'com.google.android.gms:play-services-auth:11.8.0' 
    implementation 'com.google.android.gms:play-services-gcm:11.8.0' 
    implementation 'com.google.android.gms:play-services-location:11.8.0' 
    implementation ('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 

} 

apply plugin: 'com.google.gms.google-services' 

実行しましたgradlew -q dependencies myappname:dependencies > gradlew.txt

と私は理解していない多くの出力を得ました。どのセクションを気にする必要がありますか?私の問題はリリースされたセクションについて気をつけなければならないリリース用の署名付きAPKを作成しようとしているときにしか問題ないと思います。私はこの記事に貼り付けしようとしたが、SO、それは不適切代わりに、それはあるテキスト出力のコードを書式設定だと思ったので、私はそれにリンクする必要があります。

https://gist.github.com/anonymous/e98adfd44e7aa9f15fe6e50539e42a29

私はそれを貼り付けることができるかどうかを見てみましょう編集など:

releaseRuntimeClasspath - Resolved configuration for runtime for variant: release 
+--- org.greenrobot:eventbus:3.1.1 
+--- com.android.support:support-v4:26.1.0 
| +--- com.android.support:support-compat:26.1.0 
| | +--- com.android.support:support-annotations:26.1.0 
| | \--- android.arch.lifecycle:runtime:1.0.0 
| |   +--- android.arch.lifecycle:common:1.0.0 
| |   \--- android.arch.core:common:1.0.0 
| +--- com.android.support:support-media-compat:26.1.0 
| | +--- com.android.support:support-annotations:26.1.0 
| | \--- com.android.support:support-compat:26.1.0 (*) 
| +--- com.android.support:support-core-utils:26.1.0 
| | +--- com.android.support:support-annotations:26.1.0 
| | \--- com.android.support:support-compat:26.1.0 (*) 
| +--- com.android.support:support-core-ui:26.1.0 
| | +--- com.android.support:support-annotations:26.1.0 
| | \--- com.android.support:support-compat:26.1.0 (*) 
| \--- com.android.support:support-fragment:26.1.0 
|   +--- com.android.support:support-compat:26.1.0 (*) 
|   +--- com.android.support:support-core-ui:26.1.0 (*) 
|   \--- com.android.support:support-core-utils:26.1.0 (*) 
+--- com.android.support:animated-vector-drawable:26.1.0 
| +--- com.android.support:support-vector-drawable:26.1.0 
| | +--- com.android.support:support-annotations:26.1.0 
| | \--- com.android.support:support-compat:26.1.0 (*) 
| \--- com.android.support:support-core-ui:26.1.0 (*) 
+--- com.android.support:appcompat-v7:26.1.0 
| +--- com.android.support:support-annotations:26.1.0 
| +--- com.android.support:support-v4:26.1.0 (*) 
| +--- com.android.support:support-vector-drawable:26.1.0 (*) 
| \--- com.android.support:animated-vector-drawable:26.1.0 (*) 
+--- com.android.support:cardview-v7:26.1.0 
| \--- com.android.support:support-annotations:26.1.0 
+--- com.android.support:customtabs:26.1.0 
| +--- com.android.support:support-compat:26.1.0 (*) 
| \--- com.android.support:support-annotations:26.1.0 
+--- com.google.android.gms:play-services-maps:11.8.0 
| +--- com.google.android.gms:play-services-base:11.8.0 
| | +--- com.google.android.gms:play-services-basement:11.8.0 
| | | +--- com.android.support:support-v4:25.2.0 -> 26.1.0 (*) 
| | | \--- com.google.android.gms:play-services-basement-license:11.8.0 
| | +--- com.google.android.gms:play-services-tasks:11.8.0 
| | | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| | | \--- com.google.android.gms:play-services-tasks-license:11.8.0 
| | \--- com.google.android.gms:play-services-base-license:11.8.0 
| +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| \--- com.google.android.gms:play-services-maps-license:11.8.0 
+--- com.google.android.gms:play-services-plus:11.8.0 
| +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| \--- com.google.android.gms:play-services-plus-license:11.8.0 
+--- com.android.support:multidex:1.0.2 
+--- com.google.android.gms:play-services-auth:11.8.0 
| +--- com.google.android.gms:play-services-auth-api-phone:11.8.0 
| | +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| | +--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
| | \--- com.google.android.gms:play-services-auth-api-phone-license:11.8.0 
| +--- com.google.android.gms:play-services-auth-base:11.8.0 
| | +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| | +--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
| | \--- com.google.android.gms:play-services-auth-base-license:11.8.0 
| +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| \--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
+--- com.google.android.gms:play-services-gcm:11.8.0 
| +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| +--- com.google.android.gms:play-services-iid:11.8.0 
| | +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| | \--- com.google.android.gms:play-services-iid-license:11.8.0 
| \--- com.google.android.gms:play-services-gcm-license:11.8.0 
+--- com.google.android.gms:play-services-location:11.8.0 
| +--- com.google.android.gms:play-services-base:11.8.0 (*) 
| +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
| +--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
| \--- com.google.android.gms:play-services-location-license:11.8.0 
+--- com.crashlytics.sdk.android:crashlytics:2.8.0 
| +--- com.crashlytics.sdk.android:crashlytics-core:2.5.0 
| | +--- com.crashlytics.sdk.android:answers:1.4.1 
| | | \--- io.fabric.sdk.android:fabric:1.4.1 
| | \--- io.fabric.sdk.android:fabric:1.4.1 
| +--- com.crashlytics.sdk.android:beta:1.2.7 
| | \--- io.fabric.sdk.android:fabric:1.4.1 
| +--- com.crashlytics.sdk.android:answers:1.4.1 (*) 
| \--- io.fabric.sdk.android:fabric:1.4.1 
\--- com.google.firebase:firebase-core:11.8.0 
    \--- com.google.firebase:firebase-analytics:11.8.0 
      +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
      +--- com.google.firebase:firebase-common:11.8.0 
      | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
      | +--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
      | \--- com.google.firebase:firebase-common-license:11.8.0 
      +--- com.google.firebase:firebase-analytics-impl:11.8.0 
      | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
      | +--- com.google.firebase:firebase-iid:11.8.0 
      | | +--- com.google.android.gms:play-services-basement:11.8.0 (*) 
      | | +--- com.google.firebase:firebase-common:11.8.0 (*) 
      | | +--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
      | | \--- com.google.firebase:firebase-iid-license:11.8.0 
      | +--- com.google.firebase:firebase-common:11.8.0 (*) 
      | +--- com.google.android.gms:play-services-tasks:11.8.0 (*) 
      | \--- com.google.firebase:firebase-analytics-impl-license:11.8.0 
      \--- com.google.firebase:firebase-analytics-license:11.8.0 

だから私の問題は、依存関係を複製されて、私は「解放」のセクションで見てなってる場合、私はそれらを識別するためにどのように理解していない場合。例えば、support-v4ライブラリのdepツリーの一番上を見ると、サポートコンパイルライブラリに4,5つの重複した依存関係があるように見えます。

しかし、それは問題ではありませんか? Googleの最新のサポートライブラリであり、工場から4時間ほど過ぎて間違いがあり、何千もの開発者がAPKを構築できなくなるのではなく、正しく構築されているようです。だから私は自分が探しているものがわからないと信じています。私があなたを助けてくれることを願っています。

私は使用しているcustomtabsライブラリのサポートの依存関係を排除するために除外グループを使用してみました。 (申し訳ありませんが、パーサをもう一度投稿することはできません)、gradle同期中にエラーが発生しましたので、除外グループを削除しました。この問題にどう対処するかはわかりません。

ご協力いただきありがとうございます、ありがとうございます!

+0

Android Studioプラグインを使用してFabricを追加しましたか?または手動で? – EyadMhanna

+0

Eyad - ドキュメント(https://fabric.io/kits/android/crashlytics/install)に基づいて手動でファブリックを追加しましたが、推奨された「1。 なぜあなたはFabricが私の問題を過去に引き起こしているのを見たことがありますか? – user2659207

+0

この警告は無視することができますが、それはすべてのライブラリで発生しますが、決して発生しません。実際に問題が発生した場合は、どうか私の答えを確認してください。 – EyadMhanna

答えて

0

ファブリッククラッシュサイクラスは、モジュールのグラデルファイルにのみ追加する必要があります。トップレベルのグラデルファイルには含めないでください。 Android Studioプラグインを使用してFabric crashlyticsを追加した場合(手動で追加するよりもお勧めです)、モジュールのgradleファイルにのみ追加されます。ファブリッククラッシュシュリックスの正しい実装方法は、次のようなものです。

buildscript { 
    repositories { 
     maven { url 'https://maven.fabric.io/public' } 
    } 

    dependencies { 
     classpath 'io.fabric.tools:gradle:1.+' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'io.fabric' 

repositories { 
    maven { url 'https://maven.fabric.io/public' } 
} 


android { 

    compileSdkVersion 27 
    buildToolsVersion '27.0.2' 

    defaultConfig { 
     minSdkVersion 19 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 

    buildTypes { 
     release { 
      shrinkResources true 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

} 

dependencies { 
    //Other gradle dependencies here 
    compile('com.crashlytics.sdk.android:crashlytics:[email protected]') { 
     transitive = true; 
    } 
} 

幸いコーディングに役立ちます。

+0

私はそれを試してみます。私は今、彼らのドキュメントによって混乱しています。同じファイルで、一度buildscriptセクションにネストされ、一度外に出てしまったのですが、それはおそらく...私にとっては同じではなく、2つの異なるgradleファイルについて話していると仮定しました。 – user2659207

+0

あたかも混乱しているけど、6つ以上のアプリでFabricのクラッシュリキティックスを使ったことがあっても、これまでに何の問題も起きたことはありませんでした。すべてが正しいことを確認し、コード内のFabricに関連するものをすべて削除してからAndroid Studioにプラグインを追加し、ログインしてFabricにクラッシュキットキットを追加さ​​せてください。 – EyadMhanna

+0

あなたが推奨するように試してみると、何も変更されませんでした。署名されたapkを構築するとき、エラーはまったく同じです。デッドツリーはCrashlyticsにはGoogle/Androidデープがないと言われ、エラーメッセージはすべてGoogleのものです。それにもかかわらず、多くの提案に感謝! – user2659207

関連する問題