[英]Conflict with dependency 'com.google.code.gson:gson' in project ':app'. Resolved versions for app (2.7) and test app (2.8.0) differ
[英]Conflict with dependency in project ':app'. Resolved versions for app (15.0.2) and test app (12.0.1) differ (possibly onesignal&firebase issue)
我似乎無法在Android Studio 3.0.1上為我的應用程序構建gradle(生成apk工程)。 下面是構建輸出。
Error:FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:preDebugAndroidTestBuild'.
> Conflict with dependency 'com.google.firebase:firebase-messaging' in project ':app'.
Resolved versions for app (15.0.2) and test app (12.0.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 23s
這是build.gradle文件的內容。
更新21.8.2018:
我注意到在外部庫中,我有沖突
我發現我可以生成apk(Build APK)eventHough gradle產生沖突錯誤。 刪除gradle錯誤的方法是刪除/注釋此行:
implementation 'com.google.android.gms:play-services-places:15.0.1'
但然后APK不會編譯。 它曾經工作,我意識到這個問題可能發生在我必須將Firebase包含在另一個使用相同Android Studio的項目(基於cordova的Android應用程序)之后。 這個問題不會發生在我的其他同事機器上。 我該如何解決這個問題? 謝謝
請發布您的build.gradle文件。 但是沒有看到我的猜測是你有一個implementation
和testImplementation
有com.google.firebase:firebase-messaging
不同版本com.google.firebase:firebase-messaging
嘗試使用以下配置強制使用firebase依賴項的版本
android {
configurations.all {
resolutionStrategy.force 'com.google.firebase:firebase-core:16.0.1'
}
}
它看起來像一個傳遞依賴問題。 com.google.android.gms:play-services
和com.onesignal:OneSignal
使用com.google.firebase:firebase-messaging
com.onesignal:OneSignal
com.google.firebase:firebase-messaging
,但他們可能導入了不同的版本。 我建議升級以使用這些庫的最新版本。
似乎有兩個庫依賴於firebase-messaging庫,它們依賴於不同的版本。 要找出它們是哪些,請轉到Android Studio中的終端窗口並運行以下命令:
./gradlew app:依賴項
這將在樹結構中向您顯示項目中的所有依賴項。 一旦檢測到哪些庫添加了重復的庫,您可以嘗試以下方法之一:
1)檢查build.gradle中其他版本的父依賴項,它們都使用相同版本的傳遞重復依賴項。
2)從父依賴項中排除較低版本的依賴項。 例:
implementation('com.example.abc:def:1.0.0') {
exclude group: 'com.google.firebase', module: 'firebase-messaging'
}
3)實施具有解決策略的固定版本:
configurations.all {
resolutionStrategy {
force com.google.firebase:firebase-messaging:15.0.2
}
}
依賴性OneSignal正在使用舊版本的play-service
。
你有這些方法來解決這個問題。
play-service
並強制使用您正在使用的最新版本。 (正如@gizembrh回答 )。 ( 我不建議,因為OneSignal的代碼可能會因新的播放服務而崩潰 ) play-service
版本降級為相同版本的OneSignal。 ( 我認為最容易 ) 我認為第三種選擇最適合你。 因為您只需要降級播放服務版本。 請參閱OneSignal build.gradle
播放服務版本
def playServicesVersion = '12.0.0'
implementation "com.google.android.gms:play-services-places:$playServicesVersion"
implementation "com.google.android.gms:play-services-maps:$playServicesVersion"
也可以在項目級build.gradle中使用,使用以下版本的google-services
。 請參閱OneSignal build.gradle
google-services版本 。
classpath 'com.google.gms:google-services:4.0.1'
如果您在gradle中進行了上述兩項更改,則不會再出現此錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.