Android 上的雲端儲存入門

Cloud Storage for Firebase 可讓您上傳和分享用戶生成的內容,例如圖像和視頻,從而允許您在應用程式中建立富媒體內容。您的資料儲存在Google Cloud Storage 儲存桶中,這是一個具有高可用性和全域冗餘的 EB 級物件儲存解決方案。 Cloud Storage for Firebase 可讓您直接從行動裝置和 Web 瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網路。

先決條件

如果您尚未將 Firebase 新增至您的 Android 專案中,請將其新增至您的 Android 專案中。

建立預設 Cloud Storage 儲存分區

  1. Firebase 控制台的導覽窗格中,選擇「儲存」 ,然後按一下「開始」

  2. 查看有關使用安全規則保護 Cloud Storage 資料的訊息。在開發過程中,請考慮設定公共存取規則

  3. 選擇預設 Cloud Storage 儲存分區的位置

    • 此位置設定是您專案的預設 Google Cloud Platform (GCP) 資源位置。請注意,此位置將用於專案中需要位置設定的 GCP 服務,特別是Cloud Firestore資料庫和App Engine應用程式(如果您使用 Cloud Scheduler,則需要)。

    • 如果您無法選擇位置,則您的專案已有預設 GCP 資源位置。它是在專案建立期間或設定另一個需要位置設定的服務時設定的。

    如果您使用 Blaze 計劃,則可以建立多個儲存桶,每個儲存桶都有自己的位置

  4. 按一下“完成”

設定公共訪問

Cloud Storage for Firebase 提供了一種宣告式規則語言,可讓您定義資料的結構方式、索引方式以及資料的讀取和寫入時間。預設情況下,對 Cloud Storage 的讀寫存取受到限制,因此只有經過身份驗證的使用者才能讀取或寫入資料。若要在不設定身份驗證的情況下開始,您可以設定公共存取規則

這確實使雲端儲存向任何人開放,甚至是不使用您的應用程式的人,因此請務必在設定身份驗證時再次限制您的雲端儲存。

將 Cloud Storage SDK 新增至您的應用

模組(應用程式層級)Gradle 檔案(通常<project>/<app-module>/build.gradle.kts<project>/<app-module>/build.gradle )中,新增 Cloud Storage 的依賴項Android 的函式庫。我們建議使用Firebase Android BoM來控制函式庫版本控制。

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:32.7.3"))

    // Add the dependency for the Cloud Storage library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage")
}

透過使用Firebase Android BoM ,您的應用程式將始終使用 Firebase Android 程式庫的相容版本。

(替代方法)在不使用 BoM 的情況下新增 Firebase 庫依賴項

如果您選擇不使用 Firebase BoM,則必須在其依賴項行中指定每個 Firebase 庫版本。

請注意,如果您在應用程式中使用多個Firebase 程式庫,我們強烈建議使用 BoM 來管理程式庫版本,這可確保所有版本相容。

dependencies {
    // Add the dependency for the Cloud Storage library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-storage:20.3.0")
}
正在尋找 Kotlin 特定的庫模組?2023 年 10 月(Firebase BoM 32.5.0)開始,Kotlin 和 Java 開發人員都可以依賴主庫模組(有關詳細信息,請參閱有關此計劃的常見問題解答)。

設定雲端儲存

存取 Cloud Storage 儲存桶的第一步是建立FirebaseStorage的實例:

Kotlin+KTX

storage = Firebase.storage

Java

FirebaseStorage storage = FirebaseStorage.getInstance();

您已準備好開始使用雲端儲存!

首先,我們來學習如何建立 Cloud Storage 參考

進階設定

有一些用例需要額外的設定:

  • 多個地理區域使用 Cloud Storage 儲存桶
  • 不同儲存類別中使用 Cloud Storage 儲存桶
  • 在同一應用程式中對多個經過驗證的使用者使用 Cloud Storage 儲存桶

如果您的用戶遍布世界各地,並且希望將他們的資料儲存在他們附近,那麼第一個用例是完美的。例如,您可以在美國、歐洲和亞洲建立儲存桶來儲存這些地區用戶的數據,以減少延遲。

如果您的資料具有不同的存取模式,第二個用例會很有幫助。例如:您可以設定一個多區域或區域儲存桶來儲存圖片或其他經常存取的內容,以及一個近線或冷線儲存桶來儲存使用者備份或其他不經常存取的內容。

在這兩種用例中,您都需要使用多個 Cloud Storage 儲存分區

如果您正在建立應用程式(例如 Google Drive),第三個用例非常有用,它允許使用者擁有多個登入帳戶(例如,個人帳戶和工作帳戶)。您可以使用自訂 Firebase 應用程式實例對每個附加帳戶進行驗證。

使用多個 Cloud Storage 儲存桶

如果您想要使用上面提供的預設儲存桶以外的 Cloud Storage 儲存桶,或者在單一應用程式中使用多個 Cloud Storage 儲存桶,您可以建立一個引用您的自訂儲存桶的FirebaseStorage實例:

Kotlin+KTX

// Get a non-default Storage bucket
val storage = Firebase.storage("gs://my-custom-bucket")

Java

// Get a non-default Storage bucket
FirebaseStorage storage = FirebaseStorage.getInstance("gs://my-custom-bucket");

使用導入的儲存桶

將現有 Cloud Storage 儲存桶匯入 Firebase 時,您必須授予 Firebase 使用gsutil工具(包含在Google Cloud SDK中)存取這些檔案的能力:

gsutil -m acl ch -r -u service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

您可以按照Firebase 專案簡介中的說明找到您的專案編號。

這不會影響新建立的儲存桶,因為這些儲存桶的預設存取控制設定為允許 Firebase。這是一項臨時措施,將來會自動執行。

使用自訂 Firebase 應用程式

如果您要使用自訂FirebaseApp建立更複雜的應用程序,則可以建立使用該應用程式初始化的FirebaseStorage實例:

Kotlin+KTX

// Get the default bucket from a custom FirebaseApp
val storage = Firebase.storage(customApp!!)

// Get a non-default bucket from a custom FirebaseApp
val customStorage = Firebase.storage(customApp, "gs://my-custom-bucket")

Java

// Get the default bucket from a custom FirebaseApp
FirebaseStorage storage = FirebaseStorage.getInstance(customApp);

// Get a non-default bucket from a custom FirebaseApp
FirebaseStorage customStorage = FirebaseStorage.getInstance(customApp, "gs://my-custom-bucket");

下一步