Introdução ao Cloud Storage no Android

Com o Cloud Storage for Firebase, você faz upload e compartilha conteúdo gerado pelo usuário, como imagens e vídeo, para criar conteúdo de rich media nos apps. Seus dados são armazenados em um bucket do Google Cloud Storage, uma solução de armazenamento de objetos com capacidade que chega aos exabytes, além de alta disponibilidade e redundância global. Com o Cloud Storage for Firebase, o upload dos arquivos é feito com segurança e facilidade diretamente de dispositivos móveis e navegadores da Web, mesmo em redes intermitentes.

Pré-requisitos

Adicione o Firebase ao projeto para Android, caso ainda não tenha feito isso.

Criar um bucket padrão do Cloud Storage

  1. No painel de navegação do console do Firebase, selecione Storage e clique em Comece aqui.

  2. Leia as mensagens sobre como proteger seus dados do Cloud Storage usando as regras de segurança. Durante o desenvolvimento, avalie a possibilidade de configurar suas regras para acesso público.

  3. Selecione um local para o bucket padrão do Cloud Storage.

    • Essa configuração de localização é o local padrão dos recursos do Google Cloud Platform (GCP) no seu projeto. Esse local será usado por serviços do GCP no projeto que exigem uma configuração de local, especificamente o banco de dados do Cloud Firestore e o app do App Engine (que é necessário se você usa o Cloud Scheduler).

    • Se você não conseguir selecionar um local, isso significa que seu projeto já tem um local padrão dos recursos do GCP. Ele foi definido durante a criação do projeto ou ao configurar outro serviço que requer uma configuração de local.

    Se você estiver no plano Blaze, poderá criar vários buckets, cada um com o próprio local.

  4. Clique em Concluído.

Configurar acesso público

O Cloud Storage for Firebase oferece uma linguagem declarativa de regras para que você defina como os dados devem ser estruturados e indexados e quando eles podem ser lidos e gravados. Por padrão, o acesso de leitura e gravação do Cloud Storage é restrito aos usuários autenticados. Para iniciar sem configurar o Authentication, defina as regras para acesso público.

Isso deixa o Cloud Storage disponível para todos, até para os que não usam o app. Por isso, restrinja o Cloud Storage novamente quando configurar a autenticação.

Adicionar o SDK do Cloud Storage ao seu app

No arquivo Gradle do módulo (nível do app) (geralmente <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), adicione a dependência da biblioteca do Cloud Storage para Android. Recomendamos o uso do Firebase Android BoM para lidar com o controle de versões da biblioteca.

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

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

Com o Firebase Android BoM, seu app sempre vai usar versões compatíveis das bibliotecas do Firebase para Android.

(Alternativa) Adicionar dependências das bibliotecas do Firebase sem usar o BoM

Se você preferir não usar o Firebase BoM, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.

Se você usa várias bibliotecas do Firebase no app, recomendamos utilizar o BoM para gerenciar as versões delas, porque isso ajuda a garantir a compatibilidade de todas as bibliotecas.

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:21.0.0")
}
Está procurando um módulo de biblioteca específico do Kotlin? A partir de outubro de 2023 (Firebase BoM 32.5.0), os desenvolvedores Kotlin e Java poderão depender do módulo da biblioteca principal. Para mais detalhes, consulte Perguntas frequentes sobre essa iniciativa.

Configurar Cloud Storage

O primeiro passo para acessar seu bucket do Cloud Storage é criar uma instância do FirebaseStorage:

Kotlin KTX

storage = Firebase.storage

Java

FirebaseStorage storage = FirebaseStorage.getInstance();

Você já pode começar a usar o Cloud Storage!

Primeiro, vamos aprender a criar uma referência do Cloud Storage.

Configuração avançada

Há alguns casos de uso que exigem configuração adicional:

O primeiro caso de uso é perfeito para quem tem usuários em todo o mundo e quer armazenar os dados perto deles. Por exemplo, para armazenar os dados dos usuários dos EUA, da Europa e da Ásia, crie buckets nessas regiões para reduzir a latência.

O segundo caso de uso é útil quando você tem dados com diferentes padrões de acesso. Por exemplo, configure um bucket regional ou multirregional que armazene imagens ou outros conteúdos acessados frequentemente e um bucket nearline ou coldline que armazene backups de usuários ou outros conteúdos pouco acessados.

Em qualquer um desses casos de uso, é recomendável usar vários buckets do Cloud Storage.

O terceiro caso de uso é útil ao criar um app, como o Google Drive, em que os usuários têm diversas contas conectadas. Por exemplo, uma conta pessoal e uma conta corporativa. Para autenticar cada conta adicional, use uma instância de um app personalizado do Firebase.

Usar vários buckets do Cloud Storage

Para usar um bucket do Cloud Storage diferente do padrão fornecido acima ou vários buckets do Cloud Storage em um único app, crie uma instância de FirebaseStorage que faça referência ao seu bucket personalizado:

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

Trabalhar com buckets importados

Ao importar um bucket do Cloud Storage para o Firebase, é preciso conceder ao Firebase acesso a esses arquivos com a ferramenta gsutil inclusa no SDK Google Cloud:

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

Você encontra o número do projeto conforme descrito na introdução a projetos do Firebase.

Isso não afeta os buckets recém-criados, porque eles têm o controle de acesso padrão, que autoriza o Firebase. Essa é uma medida temporária e será realizada automaticamente no futuro.

Usar um app personalizado do Firebase

Para desenvolver um app mais complexo usando um FirebaseApp personalizado, crie uma instância de FirebaseStorage inicializada com o app:

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

Próximas etapas