es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo construir un apk único (no “.apks”) pero dividido por “abi” desde un archivo aab?

Originalmente uso variantes de compilación para construir dos archivos APK: myapp-armv7.apk y myapp-arm64.apk, para las arquitecturas de 32 bits y 64 bits, respectivamente. Por ejemplo, el archivo APK de 32 bits solo contiene archivos nativos .so para 32 bits, mientras que el archivo APK de 64 bits solo contiene aquellos para 64 bits.

Sin embargo, ahora no solo quiero estos dos archivos APK, sino también un paquete myapp.aab. La pregunta es, ¿cómo construir los archivos APK de 32 bits y 64 bits a partir de este paquete AAB?

He intentado https://stackoverflow.com/questions/53040047/generate-apk-file-from-aab-file-android-app-bundle. Sin embargo, si uso --mode=universal, aunque obtengo un archivo APK instalable, contiene tanto archivos .so de 32 bits como de 64 bits en su interior, por lo que es realmente grande y no deberíamos usarlo. Si no uso esa bandera, obtengo un montón de archivos APK (es decir, un archivo .apks), pero, por supuesto, un usuario solo debería descargar un archivo .apk y hacer clic en “instalar”, por lo que tampoco es factible.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para construir los archivos apk de 32 y 64 bits a partir del paquete myapp.aab, puedes seguir los siguientes pasos:

    1. Instala la última versión de Android SDK Build-Tools.
    2. Asegúrate de haber configurado el sistema de construcción necesario y los archivos de configuración para generar los archivos apk.

    3. Abre una ventana de comandos y navega hasta el directorio donde se encuentra el paquete myapp.aab.

    4. Utiliza el siguiente comando de bundletool para generar los archivos apk:

      bundletool build-apks --bundle=myapp.aab --output=myapp.apks --mode=universal --ks=myapp.keystore --ks-pass=pass:mypassword --ks-key-alias=mykey --key-pass=pass:mykeypassword
      

      Este comando generará un archivo .apks que contiene todos los archivos apk pero con divisiones diferentes. Ten en cuenta que debes reemplazar los valores de myapp.keystore, mypassword, mykey y mykeypassword con tu propia información de almacén de claves.

    5. Extrae los archivos apk para las arquitecturas de 32 y 64 bits utilizando el siguiente comando:

      bundletool get-device-spec --output=device-spec.json
      bundletool extract-apks --apks=myapp.apks --device-spec=device-spec.json --output-dir=apks
      

      Este comando extraerá los archivos apk en el directorio apks basándose en las especificaciones del dispositivo definidas en el archivo device-spec.json.

    6. Después de que el proceso de extracción se haya completado, deberías ver dos archivos apk con arquitecturas diferentes en el directorio apks, como myapp-armv7.apk y myapp-arm64.apk.

    7. Finalmente, puedes distribuir estos dos archivos apk a los usuarios para que los instalen en sus dispositivos.

Comments are closed.