Flutter Android de 64 bits: Entonces, ¿Qué molestia?

Eduardo Coto
9 junio, 2019

. . .

Hola, este artículo es una traducción de otro artículo originalmente escrito por TruongSinh Tran-Nguyen y lo pueden encontrar aquí.

ACTUALIZACIÓN: El equipo de Flutter está trabajando tan duro como puede, para lograr AAB universal (y luego APK «fat»). Puedes ver el progreso en PR #33696 , intenta y da tu opinión si puedes. Mientras tanto, no te preocupes por la advertencia de Google Play Store.

Desde principios de mayo de 2019, ha habido preocupaciones sobre la advertencia de Google Play acerca de «no cumplir con el requisito de Play 64-bits». Siguiendo los problemas en el GitHub de Flutter, verás que hay varios problemas duplicados con respecto a esto (ejemplo #18494 y #31922 ), cada uno con preguntas repetidas, que ya han respondidas en comentarios anteriores. En esta publicación, te resumiré todo en un simple diagrama de flujo y te explicaré cada nodo en el diagrama de flujo en detalle a continuación.

Flutter incorporado en la aplicación de Android existente

Si tu sigues el wiki oficial Agregar Flutter a aplicaciones existentes o las instrucciones más avanzadas Cómo agregar Flutter a su aplicación de producción de Android (descargo de responsabilidad: soy el autor), no hay nada que puedas hacer que conozcas, además de crear solo el apk de 32 bits / AAB utilizando el filtro ABI.

release {
        
    ...
            ndk{
                abiFilters "armeabi-v7a"
            }
}

Es posible que este cambio no sea significativo al principio, pero tan pronto como la aplicación use una biblioteca de terceros con archivos binarios precompilados (archivos .so, como Mapbox), sin este cambio, tu aplicación se bloqueará en un dispositivo de 64 bits.

Porque no hay nada que puedas hacer que yo sepa, realmente lo digo en serio. Intenté copiar manualmente libflutter.so desde arm64-v8a, pero no funcionó, porque además de libflutter.so, flutter también requiere un snapshot AOT de Dart, y el snapshot AOT de 32 bits no es compatible con el tiempo de ejecución de 64 bits.

Abort message: ‘[FATAL:flutter/runtime/dart_vm.cc(416)] Error 
while initializing the Dart VM: Snapshot not compatible with the 
current VM configuration: the snapshot requires ‘product 
use_bare_instructions no-”asserts” causal_async_stacks arm-eabi 
softfp’ but the VM has ‘product use_bare_instructions 
no-”asserts” causal_async_stacks arm64-sysv’

Usuarios en China Continental NO usan Google Play para distribuir

China continental bloquea toda la infraestructura relacionada con Google, incluyendo Google Play (y http://flutter.dev ), por lo tanto, si vas a servir a los usuarios de ahí, no tiene sentido que uses Google Play, que a su vez no tienes ningún motivo para preocuparte por la advertencia de Google Play. Del mismo modo, si estás distribuyendo tus aplicaciones utilizando distribuciones alternativas , de nuevo, no tienes porqué preocuparte por la advertencia de Google Play.

Lo que debes tener en cuenta es, si debes admitir solo dispositivos de 64 bits. Lo que significa que solo es compatible con dispositivos de 64 bits, y es que cualquier dispositivo de 32 bits que ejecute tu aplicación se bloqueará de inmediato. La aplicación de 32 bits que se ejecuta y el dispositivo con capacidad para 64 bits puede o no ser óptimo, pero por el momento no deberías prestar mucha atención a esto. Simplemente apégate al apk / AAB de 32 bits hasta que el equipo de Flutter haga cambios.

Ignorando la advertencia de Google Play

La advertencia de Google Play es como una advertencia obsoleta, a veces útil, a veces molesta. Si tu estás dispuesto a ignorar la advertencia, por todos los medios, hazlo. Esta advertencia es un aviso avanzado, y solo llegará a partir de agosto de 2019. El equipo de Flutter tiene 3 meses para reaccionar, ve, ora y espera.

Construye apks / AABS separados para 32 bits y 64 bits

flutter build apk --release --target-platform=android-arm

y

flutter build apk --release --target-platform=android-arm64

Estos comandos producirán 2 apks diferentes (y lo mismo se aplica a flutter build appbundle). Sube estos apks / AABS a la versión de su aplicación en Google Play, se resolverá y distribuirá la arquitectura correcta para cada dispositivo.

Conclusión

Bueno, la conclusión es el diagrama de flujo que vistes al principio de este artículo. Por el momento, mi recomendación personal es seguir solo con 32 bits, no te preocupes por la advertencia de Google Play Store. El equipo de Flutter está trabajando tan duro como pueden para lograr un AAB universal (y luego un APK «fat»). Ve el progreso en PR #33696 , intenta y da tu opinión si puedes.

6

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Comunidades en Español