簡體   English   中英

與項目':app'中的依賴項沖突。 app(15.0.2)和測試app(12.0.1)的已解決版本不同(可能是信號和firebase問題)

[英]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文件。 但是沒有看到我的猜測是你有一個implementationtestImplementationcom.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-servicescom.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

你有這些方法來解決這個問題。

  • 從OneSignal中排除play-service並強制使用您正在使用的最新版本。 (正如@gizembrh回答 )。 我不建議,因為OneSignal的代碼可能會因新的播放服務而崩潰
  • 下載OneSignal sdk並將其作為模塊放入項目中。 然后更新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.

相關問題 在項目':app'中與依賴'com.google.code.gson:gson'沖突。 app(2.7)和測試app(2.8.0)的已解決版本不同 錯誤:與項目':app'中的依賴項'com.android.support:support-v4'發生沖突。 應用(25.3.1)和測試應用(23.1.1)的已解決版本不同 與項目':app'中的依賴'com.android.support:support-annotations'沖突。 app(26.1.0)和測試app(27.1.1)的已解決版本有所不同。 錯誤:在項目':app'中與依賴項'com.google.guava:guava'發生沖突。 應用(18.0)和測試應用(16.0.1)的已解決版本不同 警告:與項目':app'中的依賴項'junit:junit'沖突。 app(4.11)和test app(4.12)的已解決版本 Espresso錯誤:與依賴項“ com.android.support:support-v4”發生沖突。 應用(24.2.0)和測試應用(23.1.1)的已解決版本不同 與依賴'com.android.support:support-annotations'沖突。 app(23.3.0)和測試app(23.1.1)的已解決版本有所不同 與依賴'com.android.support:support-annotations'沖突。 app(23.1.0)和測試app(23.0.1)的已解決版本有所不同 Gradle:應用和測試應用的已解決版本不同 應用程式和測試應用程式的Android Espresso 2.2.1解析版本不同
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM