Lanzamiento de nuestro SDK de Android recién reescrito
En abril de 2018, presentamos una versión reescrita del SDK de Android. Aunque nuestro SDK de Java ya podía usarse en proyectos de Android, y existía una integración anterior para Android, la reescritura ofrecía una API más coherente con el resto de nuestros SDK.

Basada en el SDK de Java, la integración para Android añadió el envío asíncrono de Assemblies y soporte para pausar y reanudar subidas. Una aplicación podía seguir respondiendo al usuario mientras se subían y procesaban los archivos, y recibir callbacks de progreso y finalización durante el proceso.
Actualización de seguridad, septiembre de 2026: El ejemplo original de
0.0.2 pasaba un
Auth Secret al SDK dentro de una actividad de Android.
Eso distribuiría el secreto junto con la aplicación. Los ejemplos ejecutables de actividades se han
reemplazado más abajo; mantén el Auth Secret en un backend de confianza, incluso si la aplicación se
distribuye internamente. El backend debe autenticar al usuario y autorizar la subida antes de firmar
cualquier parámetro. Sigue nuestra
guía de Signature Authentication y exige firmas para el Workspace o
Template que use la aplicación.
El cliente de Android 0.0.2 no exponía un constructor
SignatureProvider. Mantener el código de la actividad basado en secretos de esa versión
y simplemente añadir una URL de backend no resolvería el problema; una integración necesita una
API compatible con la firma externa u otra vía para enviar solicitudes.
La versión usaba originalmente la configuración compile de Gradle e indicaba
Maven Central y JCenter como fuentes de instalación. Esas eran las instrucciones de instalación de
0.0.2, no una configuración de compilación actual. Su flujo de trabajo en
segundo plano era el siguiente:
- Implementa un listener de Assembly para recibir el progreso de la subida, la finalización de la subida, la finalización del procesamiento, los fallos de subida y los fallos de actualización de estado.
- Crea el cliente de Android y una Assembly asíncrona asociada al contexto y al listener de la actividad.
- Adjunta una imagen local y añade un
Step de
/image/resize, con un ancho y un alto de 75 píxeles yresize_strategyestablecido enpad. - Envía la Assembly y continúa con otras tareas mientras el listener informa de su progreso. La finalización de la subida y el procesamiento correcto son eventos distintos.
El ejemplo antiguo mezclaba los nombres de variables androidAsyncAssembly y
assembly y no es una actividad que puedas copiar y usar en un proyecto actual.
El siguiente ejemplo, más breve, conserva la operación de redimensionamiento y muestra la
separación de responsabilidades de firma de las versiones posteriores, sin depender del ciclo de
vida de una actividad.
El ejemplo usa el SDK de Android 0.2.0 con el SDK de Java
2.2.4, ambos publicados en Maven Central. Son versiones posteriores, no las
versiones anunciadas en 2018. El POM publicado del artefacto de Android omite las declaraciones de
sus dependencias, así que no supongas que añadir solo el AAR instala sus dependencias.
Para una integración completa con Android, usa la lista de dependencias de la
compilación de Android etiquetada
y verifícala en la compilación de tu aplicación.
Esta función auxiliar acepta un SignatureProvider implementado por tu integración
existente con el backend. No contiene ningún secreto ni endpoint de firma:
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);
}
}
El proveedor recibe parámetros serializados y devuelve la firma del backend para esos bytes exactos,
o lanza una excepción si falla la autorización o la firma. Tu servidor debe hacer cumplir las
restricciones sobre los Steps o el Template permitidos, los destinos, los límites de archivos y un
plazo de caducidad breve. No debe firmar un cuerpo JSON arbitrario solo porque quien realiza la
solicitud haya iniciado sesión. Para un flujo de trabajo fijo, un
Template seleccionado por el servidor con
allow_steps_override desactivado puede mantener las instrucciones de procesamiento bajo el
control del servidor. No devuelvas el Auth Secret al proveedor.
En una aplicación de Android, la API posterior crea una AndroidAssembly con
newAssembly(listener, context), donde el listener implementa AndroidAssemblyListener.
Esa Assembly puede pasarse a ImageUpload.addImage y luego enviarse con
saveAsync(). El callback de progreso se llama onUploadProgress.
Mantén las operaciones de red fuera del hilo de la interfaz de usuario y vincula los callbacks al
ciclo de vida real de la aplicación. Inspecciona el estado de la respuesta y
hasError(), además de gestionar las excepciones; una respuesta de error de la
API no necesariamente se lanza como una excepción.
La función auxiliar anterior abarca la configuración del cliente y de la imagen; no implementa
la programación de tareas en segundo plano ni verifica el comportamiento de pausa y reanudación
en un dispositivo.
Para conocer los detalles de la versión que integres, consulta el código fuente del SDK de Android y su referencia de la API. La versión original facilitó la integración de subidas en Android; mantener la firma en tu backend es esencial al incorporar ese flujo de trabajo en una aplicación actual.
