Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

開始在 Android 上使用 Cloud Storage

Cloud Storage for Firebase 可讓您上傳和共享用戶生成的內容,例如圖像和視頻,這樣您就可以將富媒體內容構建到您的應用中。您的數據存儲在谷歌雲存儲桶-具有高可用性和冗餘全球的艾字節規模的對象存儲解決方案。 Cloud Storage for Firebase 可讓您直接從移動設備和網絡瀏覽器安全地上傳這些文件,輕鬆處理不穩定的網絡。

先決條件

如果你還沒有,添加火力地堡到您的Android項目

創建默認 Cloud Storage 存儲分區

  1. 從導航窗格中火力地堡控制台,選擇存儲,然後點擊開始使用

  2. 查看有關使用安全規則保護 Cloud Storage 數據的消息。在開發過程中,考慮向公眾開放在設置規則

  3. 選擇一個位置作為默認雲端存儲分區。

    • 此位置設置項目的默認谷歌雲平台(GCP)資源位置。請注意,這個位置將在項目中需要的位置設置,具體地講,您可以使用GCP服務雲公司的FireStore數據庫和您的App Engine應用程序(如果你使用雲調度器是必需的)。

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

    如果你在大火計劃,你可以創建多個桶,每個都有自己的位置

  4. 點擊完成

設置公共訪問

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

這確實使 Cloud Storage 向任何人開放,即使是不使用您的應用程序的人,因此在設置身份驗證時請務必再次限制您的 Cloud Storage。

將 Cloud Storage SDK 添加到您的應用

使用火力地堡Android的物料清單,聲明你的模塊(應用程序級)搖籃文件(通常為雲存儲的Android庫的依賴app/build.gradle )。

爪哇

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

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

通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

(替代)聲明火力地堡庫依賴使用物料清單

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

需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

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:20.0.0'
}

科特林+KTX

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

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

通過使用火力地堡Android的物料清單,您的應用程序將始終使用火力地堡的Android庫的兼容版本。

(替代)聲明火力地堡庫依賴使用物料清單

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

需要注意的是,如果你在你的應用程序使用多個火力地堡庫,我們強烈建議您使用的物料清單管理庫版本,以保證所有版本相互兼容。

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:20.0.0'
}

設置雲存儲

在訪問您的雲端存儲分區的第一步是創建一個實例FirebaseStorage

爪哇

FirebaseStorage storage = FirebaseStorage.getInstance();

科特林+KTX

storage = Firebase.storage

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

首先,讓我們來學習如何創建一個雲存儲的參考

高級設置

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

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

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

在這兩種使用情況下,你要使用多個雲存儲桶

如果您正在構建一個應用程序,例如 Google Drive,那麼第三個用例很有用,它允許用戶擁有多個登錄帳戶(例如,一個個人帳戶和一個工作帳戶)。您可以使用自定義的火力地堡應用實例每增加一個帳戶進行身份驗證。

使用多個 Cloud Storage 存儲分區

如果你想使用雲存儲桶不是上述提供,或在一個單一的應用程序使用多個雲端存儲分區默認另一方面,你可以創建一個實例FirebaseStorage引用您的自定義鬥:

爪哇

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

科特林+KTX

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

使用導入的存儲桶

當導入現有的雲端存儲到火力地堡,你將有權授予火力地堡訪問使用這些文件的能力gsutil工具,包括在谷歌雲SDK

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

你可以找到在描述你的項目數量介紹火力地堡項目

這不會影響新創建的存儲桶,因為它們的默認訪問控制設置為允許 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");

科特林+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")

下一步