Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

Android上的Cloud Storage入門

Cloud Storage for Firebase允許您上傳和共享用戶生成的內容,例如圖像和視頻,從而可以將富媒體內容構建到應用程序中。您的數據存儲在Google Cloud Storage存儲桶中,這是一個具有高可用性和全局冗餘的EB級對象存儲解決方案。通過Cloud Storage,您可以直接從移動設備和Web瀏覽器安全地上傳這些文件,從而輕鬆處理不合格的網絡。

先決條件

如果尚未將Firebase添加到您的Android項目中

創建一個默認的存儲桶

  1. Firebase控制台的導航窗格中,選擇“存儲” ,然後單擊“入門”

  2. 查看有關使用安全規則保護存儲數據的消息。在開發期間,請考慮設置您的公共訪問規則

  3. 選擇默認存儲分區的位置

    • 此位置設置是您項目的默認Google Cloud Platform(GCP)資源位置。請注意,此位置將用於需要位置設置的項目中的GCP服務,尤其是Cloud Firestore數據庫和App Engine應用程序(如果使用Cloud Scheduler,則是必需的)。

    • 如果您無法選擇位置,則您的項目已經具有默認的GCP資源位置。它是在項目創建期間設置的,或者是在設置另一個需要位置設置的服務時設置的。

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

  4. 單擊完成

設置公共訪問

Cloud Storage for Firebase提供了一種聲明性規則語言,可讓您定義數據的結構方式,索引方式以及何時可以讀寫數據。默認情況下,對存儲的讀寫訪問受到限制,因此只有經過身份驗證的用戶才能讀取或寫入數據。要開始而不設置身份驗證,您可以配置公共訪問規則

這確實使Storage對任何人,甚至是不使用您的應用程序的人都開放,因此請確保在設置身份驗證時再次限制您的Storage。

將Cloud Storage SDK添加到您的應用

使用Firebase Android BoM ,在模塊(應用程序級)Gradle文件(通常為app/build.gradle )中聲明Cloud Storage Android庫的依賴app/build.gradle

爪哇

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

    // Declare 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 {
    // Declare 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:19.2.1'
}

Kotlin + KTX

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

    // Declare 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-ktx'
}

通過使用Firebase Android BoM ,您的應用將始終使用Firebase Android庫的兼容版本。

(可選)使用BoM聲明Firebase庫依賴關係

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

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

dependencies {
    // Declare 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-ktx:19.2.1'
}

設置雲存儲

訪問存儲桶的第一步是創建FirebaseStorage的實例:

爪哇

FirebaseStorage storage = FirebaseStorage.getInstance();

Kotlin + KTX

storage = Firebase.storage

您已經準備好開始使用Cloud Storage!

首先,讓我們學習如何創建Cloud Storage參考

進階設定

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

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

如果您的數據具有不同的訪問模式,則第二個用例會很有幫助。例如:您可以設置存儲圖片或其他經常訪問的內容的多區域或區域存儲桶,以及存儲用戶備份或其他不經常訪問的內容的近線或冷線存儲桶。

在這兩種用例中,您都想使用多個存儲桶

如果您要構建一個應用程序(例如Google雲端硬盤),則第三個用例非常有用,該應用程序允許用戶擁有多個登錄帳戶(例如,個人帳戶和工作帳戶)。您可以使用自定義Firebase App實例對每個其他帳戶進行身份驗證。

使用多個存儲桶

如果您要使用上面提供的默認存儲桶以外的其他存儲桶,或者在單個應用程序中使用多個存儲桶,則可以創建一個FirebaseStorage實例來引用您的自定義存儲桶:

爪哇

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

Kotlin + KTX

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

使用進口桶

將現有的Cloud Storage存儲分區導入Firebase時,您必須授予Firebase使用Google Cloud SDK中包含的gsutil工具訪問這些文件的能力:

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實例:

爪哇

// 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");

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")

下一步