bundletool
es la herramienta subyacente que Android Studio, el complemento de Android para Gradle y Google Play usan para compilar un Android App Bundle. bundletool
puede convertir un paquete de aplicación en los diversos APK que se implementan en dispositivos.
Los paquetes del SDK de Android (ASB) y sus APKs se compilan con bundletool
. También está disponible como herramienta de línea de comandos, por lo que puedes compilar paquetes de aplicación y de SDK por tu cuenta y volver a crear la compilación del servidor de Google Play de los APKs de tu app o los APKs de tu SDK habilitado para el entorno de ejecución.
Descargar bundletool
Si aún no lo hiciste, descarga bundletool
del repositorio de GitHub.
Cómo compilar y probar un paquete de aplicación
Puedes usar Android Studio o la herramienta de línea de comandos de bundletool
para compilar tu Android App Bundle y probar la generación de APKs desde este paquete de aplicación.
Cómo compilar un paquete de aplicación
Usa Android Studio y el complemento de Android para Gradle para compilar y firmar un Android App Bundle.
Sin embargo, si no es posible usar el IDE (por ejemplo, porque estás usando un servidor de compilación continua), también puedes compilar el paquete de tu aplicación desde la línea de comandos y firmarlo con jarsigner
.
Para obtener más información para compilar paquetes de aplicación con bundletool
, consulta Cómo compilar un paquete de aplicación con bundletool.
Cómo generar un conjunto de APKs desde tu paquete de aplicación
Una vez que hayas creado tu Android App Bundle, deberás probar cómo lo usa Google Play para generar los APKs y cómo se comportan estos cuando se implementan en un dispositivo.
Existen dos maneras de probar tu paquete de aplicación:
- Usa la herramienta de línea de comandos de
bundletool
de forma local. - Usa un segmento de pruebas para subir el paquete a Play Console mediante Google Play.
En esta sección, se explica cómo usar bundletool
para probar de forma local el paquete de tu aplicación.
Cuando bundletool
genera los APKs desde el paquete de aplicación, se incluyen los APKs generados en un contenedor llamado archivo de conjunto de APK, que usa la extensión de archivo .apks
. A fin de generar un conjunto de APK para todas las configuraciones del dispositivo que admite tu app desde el paquete correspondiente, usa el comando bundletool build-apks
, como se muestra a continuación:
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Si quieres implementar los APKs en un dispositivo, también deberás incluir la información de firma de tu app, como se muestra en el siguiente comando. Si no especificas la información de firma, bundletool
intentará firmar tus APKs por ti con una clave de depuración.
bundletool build-apks --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks --ks=/MyApp/keystore.jks --ks-pass=file:/MyApp/keystore.pwd --ks-key-alias=MyKeyAlias --key-pass=file:/MyApp/key.pwd
En la siguiente tabla, se describen con mayor detalle las diversas marcas y opciones que puedes configurar con el comando bundletool build-apks
:
Tabla 1: Opciones para el comando bundletool build-apks
Marca | Descripción |
---|---|
--bundle=path |
(Obligatorio) Especifica la ruta de acceso al paquete de aplicación que compilaste con Android Studio. Para obtener más información, lee Cómo compilar tu proyecto. |
--output=path |
(Obligatorio) Especifica el nombre del archivo .apks de salida, que contiene todos los artefactos APK de tu app. Para probar los artefactos de este archivo en un dispositivo, sigue los pasos de la sección sobre cómo implementar APKs en un dispositivo conectado.
|
--overwrite |
Reemplaza cualquier archivo de salida existente por la ruta de acceso que especifiques mediante la opción --output . Si no incluyes esta marca y el archivo de salida ya existe, obtendrás un error de compilación.
|
--aapt2=path |
Especifica una ruta de acceso a AAPT2 personalizada.
De forma predeterminada, bundletool incluye su propia versión de AAPT2.
|
--ks=path |
(Opcional) Especifica la ruta de acceso al almacén de claves de implementación que se usa para firmar los APKs. Si no incluyes esta marca, bundletool intentará firmar tus APKs con una clave de firma de depuración.
|
--ks-pass=pass:password o --ks-pass=file:/path/to/file |
Especifica la contraseña de tu almacén de claves. Si especificas una contraseña en texto sin formato, califícala con pass: .
Si pasas la ruta de acceso a un archivo que contiene la contraseña, califícala con file: . Si especificas un almacén de claves con la marca --ks sin especificar --ks-pass , bundletool te solicitará una contraseña desde la línea de comandos.
|
--ks-key-alias=alias |
Especifica el alias de la clave de firma que deseas usar. |
--key-pass=pass:password o --key-pass=file:/path/to/file |
Especifica la contraseña para la clave de firma. Si especificas una contraseña en texto sin formato, califícala con pass: .
Si pasas la ruta de acceso a un archivo que contiene la contraseña, califícala con file: . Si esta contraseña es idéntica a la del almacén de claves en sí, puedes omitir esta marca. |
--connected-device |
Indícale a bundletool que compile los APK que se orientan a la configuración de un dispositivo conectado. Si no incluyes esta marca, bundletool generará APK para todas las configuraciones del dispositivo que admite tu app.
|
--device-id=serial-number |
Si tienes más de un dispositivo conectado, usa esta marca para especificar el ID de serie del dispositivo en el que desees implementar tu app. |
--device-spec=spec_json |
Proporciona una ruta de acceso a un archivo .json que especifique la configuración del dispositivo al que deseas apuntar. Para obtener más información, consulta la sección sobre Cómo crear y usar archivos JSON de especificación de dispositivo.
|
--mode=universal |
Establece el modo en universal . Usa esta opción si deseas que bundletool compile un solo APK que incluya todos los recursos y el código de tu app, de manera que el APK sea compatible con todas las configuraciones del dispositivo compatibles con tu app.
Nota: Ten en cuenta que estos APKs son más grandes que los optimizados para una configuración de un dispositivo en particular. Sin embargo, son más fáciles de compartir con verificadores internos que, por ejemplo, quieran probar tu app en varias configuraciones de dispositivos. |
--local-testing
|
Habilita tu paquete de aplicación para pruebas locales.
Las pruebas locales permiten realizar ciclos de prueba iterativos y rápidos sin necesidad de subirlos a los servidores de Google Play.
Para ver un ejemplo de cómo probar la instalación del módulo con la marca |
Cómo implementar APKs en un dispositivo conectado
Una vez que generes un conjunto de APK, bundletool
puede implementar la combinación correcta de APK de ese conjunto en un dispositivo conectado.
Por ejemplo, si tienes un dispositivo conectado que ejecuta Android 5.0 (nivel de API 21) o versiones posteriores, bundletool
envía el APK base, los APKs del módulo de funciones y los APKs de configuración necesarios para ejecutar tu app en ese dispositivo. De manera alternativa, si tu dispositivo conectado ejecuta Android 4.4 (nivel de API 20) o versiones anteriores, bundletool
busca un APK múltiple compatible para implementarlo en el dispositivo.
Para implementar tu app desde un conjunto de APK, usa el comando install-apks
y especifica la ruta de acceso del conjunto de APK por medio de la marca --apks=/path/to/apks
, como se muestra en el siguiente comando. Si tienes varios dispositivos conectados, debes agregar la marca --device-id=serial-id
para especificar el dispositivo de destino.
bundletool install-apks --apks=/MyApp/my_app.apks
Cómo generar un conjunto de APK específicos del dispositivo
Si no quieres compilar un conjunto de APKs para todas las configuraciones del dispositivo que admite tu app, puedes compilar APKs que se orienten solo a la configuración de un dispositivo conectado por medio de la opción --connected-device
, como se muestra en el siguiente comando.
Si tienes varios dispositivos conectados, debes incluir la marca --device-id=serial-id
para especificar el dispositivo de destino.
bundletool build-apks --connected-device --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Cómo generar y usar archivos JSON de especificación de dispositivo
bundletool
puede generar un conjunto de APK que se oriente a una configuración del dispositivo especificada por un archivo JSON. Para generar primero un archivo JSON para un dispositivo conectado, ejecuta el siguiente comando:
bundletool get-device-spec --output=/tmp/device-spec.json
bundletool
crea un archivo JSON para tu dispositivo en el directorio de la herramienta. Luego, puedes pasar el archivo a bundletool
para generar un conjunto de APKs que se oriente solo a la configuración descrita en ese archivo JSON de la siguiente manera:
bundletool build-apks --device-spec=/MyApp/pixel2.json --bundle=/MyApp/my_app.aab --output=/MyApp/my_app.apks
Cómo crear manualmente una especificación de dispositivo JSON
Si no tienes acceso al dispositivo para el que deseas crear un conjunto de APK específico (por ejemplo, si quieres probar tu app con un dispositivo que no tienes a mano), puedes crear manualmente un archivo JSON con el siguiente formato:
{
"supportedAbis": ["arm64-v8a", "armeabi-v7a"],
"supportedLocales": ["en", "fr"],
"screenDensity": 640,
"sdkVersion": 27
}
Luego puedes pasar este JSON al comando bundle extract-apks
, como se describe en la sección anterior.
Cómo extraer los APK específicos del dispositivo de un conjunto de APK existente
Si tienes un conjunto de APK existente y quieres extraer de él un subconjunto de APK que se orienten a una configuración del dispositivo específica, puedes usar el comando extract-apks
y establecer una especificación de dispositivo JSON, de la siguiente manera:
bundletool extract-apks --apks=/MyApp/my_existing_APK_set.apks --output-dir=/MyApp/my_pixel2_APK_set.apks --device-spec=/MyApp/bundletool/pixel2.json
Cómo medir los tamaños de descarga estimados de los APKs en un conjunto de APKs
Para medir los tamaños de descarga estimados de los APKs en un conjunto de APK de la manera en que se publicarían comprimidos por medio de la conexión, usa el comando get-size total
:
bundletool get-size total --apks=/MyApp/my_app.apks
Puedes modificar el comportamiento del comando get-size total
con las siguientes marcas:
Tabla 2: Opciones para el comando get-size total
Marca | Descripción |
---|---|
--apks=path |
(Obligatorio) Especifica la ruta de acceso al archivo de conjunto de APK existente del cual se mide el tamaño de descarga. |
--device-spec=path |
Especifica la ruta al archivo de especificaciones del dispositivo (de get-device-spec o construido manualmente) que se debe usar para la coincidencia.
Puedes especificar una ruta de acceso parcial para evaluar un conjunto de configuraciones.
|
--dimensions=dimensions
| Especifica las dimensiones que se usan cuando se calculan las estimaciones de tamaño. Acepta una lista separada por comas de: SDK , ABI , SCREEN_DENSITY y LANGUAGE . Para medir en todas las dimensiones, especifica ALL .
|
--instant |
Mide el tamaño de descarga de los APK habilitados de manera instantánea, en lugar de los APK instalables. De manera predeterminada, bundletool mide los tamaños de descarga de los APK instalables.
|
--modules=modules |
Especifica una lista de módulos separados por comas en el conjunto de APK para tener en cuenta en la medición. El comando bundletool incluye automáticamente los módulos dependientes para el conjunto especificado. De manera predeterminada, el comando mide el tamaño de descarga de todos los módulos instalados durante la primera descarga.
|
Cómo compilar un paquete de aplicación con una dependencia de paquete de SDK (experimental)
Puedes compilar tu Android App Bundle con una dependencia de paquete del SDK de Android (ASB) desde la línea de comandos y firmarla con jarsigner.
Cada módulo de paquete de aplicación incluye un archivo de búfer de protocolo de módulo (.pb
): runtime_enabled_sdk_config.pb
. Este archivo contiene la lista de SDK de los que depende un módulo de paquete de aplicación. Para obtener la definición completa de este archivo, consulta el archivo runtime_enabled_sdk_config.proto
.
Para compilar un paquete de aplicación con una dependencia de paquete de SDK, sigue los pasos de la sección sobre cómo compilar un paquete de aplicación con bundletool y agrega un archivo runtime_enabled_sdk_config.pb
al archivo ZIP de cada módulo de la app con código y recursos compilados.
Estos son algunos campos destacados en el archivo runtime_enabled_sdk_config.pb
:
Resumen de certificado: Es el resumen SHA-256 del certificado de la clave que se usa para firmar los APK del SDK. Corresponde al certificado del archivo
SdkMetadata.pb
en formato de archivo del SDK de Android.ID del paquete de recursos: Es el ID del paquete al que se reasignan todos los recursos de este SDK cuando se generan APKs para incorporar el SDK en la app. De esta manera, se habilita la retrocompatibilidad.
Un SDK solo puede aparecer en un módulo. Si varios módulos dependen del mismo SDK, se debe anular la duplicación de la dependencia, y esta se debe mover al módulo básico. Los diferentes módulos no pueden depender de las diferentes versiones del SDK.
Cómo generar APKs a partir de un paquete de aplicación con una dependencia de paquete de SDK (experimental)
Para generar APKs desde tu paquete de aplicación, sigue los pasos de la sección sobre cómo generar un conjunto de APKs desde tu paquete de aplicación o la sección sobre cómo generar un conjunto de APKs específico del dispositivo y proporciona el comando bundletool build-apks
con los SDK de los que depende la app. Estos SDK se pueden proporcionar en formato de paquete de SDK o de archivo de SDK.
Puedes proporcionar los SDK como paquetes de SDK si agregas la marca --sdk-bundles
de la siguiente manera:
bundletool build-apks --bundle=app.aab --sdk-bundles=sdk1.asb,sdk2.asb \ --output=app.apks
Puedes proporcionar los SDK como archivos de SDK si agregas la marca --sdk-archives
de la siguiente manera:
bundletool build-apks --bundle=app.aab --sdk-archives=sdk1.asar,sdk2.asar \ --output=app.apks
Cómo generar APKs a partir de un paquete de aplicación con una dependencia de paquete de SDK para dispositivos que no son compatibles con la biblioteca de SDK
Los dispositivos anteriores a Android 13 no admiten la instalación de bibliotecas de SDK ni su ejecución en el entorno de ejecución de SDK. Bundletool oculta la complejidad de la retrocompatibilidad y genera múltiples variantes de tu conjunto de APK a partir del mismo paquete de aplicación cuando ejecutas bundletool build-apks
con la opción --sdk-bundles
o --sdk-archives
.
Las variantes se segmentan para dispositivos con diferentes capacidades:
- Hay una variante para dispositivos más nuevos, en la que el SDK se instala como un paquete independiente de la app y los APKs de la app no incluyen ningún contenido de SDK.
- Hay una o más variantes para dispositivos más antiguos, en las que los APK del SDK se agregan al conjunto de APK de la app como divisiones adicionales de APK. Los APKs del SDK pertenecen al paquete de la app. En este caso, el entorno de ejecución del SDK se emula en el tiempo de ejecución de la app en el dispositivo.
Así como generas APKs para paquetes de aplicaciones sin dependencias de SDK, bundletool extract-apks
y bundletool install-apks
devuelven un conjunto filtrado de APKs de la mejor variante para el dispositivo conectado o para la configuración del dispositivo proporcionada.
Para casos de uso avanzados en los que solo te interesa generar divisiones de APK a partir de un archivo del SDK para una app específica destinada a dispositivos más antiguos, usa el comando bundletool build-sdk-apks-for-app
de la siguiente manera:
bundletool build-sdk-apks-for-app --app-properties=app-properties.json \ --sdk-archive=sdk.asar --output=sdk.apks
El archivo app-properties
debe contener los campos descritos en el archivo runtime_enabled_sdk_config.proto
. El archivo app-properties
se verá de la siguiente manera:
{
"package_name": "com.my.app",
"version_code": 1234,
"min_sdk_version": 21,
"resources_package_id": 0x7e
}
El comando bundletool build-sdk-apks-for-app
genera el subconjunto de APKs de la app que corresponde al contenido del SDK debajo del nombre del paquete de la app. Puedes combinar estos APKs con otros APKs que contengan el contenido de la app. Por ejemplo, si las compilas por separado y de forma incremental, y se instalan juntas en un dispositivo que no admite el entorno de ejecución de SDK.
Cómo compilar y probar un paquete de SDK (experimental)
Puedes usar bundletool
a fin de compilar un ASB y probar la generación de los archivos necesarios para la instalación y la distribución.
Cómo compilar un paquete de SDK
Puedes compilar tu ASB desde la línea de comandos y firmarla con jarsigner.
Para compilar un paquete de SDK, sigue estos pasos:
Genera el manifiesto y los recursos del paquete del SDK en formato proto, siguiendo los mismos pasos que para un paquete de aplicación.
Empaqueta el código compilado y los recursos del SDK en un archivo ZIP base, como lo harías con un módulo de la app.
Genera un archivo
SdkModulesConfig.pb.json
y un archivoSdkBundleConfig.pb.json
que coincidan con el formato que se describe en la especificación del paquete del SDK de Android.Compila tu ASB con el comando
bundletool build-sdk-bundle
de la siguiente manera:
bundletool build-sdk-bundle --sdk-bundle-config=SdkBundleConfig.pb.json \ --sdk-modules-config=SdkModulesConfig.pb.json \ --modules=base.zip --output=sdk.asb
En la siguiente tabla, se describen con mayor detalle las diversas marcas y opciones que puedes configurar con el comando bundletool build-sdk-bundle
.
Tabla 3: Opciones para el comando bundletool build-sdk-bundle
Marca | Descripción |
---|---|
--modules |
(Obligatorio) Es el archivo de módulo desde el que quieres compilar el ASB final. |
--output |
(Obligatorio) Es la ruta de acceso en la que deseas que se compile el ASB. |
--sdk-modules-config |
(Obligatorio) Es la ruta de acceso a un archivo JSON que describe la configuración de los módulos del SDK. Si quieres obtener información para dar formato al archivo JSON, consulta la especificación del paquete del SDK de Android. |
--sdk-bundle-config |
Es la ruta de acceso a un archivo JSON que describe la configuración del paquete de SDK. Si quieres obtener información para dar formato al archivo JSON, consulta la especificación del paquete del SDK de Android. |
--metadata-file |
Es el archivo en el que se incluyen los metadatos para el ASB.
El formato del valor de la marca es <bundle-path>:<physical-file> , en el que <bundle-path> denota la ubicación del archivo dentro del directorio de metadatos del paquete de SDK y <physical-file> es un archivo existente que contiene los datos sin procesar que se almacenarán. La marca se puede repetir.
|
--overwrite |
Si se establece, esta opción reemplaza cualquier resultado existente. |
Cómo generar APKs a partir de un paquete de SDK
Después de compilar tu ASB, puedes probar un paquete de SDK de forma local si generas sus APKs con el comando bundletool build-sdk-apks
, como se muestra en el siguiente código:
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks
Cuando bundletool
genera los APKs desde el paquete del SDK, la herramienta incluye los APKs en un contenedor llamado archivo de conjunto de APK, que usa la extensión de archivo .apks
. bundletool
genera un solo APK independiente del paquete del SDK que se orienta a todas las configuraciones del dispositivo.
Si quieres implementar el ASB en un dispositivo, también debes incluir la información de firma de tu app, como se muestra en el siguiente comando:
bundletool build-sdk-apks --sdk-bundle=sdk.asb --output=sdk.apks \ --ks=keystore.jks \ --ks-pass=file:/keystore.pwd \ --ks-key-alias=KeyAlias \ --key-pass=file:/key.pwd
En la siguiente tabla, se describen con mayor detalle las diversas marcas y opciones que puedes configurar con el comando bundletool build-sdk-apks
.
Tabla 4: Opciones para el comando bundletool build-sdk-apks
Marca | Descripción |
---|---|
--sdk-bundle |
(Obligatorio) Es la ruta de acceso al paquete de SDK. Debe tener la extensión .asb .
|
--output |
(Obligatorio) De forma predeterminada, es la ruta de acceso en la que deseas crear el archivo de conjunto de APK. De manera alternativa, si usas --output-format=DIRECTORY , esta es la ruta de acceso al directorio donde deseas que se almacenen los APKs generados.
|
--ks |
Es la ruta de acceso al almacén de claves que deseas usar para firmar los APKs generados. |
--ks-key-alias |
Es el alias de la clave que se usará en el almacén de claves para firmar los APKs generados. |
--key-pass |
Es la contraseña de la clave del almacén de claves que se usará para firmar los APKs generados. Si pasas la contraseña en texto sin formato, debes agregar el prefijo Si no se configura esta marca, se prueba la contraseña del almacén de claves. Si eso falla, la terminal de la línea de comandos te solicitará una contraseña. |
--ks-pass |
Es la contraseña del almacén de claves que se usará para firmar los APKs generados. Si pasas la contraseña en texto sin formato, debes agregar el prefijo Si no se configura esta marca, la terminal de la línea de comandos te solicitará una contraseña. |
--aapt2 |
Es la ruta de acceso al objeto binario AAPT2 que se usará. |
--output-format |
El formato de salida de los APKs generados. De forma predeterminada, esta opción se establece en APK_SET , que genera los APKs en el archivo de conjunto de APK que se crea. Si se configura en DIRECTORY , da como resultado los APKs en el directorio que especifica --output . |
--verbose |
Si se establece, esta opción imprime información adicional sobre la ejecución del comando en el resultado estándar. |
--version-code |
Es el código de versión del SDK. Este es el código de versión que usa la plataforma de Android para instalar el APK, no la versión del SDK. Esta opción se puede establecer en un valor arbitrario. Si no se configura, se establece de forma predeterminada en 0. |
--overwrite |
Si se establece, esta opción reemplaza cualquier resultado existente. |
Cómo implementar, extraer y medir el tamaño de los APKs del SDK
Puedes seguir los mismos pasos que usan las apps para implementar APKs en un dispositivo conectado, extraer APKs específicos del dispositivo de un conjunto de APK existente y medir los tamaños de descarga estimados de los APKs en un conjunto de APK
Cómo generar un archivo SDK a partir de un paquete de SDK
Después de subir tu ASB a tu canal de distribución, por ejemplo, Google Play, el ASB se transforma en un archivo del SDK de Android (.asar
) para su distribución a desarrolladores de apps desde Maven. Para obtener más detalles sobre el formato, consulta la sección sobre la especificación del formato de archivo de SDK.
Después de compilar tu ASB, puedes probar la generación de un archivo del SDK de Android de forma local con el comando bundletool build-sdk-asar
, como se muestra en el siguiente código.
bundletool build-sdk-asar --sdk-bundle=sdk.asb --output=sdk.asar \ --apk-signing-key-certificate=keycert.txt
En la siguiente tabla, se describen con mayor detalle las diversas marcas y opciones que puedes configurar con el comando bundletool build-sdk-asar
.
Tabla 5: Opciones para el comando bundletool build-sdk-asar
Marca | Descripción |
---|---|
--apk-signing-key-certificate |
(Obligatorio) Es la ruta de acceso al certificado de firma de APK del SDK. Este es el certificado correspondiente a la clave que usaste para firmar los APKs en el comando build-sdk-apks .
|
--output |
(Obligatorio) Es la ruta de acceso en la que deseas crear el archivo .asar .
|
--sdk-bundle |
(Obligatorio) Es la ruta de acceso al paquete de SDK. Debe tener la extensión .asb .
|
--overwrite |
Si se establece, esta opción reemplaza cualquier resultado existente. |
Formatos de SDK habilitados para el entorno de ejecución (experimental)
Los SDK habilitados para el entorno de ejecución presentan dos formatos de archivo de Android:
- El paquete del SDK de Android (
.asb
), que se usa para publicar el SDK habilitado para el entorno de ejecución en las tiendas de aplicaciones - El archivo del SDK de Android (
.asar
), que se usa para distribuir el SDK habilitado para el entorno de ejecución en Maven
Formato de paquete del SDK de Android
Un paquete de SDK es un formato de publicación para los SDK habilitados para el entorno de ejecución. Contiene todos los recursos y el código del SDK, incluido el código de las bibliotecas de las que depende. No incluye el código ni los recursos de otros SDK habilitados para el entorno de ejecución del que depende el SDK.
Un paquete del SDK de Android (ASB) es un archivo ZIP firmado con la extensión .asb
. El código y los recursos del SDK se organizan de manera similar a lo que encontrarías en un APK. Un ASB también contiene varios archivos de configuración que ayudan a generar los APKs instalables.
![](https://developer.android.google.cn/static/studio/images/command-line/asb-format.png?authuser=5&hl=es)
En la siguiente lista, se describen con más detalle algunos de los archivos ASB:
SdkBundleConfig.pb
: Se trata de un archivo de configuración en formato .proto que contiene la lista de SDK habilitados para el entorno de ejecución de los que depende tu SDK. Para ver la definición completa, consulta el archivosdk_bundle_config.proto
.modules.resm
: Se trata de un archivo ZIP que contiene todos los datos necesarios para generar los APK desde el SDK.SdkModulesConfig.pb
: Se trata de un archivo de configuración en formato proto. Este archivo contiene el nombre del SDK, la versión y el nombre de clase del punto de entrada del SDK para el framework (SandboxedSdkProvider
). Si quieres ver la definición completa, consulta el archivosdk_modules_config.proto
.base/
: Se trata del módulo único que contiene el código y los recursos del SDK.manifest/
: Se trata del manifiesto del SDK en formato proto.dex/
: Se trata del código compilado en formato DEX. Se pueden proporcionar varios archivos DEX.res/
,lib/
,assets/
: Estos directorios son idénticos a los de un APK típico. Las rutas de acceso de estos directorios se conservan cuando se generan los APK del SDK.root/
: Este directorio almacena archivos que luego se trasladan al directorio raíz de los APK del SDK. Por ejemplo, puede incluir recursos basados en Java que tu SDK carga con el métodoClass.getResource()
. También se conservan las rutas de acceso dentro de este directorio.
BUNDLE-METADATA
: Este directorio incluye archivos de metadatos que contienen información útil para herramientas o tiendas de aplicaciones. Estos archivos de metadatos pueden incluir asignaciones de ProGuard y la lista completa de los archivos DEX de tu SDK. Los archivos incluidos en este directorio no están empaquetados en los APK de tu SDK.
Formato de archivo del SDK de Android
Un archivo del SDK de Android es el formato de distribución de un SDK habilitado para el entorno de ejecución en Maven. Es un archivo ZIP con la extensión de archivo .asar
. Contiene toda la información que necesitan las herramientas de compilación de apps para generar un Android App Bundle que depende del SDK habilitado para el entorno de ejecución.
![](https://developer.android.google.cn/static/studio/images/command-line/asar-format.png?authuser=5&hl=es)
En la siguiente lista, se describen con más detalle algunos de los archivos del SDK de Android:
SdkMetadata.pb
: Se trata de un archivo de configuración en formato proto que contiene el nombre del SDK, la versión y el resumen del certificado de la clave que se usó para firmar los APKs generados para este SDK. Para ver la definición completa, consulta el archivosdk_metadata.proto
.modules.resm
: Se trata de un archivo ZIP que contiene todos los datos necesarios para generar los APK desde el SDK. Es lo mismo que el archivo.resm
en el paquete del SDK de Android.AndroidManifest.xml
: Se trata del archivo de manifiesto del SDK en formato XML de texto.
Recursos adicionales
Si quieres obtener más información para usar bundletool
, mira Paquetes de aplicación: prueba de paquetes con bundletool y Play Console.