簡體   English   中英

Firebase支持即時應用程序的庫依賴沖突

[英]Firebase support library dependency conflict for instant apps

我正在嘗試將即時應用程序實現到使用Firebase數據庫的項目中。 我的目標是SDK版本27 ,因此支持庫的版本為27.0.2

Firebase數據庫版本為11.8.0gms版本為3.1.0 當我嘗試同步時,我收到以下錯誤:

Android dependency 'com.android.support:support-v4' has different 
version for the compile (25.2.0) and runtime (27.0.2) classpath. You 
should manually set the same version via DependencyResolution

通過在即時應用程序之前顯式添加以下依賴項,我能夠解決此問題

implementation 'com.android.support:support-v4:27.0.2'
implementation 'com.android.support:support-media-compat:27.0.2'

但是對於即時應用程序,即使我在功能模塊(app-base)中有它們,當我嘗試構建實際應用程序(com.android.application)時,我再次得到相同的錯誤。

我可以通過將這些沖突的依賴項移動到應用程序模塊gradle文件中來解決這個問題,在這種情況下,同步成功,但是我面臨另一個問題,這次是使用清單合並,這會阻止應用程序查找啟動器活動:

來自AndroidManifest.xml的屬性提供者#com.google.firebase.provider.FirebaseInitProvider@authorities value =(com.iamkaan.packagename.firebaseinitprovider):AndroidManifest.xml中還有10:13-72:33:350-423 value = (com.iamkaan.packagename.base.firebaseinitprovider)。 建議:在AndroidManifest.xml:8:9-12:39中添加'tools:replace =“android:authorities”'來覆蓋。 app主要清單(此文件),第9行

最后一個問題以某種方式與firebase-core依賴關系有關,因為當我更改我的應用程序gradle依賴關系時

implementation project(':app-base')

implementation (project(':app-base')) {
    exclude group: 'com.google.firebase', module:'firebase-core'
}

我能夠運行該應用程序。 但這一次,我開始在運行時收到以下錯誤(我第一次調用FirebaseDatabase.getInstance()

Default FirebaseApp is not initialized in this process com.iamkaan.packagename. Make sure to call FirebaseApp.initializeApp(Context) first

它確實沒有被調用,但是直到應用程序即時實施才開始工作。 無論如何,我在第一次FirebaseDatabase調用之前將調用添加到了各個地方,沒有任何幫助。

包名稱

  • app manifest: com.iamkaan.packagename
  • app gradle applicationId: com.iamkaan.packagename
  • app-base manifest: com.iamkaan.packagename.base
  • app-base gradle文件沒有applicationId

我碰到了類似的東西,它是由依賴項包含的支持庫引起的。 值得注意的是,幾乎所有Google / Android支持庫(CardView,RecyclerView等)都包含最新的v4和v7支持庫。 所以這通常會導致沖突。

你需要做的是:

  1. 在主應用程序中添加基本模塊時不要排除任何內容,即僅使用implementation project(':app-base')
  2. 使用api而不是implementation基礎模塊的build.gradle包含的支持庫,即build.gradle api 'com.android.support:support-v4:27.0.2'
  3. 確保您在基本模塊中添加的庫不得再次添加到主應用程序的build.gradle文件中
  4. 最重要的是:對於主應用程序和基本模塊的build.gradle文件,請排除FOR EACH項目的支持庫(請參閱下面的示例)

api('com.android.support:support-media-compat:27.0.2') {
    exclude group: 'com.android.support'
}
api('com.android.support:support-v7:27.0.2') {
    exclude group: 'com.android.support'
}

我還建議不要使用com.android.support:support-v7:27.0.2而只使用您需要的支持庫中的特定項。 請參閱支持庫包 ,了解如何僅添加支持庫中的特定項。

試試這個。 SDK是28

implementation ('com.google.firebase:firebase-core:16.0.6'){
    exclude module: 'support-media-compat'
    exclude module: 'support-v4'
}
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM