Lançamento do nosso SDK Android recém-reescrito
Em abril de 2018, apresentamos um SDK Android reescrito. Embora nosso SDK Java já pudesse ser usado em projetos Android, e já existisse uma integração Android anterior, a reescrita oferecia uma API mais consistente com o restante dos nossos SDKs.

Construída sobre o SDK Java, a integração Android adicionou o envio assíncrono de Assemblies e suporte para pausar e retomar uploads. Um app podia continuar respondendo ao usuário enquanto os arquivos eram enviados e processados, recebendo callbacks de progresso e de conclusão ao longo do caminho.
Atualização de segurança, setembro de 2026: o exemplo original de 0.0.2 passava um
Auth Secret para o SDK dentro de uma activity Android. Isso
distribuiria o segredo junto com o app. Os exemplos executáveis de activity foram substituídos
abaixo; mantenha o Auth Secret em um backend confiável, mesmo em um app distribuído internamente. O
backend precisa autenticar o usuário e autorizar o upload antes de assinar quaisquer parâmetros.
Siga nosso guia de Signature Authentication e exija assinaturas
para o Workspace ou Template usado pelo app.
O cliente Android 0.0.2 não expunha um construtor SignatureProvider. Manter o código de activity
baseado em segredo dessa versão e apenas adicionar uma URL de backend não resolveria o problema;
uma integração precisa de uma API compatível com assinatura externa ou de outro caminho de requisição.
A versão usava originalmente a configuração compile do Gradle e listava o Maven Central e o
JCenter como fontes de instalação. Essas eram as instruções de instalação para 0.0.2, não uma
configuração de build atual. Seu fluxo de trabalho em segundo plano era:
- Implementar um listener de Assembly para receber o progresso do upload, a conclusão do upload, a conclusão do processamento, falhas de upload e falhas de atualização de status.
- Criar o cliente Android e uma Assembly assíncrona associada ao contexto e ao listener da activity.
- Anexar uma imagem local e adicionar um Step
/image/resize, com largura e altura de 75 pixels eresize_strategydefinido comopad. - Enviar a Assembly e continuar com outras tarefas enquanto o listener informa o progresso dela. A conclusão do upload e o processamento bem-sucedido são eventos separados.
O exemplo antigo misturava os nomes de variáveis androidAsyncAssembly e assembly e não é uma activity
utilizável para copiar em um projeto atual. O exemplo menor a seguir preserva a operação de
redimensionamento e mostra a fronteira de assinatura posterior, sem depender do ciclo de vida de
uma activity.
Ele usa o SDK Android 0.2.0 com o SDK Java 2.2.4, ambos publicados no Maven Central. Essas
são versões posteriores, não as versões anunciadas em 2018. O POM publicado do artefato Android
omite suas declarações de dependências, então não presuma que adicionar apenas o AAR instala as
dependências dele. Para uma integração Android completa, use a lista de dependências do
build Android com tag
e verifique-a no build do seu app.
Este helper aceita um SignatureProvider implementado pela integração de backend que você já tem. Ele
não contém nem um segredo nem um endpoint de assinatura:
import com.transloadit.android.sdk.AndroidTransloadit;
import com.transloadit.sdk.Assembly;
import com.transloadit.sdk.SignatureProvider;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public final class ImageUpload {
private ImageUpload() {}
public static AndroidTransloadit createClient(
String authKey, SignatureProvider approvedSignatures) {
return new AndroidTransloadit(authKey, approvedSignatures);
}
public static void addImage(Assembly assembly, File image) {
assembly.addFile(image, "image");
Map<String, Object> stepOptions = new HashMap<>();
stepOptions.put("width", 75);
stepOptions.put("height", 75);
stepOptions.put("resize_strategy", "pad");
assembly.addStep("resize", "/image/resize", stepOptions);
}
}
O provider recebe os parâmetros serializados e retorna a assinatura do backend para exatamente esses
bytes, ou lança uma exceção se a autorização ou a assinatura falhar. Seu servidor precisa impor os
Steps ou o Template permitidos, os destinos, os limites de arquivo e uma expiração curta. Ele não
deve assinar um corpo JSON arbitrário só porque quem chama está logado. Para um fluxo de trabalho
fixo, um Template selecionado pelo servidor, com
allow_steps_override desativado, pode manter as
instruções de processamento sob controle do servidor. Não envie o Auth Secret de volta ao provider.
Em um app Android, a API posterior cria um objeto AndroidAssembly com
newAssembly(listener, context), em que o listener implementa AndroidAssemblyListener.
Essa Assembly pode ser passada para ImageUpload.addImage e depois enviada com saveAsync().
O callback de progresso se chama onUploadProgress. Mantenha o trabalho de rede fora da thread de UI e
vincule os callbacks ao ciclo de vida real do app. Verifique o status da resposta e hasError(), além de
tratar exceções; uma resposta de erro da API não é necessariamente lançada como exceção.
O helper acima cobre a configuração do cliente e a configuração da imagem; ele não implementa o
agendamento em segundo plano nem verifica o comportamento de pausar e retomar em um dispositivo.
Para detalhes da versão que você integrar, consulte o código-fonte do SDK Android e a sua referência de API. A versão original facilitou a integração de uploads no Android; manter a assinatura no seu backend é essencial ao levar esse fluxo de trabalho para um app hoje.
