在「加入現有應用程式」中管理插件和依賴項
本指南說明如何設定您的專案以使用插件,以及如何在您現有的 Android 應用程式和 Flutter 模組的插件之間管理您的 Gradle 函式庫依賴項。
A. 簡單情境
#在簡單的情況下
- 您的 Flutter 模組使用一個沒有額外 Android Gradle 依賴項的插件,因為它僅使用 Android OS API,例如相機插件。
- 您的 Flutter 模組使用一個具有 Android Gradle 依賴項的插件,例如 來自 video_player 插件的 ExoPlayer,但您現有的 Android 應用程式並未依賴 ExoPlayer。
不需要額外的步驟。您的「加入現有應用程式」模組將以與完整 Flutter 應用程式相同的方式運作。無論您是使用 Android Studio、Gradle 子專案或 AAR 進行整合,遞移的 Android Gradle 函式庫都會根據需要自動捆綁到您外部現有的應用程式中。
B. 需要專案編輯的插件
#某些插件需要您對專案的 Android 端進行一些編輯。
例如,firebase_crashlytics 插件的整合說明需要手動編輯您的 Android 包裝專案的 build.gradle
檔案。
對於完整的 Flutter 應用程式,這些編輯是在您的 Flutter 專案的 /android/
目錄中完成的。
在 Flutter 模組的情況下,您的模組專案中只有 Dart 檔案。請在您外部、現有的 Android 應用程式上執行這些 Android Gradle 檔案編輯,而不是在您的 Flutter 模組中執行。
C. 合併函式庫
#需要稍微注意的情境是,如果您現有的 Android 應用程式已經依賴於您的 Flutter 模組(透過插件遞移地)所依賴的同一個 Android 函式庫。
例如,您現有的應用程式的 Gradle 可能已經有
…
dependencies {
…
implementation("com.crashlytics.sdk.android:crashlytics:2.10.1")
…
}
…
而且您的 Flutter 模組也透過 pubspec.yaml
依賴於 firebase_crashlytics
…
dependencies:
…
firebase_crashlytics: ^0.1.3
…
…
這個插件的使用會再次透過 firebase_crashlytics v0.1.3 自己的 Gradle 檔案 遞移地新增一個 Gradle 依賴項
…
dependencies {
…
implementation("com.crashlytics.sdk.android:crashlytics:2.9.9")
…
}
…
兩個 com.crashlytics.sdk.android:crashlytics
依賴項的版本可能不同。在此範例中,主機應用程式要求 v2.10.1,而 Flutter 模組插件要求 v2.9.9。
預設情況下,Gradle v5 會透過使用函式庫的最新版本來解決依賴項版本衝突。
只要版本之間沒有 API 或實作的重大變更,這通常是可以的。例如,您可能會在您現有的應用程式中使用新的 Crashlytics 函式庫,如下所示
…
dependencies {
…
implementation("com.google.firebase:firebase-crashlytics:17.0.0-beta03")
…
}
…
此方法行不通,因為 Crashlytics 的 Gradle 函式庫版本 v17.0.0-beta03 和 v2.9.9 之間存在主要的 API 差異。
對於遵循語意版本控制的 Gradle 函式庫,您通常可以在現有的應用程式和 Flutter 模組插件中使用相同的主要語意版本,來避免編譯和執行階段錯誤。
除非另有說明,否則本網站上的文件反映 Flutter 的最新穩定版本。頁面最後更新於 2024-07-08。 檢視原始碼 或 回報問題。