Flutter: Admite APK con binarios de 32 y 64 bits dentro de ellos

Creado en 15 jun. 2018  ·  286Comentarios  ·  Fuente: flutter/flutter

usando flutter build apk --release --flavor pro make archivo apk, pero arm64-v8a no incluye libflutter.so file.so falla el inicio de la aplicación.
cuando agrego --target-platform=android-arm64 : flutter build apk --release --flavor pro --target-platform=android-arm64 , el archivo apk incluye so flie. Pero el lanzamiento de la aplicación falla en la CPU de 32 bits.
¿Qué puedo hacer? El archivo apk se puede ejecutar en 64 y 32 cpu @ mravn-google

/System.err(15263): java.lang.UnsatisfiedLinkError: Couldn't load flutter from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.jianzhibao.ka.enterprise-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.jianzhibao.ka.enterprise-1, /vendor/lib, /system/lib]]]: findLibrary returned null

Creo nuevo proyecto, depuro o lanzamientos, trabajo bien. diffrece del nuevo proyecto de mi proyecto es que agrego un tercero so file

image

Dónde está el problema ?

crowd platform-android new feature gradle tool waiting for PR to land (fixed)

Comentario más útil

Tengo el mismo problema, la construcción para 32 bits excluirá los dispositivos de 64 bits, aunque se ejecuta en ellos. Construir para 64 especificando --target-platform android-arm64 funciona en dispositivos de 64 bits, pero falla en dispositivos de 32 bits. Además, Google restringirá la carga de apks para que sean de 64 bits en 2019.

Equipo de Flutter, ¡resuelve este problema básico!

Todos 286 comentarios

AFAIK, actualmente, Flutter solo agregará libflutter.so a una carpeta de plataforma seleccionada en el APK de lanzamiento. La solución que funcionó para mí fue forzar build.gradle para hacer solo 32 bits (excluyendo todas las bibliotecas de 64 bits + Intel)

release {

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

cc @Hixie

@swavkulinski, ¿cómo lanzarías las aplicaciones de to a la tienda de juegos?

Tengo el mismo problema, pero flutter.so no está incluido en la carpeta "armeabi-v7a.
Solo tiene bibliotecas de terceros para x86 y armeabi-v7a, pero no arm64.
Me gustaría crear flutter solo para "armeabi-v7a con
ndk {
abiFilters "armeabi-v7a" // tampoco funciona "armeabi", "x86",
}
y establecer como plataforma de destino como @ mravn-google sugiere para android-arm.

APK sin especificar arch y no incluir bibliotecas
screen shot 2018-07-26 at 21 06 53

APK con bibliotecas y sin especificaciones de brazo
screen shot 2018-07-26 at 21 10 30

APK con especificar arch e incluir bibliotecas
screen shot 2018-07-26 at 21 12 58

¿Alguna sugerencia de cómo depurar otros pasos?

@xxseabxx tengo el mismo problema

Tengo el mismo problema, la construcción para 32 bits excluirá los dispositivos de 64 bits, aunque se ejecuta en ellos. Construir para 64 especificando --target-platform android-arm64 funciona en dispositivos de 64 bits, pero falla en dispositivos de 32 bits. Además, Google restringirá la carga de apks para que sean de 64 bits en 2019.

Equipo de Flutter, ¡resuelve este problema básico!

Equipo de Flutter, ¡resuelve este problema básico!

Entonces, ¿me equivoco al decir que flutter solo puede admitir apk de lanzamiento para 32 o 64 bits, pero no para ambos?

algo de suerte aqui?

Creo que el comentario de xxseabxx podría funcionar, pero no lo he probado ...

También tengo el mismo problema.

En todas mis dependencias, aislé al menos un paquete que causaba el problema, llené un informe de error en consecuencia: https://github.com/azihsoyn/flutter_mlkit/issues/36

Para aislar el problema, para cada una de mis dependencias / complementos:

1) Crea un proyecto de aleteo vacío

2) Reemplace main.dart con

el código de ejemplo del paquete (por ejemplo: https://pub.dartlang.org/packages/flutter_html_view#-example-tab-)

3) Actualice pubspec.yaml en consecuencia

4) correr

$ flutter build apk

Resultó que el que estaba creando era flutter_mlkit.

Quiero poder apuntar a arquitecturas de 32 y 64.

Tiene el mismo problema. --target-platform = android-arm64 funciona para mí, pero me gustaría admitir 32 bits hasta que Google desconecte 32 bits

Equipo de Flutter, ¡resuelve este problema básico!

muchos terceros SDK no funcionan, creo que es urgente

Puedo reproducir esto al agregar Mapbox a la aplicación de Android.

También tengo el mismo problema. Uso baiduMap en mi proyecto, el modelo bebug está bien, suelte el bloqueo.
user flutter build apk --release --target-platform = android-arm64 en mi teléfono está bien, pero el teléfono de 32 bits se bloqueará. Equipo de Flutter, resuelva este problema lo antes posible.

Similar a https://github.com/azihsoyn/flutter_mlkit/issues/36 , funciona para mí, el apk puede ejecutarse tanto en teléfonos de 32 bits como de 64 bits. @pazconocimiento

esto debería ser un problema muy importante para la versión apk

¿Hay alguna solución para este problema?

  1. extraer lib/armeabi-v7a/libflutter.so de $<FLUTTER>/bin/cache/artifacts/engine/android-arm-release/flutter.jar
  2. copiar archivo armeabi-v7a/libflutter.so en $<project>/android/jniLibs/armeabi-v7a/
  3. modificar $<project>/android/app/build.gradle como se muestra a continuación:
android {
...
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
            ndk {
                abiFilters "arm"
            }
        }
        debug {
            ndk {
                abiFilters "arm"
            }
        }
}
    }

Para NDK, la cadena de herramientas de 64 bits requiere minSdkVersion> = 21.

Esto me desbloqueó (con el conjunto minSdkVersion adecuado):

minSdkVersion = 16

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

minSdkVersion = 21

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

Elimina todos los abiFilters, me funciona.

@zoechi @Hixie golpe suave. También me encuentro con esto cuando trato de integrarme con una aplicación existente, que es nuestro caso de uso más importante en este momento.

minddk = 21, pero aún no se ha actualizado la plataforma de destino

@neiljaywarner un pulgar hacia arriba sobre el comentario inicial sería más efectivo para aumentar la prioridad

  1. extraer lib/armeabi-v7a/libflutter.so de $<FLUTTER>/bin/cache/artifacts/engine/android-arm-release/flutter.jar
  2. copiar archivo armeabi-v7a/libflutter.so en $<project>/android/jniLibs/armeabi-v7a/
  3. modificar $<project>/android/app/build.gradle como se muestra a continuación:
android {
...
    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
            ndk {
                abiFilters "arm"
            }
        }
        debug {
            ndk {
                abiFilters "arm"
            }
        }
}
    }

Esto no funcionó para mí: generó un APK al que le faltaba la carpeta lib (y por lo tanto tenía la mitad del tamaño de mi apk anterior).

También descubrimos que si implementamos la única solución de 32 bits que algunos han publicado (por ejemplo, https://medium.com/flutterpillarub/flutter-app-couldnt-find-libflutter-so-c95ad81cbccd) da como resultado -aplicación eficaz. En particular, en una prueba en un Samsung S6 y S9, vemos un desplazamiento muy lento en una gran lista.

No creo que el problema sea solo el arm64 faltante libflutter.so .

Intenté agregar la biblioteca que faltaba al APK compilando para arm64, copiando libflutter.so y luego reconstruyendo y agregando manualmente la biblioteca arm64 al APK, realineando y volviendo a firmar:

flutter build apk --target-platform=android-arm64
mkdir -p tmp/lib/arm64-v8a
cp build/app/intermediates/transforms/mergeJniLibs/release/0/lib/arm64-v8a/libflutter.so tmp/lib/arm64-v8a/
flutter build apk
cp build/app/outputs/apk/release/app-release.apk tmp/
cd tmp
aapt add app-release.apk lib/arm64-v8a/libflutter.so
zipalign 4 app-release.apk app-release-aligned.apk
apksigner sign --ks keystore.jks app-release-aligned.apk

El APK resultante tiene libflutter.so para armeabi-v7a y arm64-v8a, pero se bloquea al iniciarse con el siguiente error:

12-22 09:53:29.274 7457 7457 F flutter : [FATAL:flutter/runtime/dart_vm.cc(403)] Error while initializing the Dart VM: Snapshot not compatible with the current VM configuration: the snapshot requires 'product no-type_checks no-asserts no-error_on_bad_type sync_async reify_generic_functions arm-eabi softfp' but the VM has 'product no-type_checks no-asserts no-error_on_bad_type sync_async reify_generic_functions arm64-sysv'

Supongo que también se deben enviar recursos de instantáneas separados para cada arco. Por ahora, la creación de dos APK separados es la única solución que me funciona.

Este es un problema bastante horrible con el que encontrarse después de pasar tiempo escribiendo una interfaz en Flutter solo para descubrir que la versión no construye correctamente la apk.

¿Voy a tener el mismo problema una vez que empiece a usar iOS?

¿A qué hora puede solucionar este problema?

¿Es esto solo que nuestros archivos gradle no saben cómo agrupar todos los bits correctos para ambos? @ jason-simmons @cbracken ¿ podría saberlo?

¿O @FaisalAbid podría?

¿Es esto solo que nuestros archivos gradle no saben cómo agrupar todos los bits correctos para ambos? @ jason-simmons @cbracken ¿ podría saberlo?

¿O @FaisalAbid podría?

Por bits correctos, supongo que te refieres a más que libflutter.so, según este comentario: https://github.com/flutter/flutter/issues/18494#issuecomment -449557182

En este momento, creo que la única solución es crear APK de 32 bits hasta que haya una solución. Sin embargo, tenga en cuenta que hemos visto problemas de rendimiento con 32 bits (aunque código no óptimo con listas grandes).

Me está funcionando bien crear APK separados de 64 y 32 bits y subir ambos a Google (se encargan de proporcionar el APK correcto a los dispositivos correctos automáticamente).

Haces una compilación con abiFilters establecido en armeabi-v7a y --target-platform=android-arm , subes ese APK y luego haces otra compilación con abiFilters establecido en arm64-v8a y --target-platform=android-arm64 y sube ese también.

Tenga en cuenta que también debe usar un código de versión diferente para cada APK, por lo que debe incluir algo en el código de versión para indicar que es de 64 o 32 bits, al igual que lo haría para el nivel de DPI o API.

Actualmente, la mejor opción es configurar abiFilters condicionalmente desde la plataforma de destino

        ndk {
            if (project.hasProperty('target-platform') &&
               project.property('target-platform') == 'android-arm64') {
                abiFilters 'arm64-v8a'
            } else {
                abiFilters 'armeabi-v7a'
            }
        }

El problema que tengo es que ahora necesito subir dos apks con diferentes códigos de versión
La verdadera solución para esto es poder crear paquetes de Android con múltiples plataformas de destino. Los paquetes de aplicaciones están en flutter master actualmente, pero no pude hacer que funcionara para esto

Play Store requerirá 64 bits a partir del 1 de agosto.

Suponiendo que todavía habrá dispositivos de 32 bits que deseen ejecutar nuestras aplicaciones después del 1 de agosto, ¿cómo asegurarse de que 32 bits Y 64 bits estén incluidos en las versiones de lanzamiento?

https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

_Todas las aplicaciones nuevas y las actualizaciones de aplicaciones que incluyen código nativo deben proporcionar versiones de 64 bits además de versiones de 32 bits al publicar en Google Play._

Este requisito se cumple fácilmente en este momento con las aplicaciones de Flutter simplemente compilando dos APK, uno para dispositivos de 32 bits y otro para dispositivos de 64 bits, y subiendo ambos como parte de la misma versión. Google Play proporcionará automáticamente el APK apropiado al dispositivo apropiado. Estoy haciendo esto y funciona bien. Estoy de acuerdo con otros comentaristas en que no es _ideal_, pero en mi opinión, no es un gran problema hacer que esto sea parte de su flujo de trabajo.

Sería genial si esto se pudiera solucionar en un futuro próximo. El enfoque de múltiples APK es solo una solución temporal hasta que Flutter compila APK con múltiples versiones de arquitectura .so, al igual que lo hacen otros proyectos de Android.

Requiere mucho manejo manual (códigos de versión, sistema de compilación, automatización) y se suponía que los paquetes de aplicaciones de Android aliviarían a los desarrolladores de los pasos de compilación manual.

Actualmente, este problema solo menciona las versiones de 32 y 64 bits, pero también hay x86, x64 y algunos desarrolladores en China todavía hablan sobre la compatibilidad con mips.

¿No debería flutter admitir la mayor parte de las 7 arquitecturas de Android con el tamaño de apk más pequeño posible fuera de la caja?

https://proandroiddev.com/reducing-apk-size-by-using-abi-filters-and-apk-split-74a68a885f4e

@MarcelEdward Debería, sin embargo, en mi humilde opinión, el tamaño del APK no es el aspecto más importante, dado que Android ahora es totalmente compatible con los paquetes de aplicaciones (aab) y los usuarios finales descargarán una compilación optimizada para su teléfono de todos modos.

Para el tamaño de un APK específico de la plataforma que debe ser lo más optimizado / pequeño posible.

Durante el desarrollo, puede resultar doloroso reinstalar un APK de tamaño completo cada vez que cambie el código nativo. Un truco consiste en utilizar abifilters para limitar la compilación de depuración a la arquitectura de sus teléfonos de prueba. Sin embargo, no estoy seguro de si esto es tan relevante ahora, dado que Flutter admite la recarga en caliente.

https://github.com/flutter/flutter/issues/17829 Se trata de los bundels de la aplicación aap, pero solo puedo encontrar 32 bits cuando compilo con flutter build apk

Entonces, cuando entiendo a richt, tenemos que construir dos versiones serperadas con al menos 32 y 64, subirlas a ambas y luego la aplicación Stroe construirá milagrosamente un aap para que el consumidor obtenga la versión optimizada para su arquitectura específica.

@MarcelEdward Play Store no crea un paquete de aplicaciones. Solo sirve el APK apropiado para el dispositivo según la arquitectura del dispositivo. Esto ha sido compatible desde mucho antes de que aparecieran los paquetes de aplicaciones, no solo para la arquitectura sino también para el tamaño / resolución de la pantalla, el nivel de API y otros diferenciadores. Puedes leer más sobre esto aquí .

Puede ver un buen ejemplo de esto al echar un vistazo a las 13 variantes de Google Maps aquí (tenga en cuenta que APKMirror no tiene nada que ver con esta funcionalidad más que ser una forma fácil de obtener una lista de las variantes para una aplicación determinada). Play Store ofrece el APK apropiado de estas variantes para su dispositivo en función de sus características.

Si usó un paquete de aplicaciones, solo tendría que cargar el paquete una vez en lugar de cargar varios APK, pero tengo entendido que Play Store genera las diversas variantes de APK para usted, por lo que el resultado final es similar pero hay menos trabajo para que usted mismo se automatice. (Los paquetes de aplicaciones también admiten los nuevos módulos cargados dinámicamente, pero esa es otra historia).

Entonces, parece que la característica deseada aquí es poder ejecutar flutter build con dos --target-platform argumentos y hacer que flutter coloque automáticamente ambas arquitecturas en el APK, ¿es así?

@Hixie ¿no se genera libflutter.so solo una vez por versión de flutter y tipo de lanzamiento? En cuyo caso tendrías 8 variantes (32,64, x86, x86_64). Creo que esos simplemente deberían seleccionarse cuando se crea una aplicación de flutter y se filtra dependiendo de cuál sea el teléfono objetivo o el caso de uso. Gradle puede filtrar bastante bien.

La arquitectura que tiene un teléfono es algo de muy bajo nivel, no tengo ni idea de qué arquitectura tiene la gente que usa nuestras aplicaciones. Flutter compila 32 bits cuando no se especifica ninguna arquitectura, así que supongo que 32 bits sirve para todos. Pero ahora el juego la tienda requerirá 64 bits en agosto, por lo que cuando 32 bits se ajustan a todos y se requieren 64 bits, ¿esos dos deberían ir a una versión de lanzamiento?

Yo no tengo un teléfono Android, así que asumiré que funcionará cuando lo haga en un simulador. Hasta que los usuarios de nuestra aplicación indiquen lo contrario.

@ MarcelEdward2 No se trata solo de 32 bits frente a 64 bits. Hay cuatro arquitecturas compatibles con el NDK de Android moderno:

  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64

Por el momento, Flutter tiene por defecto la creación de un APK que contiene código nativo compilado solo para armeabi-v7a. Esto funcionará bien en arm64-v8a, aunque con una penalización de rendimiento en comparación con algo compilado para arm64-v8a de forma nativa. Sin embargo, se ejecutará bajo un emulador ARM en x86 o x86_64, asumiendo que el dispositivo incluye uno. Si el dispositivo x86 / x86_64 no tiene un emulador ARM, no se ejecutará en absoluto.

Una vez más, el requisito de agosto no requiere que produzca un APK o AAB universal que contenga ambas arquitecturas. Simplemente requiere que cada lanzamiento que realice contenga (al menos) un APK adecuado para dispositivos de 64 bits. Las modificaciones en Flutter para hacer posible la construcción de un APK / AAB universal con soporte para varias arquitecturas serían buenas en términos de flujo de trabajo del desarrollador, pero puede cumplir con este requisito con o sin tales mejoras.

Editado para agregar: personalmente, creo que el soporte de primera clase para paquetes de aplicaciones es la mejor manera de mejorar la situación de múltiples arcos.

appbundle parece que la solución en el futuro ... Supongo que el siguiente paso es este: # 29303

Según tengo entendido, este error está muy relacionado con pasar a .aab como formato de salida predeterminado para flutter build y hacer que .aab incluya compilaciones de 32 y 64 bits:
https://developer.android.com/studio/projects/dynamic-delivery

Tengo entendido que es posible que parte de este trabajo ya esté en progreso. @dnfield podría saberlo.

/ cc @mklim

Parece que .aab ayudaría, pero puede que no sea realmente necesario. ¿El problema es tan simple como agregar los binarios del brazo de 32 y 64 bits al APK?

Ahh ya veo. Es porque potencialmente también necesitaríamos incluir la instantánea AOT para el arco de destino. Y ahora mismo lo ponemos debajo de los activos, no colocamos una versión por arquitectura debajo de libs . Si pudiéramos poner la instantánea de AOT en la carpeta libs específica de la arquitectura que podría funcionar, de lo contrario, querríamos usar el formato .aab por esa razón.

Queremos hacer esto de todos modos para respaldar la creación de .AAR para casos de uso de add2app. Lo pincharé.

ndk {
            if (project.hasProperty('target-platform') &&
               project.property('target-platform') == 'android-arm64') {
                abiFilters 'arm64-v8a'
            } else {
                abiFilters 'armeabi-v7a'
            }
        }

Esto funcionó para mí después de días de resolución de problemas.

La solución publicada por @AppleEducate no funciona cuando intento ejecutar la aplicación en el emulador.

Ponlo en la sección de lanzamiento.

Esta fue mi solución:

  1. en app gradle
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
  1. ejecutar flutter build apk --release --target-platform=android-arm

  2. sube app-armeabi-v7a-release.apk a Play Store

  3. incremento versionCode

  4. ejecutar flutter build apk --release --target-platform=android-arm64

  5. sube app-arm64-v8a-release.apk a Play Store

Google Play Store servirá la aplicación de acuerdo con la arquitectura del dispositivo. Los dispositivos de 32 bits están contentos, los dispositivos de 64 bits están contentos y estoy contento de saber que el tamaño de mi APK sigue siendo relativamente pequeño y al mismo tiempo sirve para ambas arquitecturas.

Si incluimos soporte para ambas arquitecturas en el mismo APK, espere que el tamaño de su aplicación sea de más de 10 MB

@ edTheGuy00 Dudo que sea interesante lo grande que es la carga en Play Store. Los teléfonos Android pedirán un espacio libre temporal de más de 125 de todos modos y se negarán a usar almacenamiento externo para desempacar. Eso es todo lo que los usuarios sabrán sobre el tamaño de la aplicación. No importa cuánto use una aplicación después de la instalación. Solicitará el espacio libre de más de 125 MB para la instalación.

Haga posible incluir todas las arquitecturas posibles. No me importa si la carga en Play Store será de 250 MB.

Sería bueno si flutter usara el espacio de gigabites en el almacenamiento externo para instalarlo en un teléfono Android. Eso es si flutter puede influir en la instalación en un teléfono Android

Creo que el script flutter.gradle debería incluir todas las ABI en el APK final (APK universal) y luego activar de forma predeterminada los APK divididos. Las herramientas de Android seleccionarán el APK correcto para cargar en el dispositivo conectado y todo estará bien. El APK universal final se puede cargar en la tienda de juegos o en los APK divididos para cada ABI.

Mientras tanto, como solución, puede agregar esto al final de su build.gradle en su directorio android\app .

// Include both 32bit and 64bit arm libflutter.so files into your APK
project.afterEvaluate {
    assembleRelease.doLast {
        String src
        if(project.hasProperty('target-platform') &&
            project.property('target-platform') == 'android-arm64') {
            // If we are building the 64bit then we also want to add the 32bit libflutter.so
            src = "$flutterRoot/bin/cache/artifacts/engine/android-arm-release/flutter.jar"
        }else{
            // If we are building the opposite (32bit), we include the 64bit libflutter.so
            src = "$flutterRoot/bin/cache/artifacts/engine/android-arm64-release/flutter.jar"
        }
        copy {
            from zipTree(src)
            include 'lib/*/libflutter.so'
            into "$buildDir/intermediates/jniLibs/release/0/"
        }
    }
}

También recomiendo agregar esto a su sección buildTypes > release . Esto asegurará que su APK de lanzamiento contenga ambas ABI.

ndk {
    abiFilters 'armeabi-v7a', 'arm64-v8a'
}

Después de una colaboración con

project.afterEvaluate {
    assembleRelease.doFirst {

        String src
        if(project.hasProperty('target-platform') &&
                project.property('target-platform') == 'android-arm64') {
            // If we are building the 64bit then we also want to add the 32bit libflutter.so
            src = "$flutterRoot/bin/cache/artifacts/engine/android-arm-release/flutter.jar"
        }else{
            // If we are building the opposite (32bit), we include the 64bit libflutter.so
            src = "$flutterRoot/bin/cache/artifacts/engine/android-arm64-release/flutter.jar"
        }
        copy {
            from zipTree(src)
            include 'lib/*/libflutter.so'
            into "src/main/jniLibs/"
            eachFile {
                it.path = it.path.replaceFirst("lib/", "")
            }
        }
    }
}

Actualización: después de intentar ejecutar este APK en el dispositivo, falla y, por lo tanto, no es una solución viable. El error es "Error al inicializar la máquina virtual Dart: la instantánea no es compatible con la configuración actual de la máquina virtual:
la instantánea requiere 'product use_bare_instructions no- "afirma" causal_async_stacks arm-eabi softfp'
pero la máquina virtual tiene 'product use_bare_instructions no- "afirma" causal_async_stacks arm64-sysv' "

Ahh ya veo. Es porque potencialmente también necesitaríamos incluir la instantánea AOT para el arco de destino. Y ahora mismo lo ponemos debajo de los activos, no colocamos una versión por arquitectura debajo de libs . Si pudiéramos poner la instantánea de AOT en la carpeta libs específica de la arquitectura que podría funcionar, de lo contrario, querríamos usar el formato .aab por esa razón.

Queremos hacer esto de todos modos para respaldar la creación de .AAR para casos de uso de add2app. Lo pincharé.

@dnfield, ¿ya ha tenido algo de éxito en esto?

Trabajando a través de la pieza enchufable en este momento. Hemos estado tratando de priorizar algunas partes para solucionar los problemas de Android X, pero deberíamos ver algo más a partir de eso.

@gerryhigh y yo estábamos investigando esto. Por favor ignore mis últimas respuestas. El problema es solo el hecho de que libflutter.so no está incluido para 64 bits, pero para AOT debe ejecutar el proceso de compilación dos veces, una para 32 bits y otra para 64 bits. Luego, obtiene dos conjuntos de código Dart compilado en los activos de su aplicación, así como dos versiones de libflutter.so. Creo que el objetivo final sería configurar tareas de compilación para Flutter para que ejecute los dos pasos de compilación separados y tenga la configuración de APK dividida automáticamente.

Pero por el momento, la única solución es ejecutar la compilación dos veces y cargar varios APK en Play Store.

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

Esto se puede lograr mejor habilitando APK divididos. Se pueden encontrar más detalles aquí: https://developer.android.com/studio/build/configure-apk-splits

@slightfoot sí, esta es la mejor solución que he encontrado hasta ahora como se menciona en mi comentario https://github.com/flutter/flutter/issues/18494#issuecomment -477502287

@slightfoot si lo entiendo correctamente, no sería posible construir un APK universal ya que algunos códigos se encuentran en la carpeta de activos que no permiten dividir archivos de acuerdo con la arquitectura de destino como la carpeta lib.

La instantánea construida para cada arquitectura es diferente. Simplemente copie el motor libflutter.so hará que la instantánea no se pueda cargar si la arquitectura de la instantánea no coincide con la arquitectura del motor flutter.
Por lo tanto, actualmente no hay forma de que creemos un apk universal que contenga todas las arquitecturas a menos que separe los archivos de instantáneas e incluya el archivo de instantáneas para cada arquitectura.

Estoy un poco confundido en cuanto a por qué esto es incluso un problema.

Las compilaciones de depuración crean libflutter.so en x86_64, x86, armeabi-v7a y arm64-v8a.

Las versiones de lanzamiento deberían hacer exactamente lo mismo.

AGP (Android Gradle Plugin) ya incluye la funcionalidad para filtrar arquitecturas, por lo que si un usuario desea hacerlo para una versión de lanzamiento, puede modificar su build.gradle.

@eseidel @dnfield Realmente no creo que esto se resuelva con los paquetes de aplicaciones de Android; aún no son la salida predeterminada de Android y, cuando se ejecutan desde las aplicaciones IDE, se usarán durante bastante tiempo, pero estoy seguro.

Los AAB son otra razón por la que Flutter debería incluir todas las arquitecturas de libflutter.para que Play Store pueda filtrar qué arquitectura entrega a los dispositivos.

@athornz, el problema no es con libflutter.so sino con su código de dart compilando hasta un AOT snapshot compilaciones de depuración incluyen la máquina virtual de Dart, por lo que todo su código de dart solo se ejecuta JIT en la máquina virtual , pero las compilaciones de lanzamiento compilan su código de dardos en una instantánea y colocan esa instantánea en una carpeta de activos. Idealmente, la instantánea debería compilarse para cada arquitectura y colocarse junto a libflutter.so pero ese no es el caso en este momento. Entonces, si bien puede incluir libflutter.so para todas las arquitecturas, la instantánea solo funcionará para cualquier arquitectura para la que se compiló.

¿Algún plan para solucionar este problema?

Google Play Store solicita al desarrollador que brinde soporte de 64 bits después del 1 de agosto de 2019.

https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

El requisito de 64 bits: lo que significa para los desarrolladores
A partir del 1 de agosto de 2019:
_Todas las aplicaciones nuevas y las actualizaciones de aplicaciones que incluyen código nativo deben proporcionar versiones de 64 bits además de versiones de 32 bits al publicar en Google Play._
Extensión: Google Play seguirá aceptando solo actualizaciones de 32 bits para juegos existentes que usen Unity 5.6.6 o versiones anteriores hasta agosto de 2021.
A partir del 1 de agosto de 2021:
Google Play dejará de ofrecer aplicaciones sin versiones de 64 bits en dispositivos con capacidad de 64 bits, lo que significa que ya no estarán disponibles en Play Store en esos dispositivos.
Esto incluirá juegos creados con Unity 5.6.6 o anteriores.

@trevorwang ya podemos construir 64 bits y subirlos junto con 32 bits a Play Store. Entonces eso no es un problema.

@slightfoot ¿Quieres decir que tengo que crear otro APK de 64 bits y subirlo a Google Play?

Como saben, Google Play no está disponible en China continental. Preferimos un APK universal para admitir todas las plataformas.

@trevorwang prácticamente. Así es como lo hago https://github.com/flutter/flutter/issues/18494#issuecomment -477502287

Lo dividido no funciona en el archivo gradfle. Tienes que hacer algo con uno de los archivos build.gradle para que flutter sepa cómo compilar diferentes arquitecturas. O Google Play rechazará la segunda compilación.

Gracias @ edTheGuy00

Pero realmente necesitamos un APK universal que incluya todos los abis para China Market.

@trevorwang , puede compilar para cada objetivo e indicar explícitamente para qué arquitectura es cada APK. Así es como se hace para la mayoría de los sitios espejo de APK.

La limitación de 64 bits es solo una limitación de Google Play Store. Aún puede implementar el APK de armeabi-v7a solo y todos podrán ejecutar su aplicación.

La creación de APK separados por arquitectura es una solución alternativa y definitivamente no es una solución para todos.

Una vez que la limitación de 64 bits de Google Play entre en vigencia, este problema afectará a la mayoría de los desarrolladores de Flutter, por lo que realmente necesitamos una solución que permita múltiples arquitecturas dentro de un paquete / apk.

Solo un recordatorio rapido

El equipo de Flutter usa el número de "Me gusta" en un problema de GitHub como guía para su prioridad.

Creo que este tema debería tener una alta prioridad.

Gracias por el trabajo de @gerryhigh y @slightfoot

Agregué flutter a una aplicación existente y solucioné este problema con la siguiente solución.
_Por favor, agregue esto al módulo de su aplicación del proyecto anfitrión._

Este es el script para el modo de depuración, cámbielo en consecuencia para su lanzamiento.

project.afterEvaluate {
    assembleDebug.doLast {
        def flutterRoot = System.getenv("FLUTTER_HOME")
        def archTypes = ["arm", "arm64"]
        archTypes.forEach { item ->
            copy {
                from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
                include 'lib/*/libflutter.so'
                into "$buildDir/intermediates/jniLibs/debug/"
                eachFile {
                    it.path = it.path.replaceFirst("lib/", "")
                }
            }
        }
    }
}

¿Algún desarrollo reciente?

Lo que terminé haciendo, ya que quería

  • apks separados para cada arquitectura
  • no tener que modificar el versionCode manualmente
  • ejecutar un solo comando para producir los apks
  1. Agregué esto a gradle. Agrega 1 o 2 al final del código de versión, por lo que la versión 1004 convierte en 10041 para arm y 10042 para arm64.
ext.platformCodes = ['android-arm': 1, 'android-arm64' : 2]
android.applicationVariants.all { variant ->
    variant.outputs.each { output ->
        int code = 0
        if (project.hasProperty('target-platform')) {
            code = project.ext.platformCodes.get(project.property('target-platform'))
        }
        output.versionCodeOverride = variant.versionCode * 10 + code
    }
}
  1. Para producir los apks, uso un comando de terminal más largo (que puede poner en un script). Ejecuta la compilación dos veces y crea copias de los apks al final:
flutter clean; flutter build apk --release --target-platform=android-arm; mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-arm32.apk; flutter build apk --release --target-platform=android-arm64; mv build/app/outputs/apk/release/app-release.apk build/app/outputs/apk/release/app-release-arm64.apk;

Espero que esto ayude.

Así que este es un problema que también estoy teniendo ... Estoy construyendo un paquete de aplicaciones en lugar de una apk y cuando lo he estado subiendo a Google, me da una advertencia y no me deja probarlo alfa.

He estado usando codemagic para hacerlo, ¿hay alguna manera de firmarlo y ponerlo en un paquete? o usar codemagic para salpicarlo?

Estoy enfrentando el mismo problema que pensé que no debería existir en absoluto.

¿Cómo es que esto está en los "Objetivos" de Milestone?

P2: Estas son tareas que creemos que vale la pena solucionar en los próximos años. Incluye problemas que hemos identificado que podrían bloquear el envío completo de aplicaciones amplias para el consumidor, problemas de corrección y errores relacionados con el pulido y la calidad. La fecha de este hito es completamente arbitraria y solo tiene la intención de ordenar el hito de manera apropiada.

Ya es un problema crítico y se convertirá en un verdadero obstáculo a finales de este año una vez que Google haga cumplir la limitación de 64 bits.

He alcanzado el hito en esto. Aún no hay una fecha sólida.

Para ser claros: es posible, pero difícil, cumplir hoy con las nuevas directrices. Queremos hacerlo más fácil.

Entonces, el método @andreidiaconu funcionó para mí siempre que construya la aplicación manualmente.

Pero he estado usando codemagic para construir e implementar.

Así que esto es un desperdicio, Flutter necesita construirlo.

De momento a mí personalmente no me importa mucho si es complicado. Si es complicado, se automatizará mediante un script. La pregunta es si es posible y cómo porque Google Play Console me advierte:

Esta versión no cumple con el requisito de 64 bits de Google Play
Los siguientes APK o paquetes de aplicaciones están disponibles para dispositivos de 64 bits, pero solo tienen código nativo de 32 bits: 6.
A partir del 1 de agosto de 2019, todas las versiones deben cumplir con el requisito de 64 bits de Google Play.
Incluya código nativo de 64 y 32 bits en su aplicación. Utilice el formato de publicación de Android App Bundle para asegurarse de que la arquitectura de cada dispositivo reciba solo el código nativo que necesita. Esto evita aumentar el tamaño total de su aplicación.

No quiero una solución que necesite diferentes códigos de versión y quiero una solución que funcione con Android App Bundles (AAB).

Advertencia
Esta versión no cumple con el requisito de 64 bits de Google Play

Los siguientes APK o paquetes de aplicaciones están disponibles para dispositivos de 64 bits, pero solo tienen código nativo de 32 bits: 3.

¿Alguna solución?

He alcanzado el hito en esto. Aún no hay una fecha sólida.

Para ser claros: es posible, pero difícil, cumplir hoy con las nuevas directrices. Queremos hacerlo más fácil.

¿Deben actualizarse los documentos con instrucciones sobre cómo hacer esto tanto para apk como para paquetes de aplicaciones? Todo lo que he visto hasta ahora son montones de código y configuración que no estoy exactamente seguro de dónde poner. Probablemente podría resolverlo con un poco de prueba y error, pero no es lo ideal.

mismo problema

Gracias por el trabajo de @gerryhigh y @slightfoot

Agregué flutter a una aplicación existente y solucioné este problema con la siguiente solución.
_Por favor, agregue esto al módulo de su aplicación del proyecto anfitrión._

Este es el script para el modo de depuración, cámbielo en consecuencia para su lanzamiento.

project.afterEvaluate {
    assembleDebug.doLast {
        def flutterRoot = System.getenv("FLUTTER_HOME")
        def archTypes = ["arm", "arm64"]
        archTypes.forEach { item ->
            copy {
                from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
                include 'lib/*/libflutter.so'
                into "$buildDir/intermediates/jniLibs/debug/"
                eachFile {
                    it.path = it.path.replaceFirst("lib/", "")
                }
            }
        }
    }
}

Esta solución / solución alternativa parece muy prometedora, ¡gracias @trevorwang ! Sin embargo, tengo problemas para implementar esto en un proyecto de flutter existente. ¿Tiene un archivo build.gradle de ejemplo o algo equivalente que demuestre esto?

TENGA EN CUENTA QUE ESTO PROBABLEMENTE NO RESOLVERÁ SU PROBLEMA - VEA A CONTINUACIÓN

Gracias a la respuesta de @trevorwang y la sugerencia de @noinskit , logré incluir bibliotecas nativas de 64 bits en las versiones de lanzamiento con una pequeña adición a ./android/app/build.gradle muestra a continuación.
También puede ver el archivo completo aquí .

afterEvaluate {
    mergeReleaseJniLibFolders.doLast {
        def archTypes = ["arm-release", "arm64-release"]
        archTypes.forEach { item ->
            copy {
                from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
                include 'lib/*/libflutter.so'
                into "$buildDir/intermediates/jniLibs/release/"
                eachFile {
                    it.path = it.path.replaceFirst("lib/", "")
                }
            }
        }
    }
}

@SPodjasek gracias! Llegué a algo parecido. En mi caso, necesito cambiar assembleRelease en su fragmento a mergeReleaseJniLibFolders , de lo contrario, el archivo * .so adicional termina en "intermedios / ...", pero no en la apk final.

@noinskit Parece que mi solución anterior era propensa a errores. Después de ejecutar flutter clean , generó aab con solo bibliotecas de 32 bits. Reemplazar assembleRelease con mergeReleaseJniLibFolders parece funcionar también después de limpiar la compilación verdadera.

@SPodjasek , ¿tienes que modificar otras opciones?

Aquí está mi app.gradle

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

afterEvaluate {
    mergeReleaseJniLibFolders.doLast {
        def archTypes = ["arm-release", "arm64-release"]
        archTypes.forEach { item ->
            copy {
                from zipTree("$flutterRoot/bin/cache/artifacts/engine/android-$item/flutter.jar")
                include 'lib/*/libflutter.so'
                into "$buildDir/intermediates/jniLibs/release/"
                eachFile {
                    it.path = it.path.replaceFirst("lib/", "")
                }
            }
        }
    }
}

Mis dos directorios intermedios / jniLibs / release / arm64-v8a y armeabi-v7a tienen libflutter.so como se esperaba, pero el APK de la versión final aún falta libflutter.so en arm64-v8a.

Aquí está la captura de pantalla

flutter

@ function1983 Puedes ver mi build.gradle completo aquí .
A partir de mi versión de flutter:

[✓] Flutter (Channel beta, v1.5.4, on Linux, locale pl_PL.UTF-8)
    • Flutter version 1.5.4 at .../development/flutter
    • Framework revision b593f5167b (2 weeks ago), 2019-04-22 07:51:33 -0700
    • Engine revision ca31a7c57b
    • Dart version 2.3.0 (build 2.3.0-dev.0.1 cf4444b803)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at .../Android/Sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: .../development/android-studio/jre/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)
    • All Android licenses accepted.

[✓] Android Studio (version 3.4)
    • Android Studio at .../development/android-studio
    • Flutter plugin version 35.2.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b16-5323222)

He estado tratando de usar solución @SPodjasek 's para construir una appbundle que incluye ambas versiones 64 y 32 bits. Se compila con éxito, puedo subirlo a Google Play Console e instalarlo en teléfonos de 32 y 64 bits. Pero la aplicación se bloquea cuando se inicia en un dispositivo android-arm64 por alguna razón (parece funcionar en un viejo teléfono Android de 32 bits con el que estaba probando).

Aquí está el error que obtengo en el dispositivo de 64 bits:

Mensaje de cancelación: '[ FATAL: flutter / runtime / dart_vm.cc (416)] Error al inicializar la VM Dart: Instantánea no compatible con la configuración actual de VM: la instantánea requiere' product use_bare_instructions no- "afirma" causal_async_stacks arm-eabi softfp 'pero la máquina virtual tiene' product use_bare_instructions no- "afirma" causal_async_stacks arm64-sysv '

No estoy seguro de lo que puedo hacer ... Puede que tenga que quedarme solo con dispositivos de 64 bits por ahora.

@Torrunt ese error se debe a que el motor está tratando de ocultar la instantánea de AOT para 32 bits y encuentra una para 64.

Estamos trabajando para poder producir un AAB que tenga ambos para que la tienda pueda dividirlos correctamente.

@SPodjasek El uso de esto aumentó el tamaño de mi archivo app-release.apk de 11,1 MB a 15,7 MB

@SPodjasek El uso de esto aumentó el tamaño de mi archivo app-release.apk de 11,1 MB a 15,7 MB

Sí, ya que incluye a la fuerza libflutter.so para 32 y 64 bits. Si no lo necesita, siga con el valor predeterminado actual para incluir solo 32 bits y espere a que el equipo de flutter se ocupe de esto correctamente.

parece que hay algunas posibilidades:

  • espere hasta que el equipo de flutter resuelva el problema de la arquitectura 32 vs 64 haciendo que Google Play Store acepte las compilaciones de flutter nuevamente
  • Tenemos que limitar los dispositivos Android que se utilizan a 32 bits solamente, por lo que las aplicaciones Flutter solo se ejecutarán en dispositivos de 32 bits.
  • Tenemos que convencer a Google de que no aplique 64 bits en Play Store. (Me pregunto cuál es la diferencia entre 32 y 64 bits, ¿algo así como números más grandes?)
  • instale las 32 aplicaciones de alguna manera en dispositivos de 64 bits pero no en la tienda de juegos ...

Nota para las personas que usan --target-platform para construir por android-arm y android-arm64 separado y cargar dos APK.
Preste atención a que algunos complementos usan bibliotecas nativas que pueden apuntar a ambos, y flutter no filtra las carpetas de bibliotecas, por lo que su APK de "32 bits" también se dirigirá a arm64 y se bloqueará ya que libflutter.so no está presente y las instantáneas de AOT sí lo están. construido para armv7.

Por lo tanto, deberá filtrar explícitamente el abi de destino en su archivo build.gradle.

Creo que flutter build apk --target-platform ... lógicamente debería hacer este filtrado.

Usando la solución de @SPodjasek , recibí un error acerca de hacer coincidir arm-eabi versus arm64-sysv . Creo que la mejor solución, que funcionó para mí, es simplemente construir para 32 bits por el momento hasta que todo esté resuelto (la solución de @swavkulinski aquí ):

En su app nivel build.gradle :

android {
    // ...
    buildTypes {
        release {
            // ...
            ndk {
                abiFilters "armeabi-v7a"
            }
        }
    }
}

Resumiendo el problema del tema: no será posible compilar dicho APK tanto para armeabi-v7a como para arm64-v8a. Flutter usa instantáneas AOT que dependen de ABI, por lo que con APK, la única solución posible sería usar múltiples compilaciones de APK.
La solución sería usar App Bundles, que por ahora también tiene algunos problemas (# 31922).
Después de que # 32787 se fusionó, ahora es posible usar paquetes de aplicaciones.

¿Cómo configuro el tipo y mi archivo de destino (-t lib / another_main.dart, por ejemplo) al generar un paquete de aplicaciones de Android a través de Android Studio? oo

¡Esto será compatible a través de flutter build appbundle después de que se fusione https://github.com/flutter/flutter/pull/32787 !

@swavkulinski, ¿cómo lanzarías las aplicaciones de to a la tienda de juegos?

Todavía era posible en ese entonces. Ahora tienes que limitarlo a 64 bits. Estábamos bloqueados por la biblioteca NDK de terceros, que solo era de 32 bits.

@blasten
¿Esto también agregará soporte para flutter build apk --release ? ¿O se planea eliminar gradualmente el soporte para APK en favor de paquetes de aplicaciones a largo plazo? Me gusta bastante la relativa simplicidad del APK grueso.

@zimmi Correcto. Los paquetes de aplicaciones deberían ser el camino a seguir. Aún puede usar flutter build apk --release cuando sea necesario. ¿Qué es más simple en un APK grueso en comparación con AAB?

¿Qué es más simple en un APK grueso en comparación con AAB?

AAB no es un archivo de instalación. Android en sí no puede usarlo. Es formato de archivo solo para la tienda Google Play. Entonces necesita apk cuando:

  • Instalación directamente en el dispositivo.
  • Aplicación de distribución directa.
  • Distribución a través de cualquier otro mercado de aplicaciones, excepto Google Play Store. (Amazon y toda China).

Veo. Gracias por los antecedentes.

Además, puede extraer los APK de la AAB utilizando bundletool .

@blasten
¡Gracias por confirmar!
Respecto a la simplicidad comentar: Lo que dijo @audkar . También con los AAB, el desarrollador debe pensar en posibles escenarios de falla causados ​​por activos faltantes. Probar en todas las configuraciones de dispositivos posibles es difícil, por lo que si ocurren esas fallas, es probable que esté en producción.

El tamaño de la aplicación puede ser un precio que algunos estén dispuestos a pagar por esa tranquilidad.

Estoy seguro de que hay mejores lugares para discutir los méritos de cada enfoque que este tema, sin embargo, no quiero descarrilarlo.

/ cc @jonahwilliams, es posible que necesitemos admitir APK pesados ​​en build apk .
¿Deberíamos cambiar también el valor predeterminado por build apk ?

Definitivamente se necesita soporte de apk gordo. Hay muchas herramientas (distribución beta, etc.) que aún no funcionan con paquetes de aplicaciones.

flutter build appbundle ahora está en master, ¿alguna persona voluntaria quiere intentarlo?

Tuvimos una discusión para admitir una lista de plataformas en build apk , por lo que podría hacer algo como esto: flutter build apk --target-platform android-arm,android-arm64

@blasten Cambié al canal maestro, actualicé y construí el paquete de aplicaciones, funcionó bien. Luego lo cargó en la consola de juegos y todas las advertencias desaparecieron. (macOS 10.14.4)

¡Impresionante! Compilaré mi compilación esta noche después de realizar mis cambios.

Aunque el paquete no parece funcionar, la aplicación se bloquea cuando se descarga.

Issue: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mattetti.sounds/com.mattetti.sounds.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.mattetti.sounds.MainActivity" on path: DexPathList[[zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/base.apk", zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.arm64_v8a.apk", zip file "/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/lib/arm64, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/base.apk!/lib/arm64-v8a, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.arm64_v8a.apk!/lib/arm64-v8a, /data/app/com.mattetti.sounds-ewwlQg0QphABpwu8t14HWA==/split_config.xxhdpi.apk!/lib/arm64-v8a, /system/lib64]]

¿Parece que com.mattetti.sounds.MainActivity no está en el paquete?

No estoy seguro de por qué, ¿cómo puedo verificar por qué se eliminó?

@mattetti ¿Estás usando un módulo Flutter ? ¿ MainActivity extendiendo FlutterActivity ?

@blasten
Aquí están mis dependencias

environment:
  sdk: ">=2.2.2 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  rxdart: ^0.22.0
  shared_preferences: ^0.5.2
  http: ^0.12.0
  cached_network_image: ^0.8.0
  url_launcher: ^5.0.2

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_launcher_icons: "^0.7.0"

dependency_overrides:
  # requried for flutter_icons at this point
  image: 2.0.7

Pero también me di cuenta de que cambié el nombre del paquete de mi aplicación, pero no cambié la ruta a mi archivo MainActivity.java , que sigue siendo android/app/src/main/java/com/example/old_name/ que podría ser el problema. Mañana, intentaré cambiar el camino y empujar otro paquete.

hola @blasten , intenté construir el paquete de aplicaciones y obtuve este error

[  +48 ms] FAILURE: Build failed with an exception.
[   +3 ms] * What went wrong:
[        ] Failed to capture snapshot of input files for task ':app::flutter:package:packLibsDevRelease' property
'rootSpec$2$1' during up-to-date check.
[        ] > java.io.IOException: The filename, directory name, or volume label syntax is incorrect
[        ] * Try:
[        ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log
output. Run with --scan to get full insights.
[        ] * Get more help at https://help.gradle.org
[        ] Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
[        ] See https://docs.gradle.org/4.6/userguide/command_line_interface.html#sec:command_line_warnings
[        ] BUILD FAILED in 1m 28s

Mi proyecto usa sabor y este es el comando que ejecuto

flutter build appbundle --flavor stage -t lib/main-stage.dart -v

¿El paquete de la aplicación también incluirá mapping.txt? Al cargar paquetes de aplicaciones en Google Play Console a través de Codemagic, no se incluye mapping.txt, por lo que no se incluyen pruebas automáticas o informes previos al lanzamiento, que tiene al cargar una apk :(

entonces la pregunta es:

¿El equipo de Flutter hará una actualización para el lanzamiento de 64 bits o no antes de agosto para que podamos cargar y actualizar nuestras aplicaciones que están hechas con flutter o no?

@YazeedAlKhalaf Sí. Puede usar flutter build appbundle hoy y obtendrá un paquete de aplicaciones que contiene 32 y 64 bits.

@mattetti ¿ se

@nohli mapping.txt suena como una solicitud de función. No dude en presentar un nuevo error.

@skybur, ¿puedes ejecutar flutter doctor ? ¿Tu proyecto de Flutter es una aplicación o un módulo?

@blasten Mi proyecto es una aplicación.

Aquí está el resultado del doctor flutter

[√] Flutter (Channel master, v1.6.1-pre.68, on Microsoft Windows [Version 10.0.17763.503], locale en-US)
    • Flutter version 1.6.1-pre.68 at D:\Devs\Flutter\testappbundle\flutter
    • Framework revision d5aae54a28 (22 hours ago), 2019-05-20 23:19:18 -0400
    • Engine revision 301f560bd8
    • Dart version 2.3.1 (build 2.3.1-dev.0.0 b48c8b1d1c)

[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at D:\AndroidSDK
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = D:\AndroidSDK
    • ANDROID_SDK_ROOT = D:\AndroidSDK
    • Java binary at: D:\AndroidStudio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)
    • All Android licenses accepted.

[√] Android Studio (version 3.2)
    • Android Studio at D:\AndroidStudio
    • Flutter plugin version 31.3.1
    • Dart plugin version 181.5656
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1136-b06)

[√] VS Code, 64-bit edition (version 1.33.1)
    • VS Code at C:\Program Files\Microsoft VS Code
    • Flutter extension version 3.0.2

[!] Connected device
    ! No devices available

! Doctor found issues in 1 category.

@blasten : obteniendo el mismo error que skybur

Tratando de usar flutter build appbundle luego subir a la tienda, luego abrir desde un teléfono Android:
Choque instantáneo al abrir.

registro de adb:
05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings. 05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from. 05-22 09:40:52.404 27305 27305 E flutter : [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance. 05-22 09:40:52.404 27305 27305 F flutter : [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM. 05-22 09:40:52.404 27305 27305 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 27305 (tform.atomicdex) 05-22 09:40:52.432 27339 27339 I crash_dump64: obtaining output fd from tombstoned 05-22 09:40:52.433 1417 1417 I /system/bin/tombstoned: received crash request for pid 27305 05-22 09:40:52.434 27339 27339 I crash_dump64: performing dump of process 27305 (target tid = 27305) 05-22 09:40:52.434 27339 27339 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 05-22 09:40:52.434 27339 27339 F DEBUG : Build fingerprint: 'lge/judyln_lao_com/judyln:8.0.0/OPR1.170623.032/190501244a6e5.FGN:user/release-keys' 05-22 09:40:52.434 27339 27339 F DEBUG : Revision: '12' 05-22 09:40:52.434 27339 27339 F DEBUG : ABI: 'arm64' 05-22 09:40:52.434 27339 27339 F DEBUG : pid: 27305, tid: 27305, name: PACKAGE_NAME >>> PACKAGE_NAME <<< 05-22 09:40:52.434 27339 27339 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr -------- 05-22 09:40:52.435 27339 27339 F DEBUG : Abort message: '[FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM. 05-22 09:40:52.435 27339 27339 F DEBUG : ' 05-22 09:40:52.435 27339 27339 F DEBUG : x0 0000000000000000 x1 0000000000006aa9 x2 0000000000000006 x3 0000000000000008 05-22 09:40:52.435 27339 27339 F DEBUG : x4 0000000007d0bf68 x5 0000000007d0bf68 x6 0000000007d0bf68 x7 0000000007d0bfd8 05-22 09:40:52.435 27339 27339 F DEBUG : x8 0000000000000083 x9 8644075c81e36b5a x10 00000077ccff6a48 x11 8644075c81e36b5a 05-22 09:40:52.435 27339 27339 F DEBUG : x12 8644075c81e36b5a x13 0000000000000020 x14 ffffffffffffffdf x15 00000077ca27ec68 05-22 09:40:52.435 27339 27339 F DEBUG : x16 00000077ca2732b8 x17 00000077ca205a44 x18 0000000000000048 x19 0000000000006aa9 05-22 09:40:52.435 27339 27339 F DEBUG : x20 0000000000006aa9 x21 0000007fe4fb81b8 x22 00000077b3dffba0 x23 00000077bd29d7a0 05-22 09:40:52.435 27339 27339 F DEBUG : x24 00000077aa79a150 x25 0000000000000000 x26 0000000000000000 x27 0000000000000002 05-22 09:40:52.435 27339 27339 F DEBUG : x28 0000000000000000 x29 0000007fe4fb81a0 x30 00000077ca1aa8e4 05-22 09:40:52.435 27339 27339 F DEBUG : sp 0000007fe4fb8160 pc 00000077ca205a4c pstate 0000000060000000 05-22 09:40:52.436 27339 27339 F DEBUG : 05-22 09:40:52.436 27339 27339 F DEBUG : backtrace: 05-22 09:40:52.436 27339 27339 F DEBUG : #00 pc 0000000000079a4c /system/lib64/libc.so (tgkill+8) 05-22 09:40:52.436 27339 27339 F DEBUG : #01 pc 000000000001e8e0 /system/lib64/libc.so (abort+88) 05-22 09:40:52.436 27339 27339 F DEBUG : #02 pc 000000000001d61c /data/app/PACKAGE_NAME-F-z4qH6HT271dk7M7oI8Uw==/split_config.arm64_v8a.apk (offset 0xea7000)

@Kiruel , no me queda muy claro por qué la gente sigue diciendo que el paquete de aplicaciones está resolviendo este problema.

El paquete de aplicaciones no es más que un APK dividido automatizado y no hay división en la carpeta de activos. Por lo tanto, las instantáneas solo se dirigen a una única arquitectura.

Probablemente me esté perdiendo algo, pero en mi opinión, la única solución ahora es compilar APK para cada arquitectura con el filtrado ndk correspondiente en el archivo gradle. Y luego cargue cada uno de estos APK.

Si no podemos resolver este problema con APK, tampoco existe la posibilidad de que el paquete de aplicaciones funcione.

@ndusart No creo que eso sea cierto. Los documentos del paquete de aplicaciones dicen:

res /, lib / y assets /: estos directorios son idénticos a los de un APK típico. Cuando carga su paquete de aplicaciones, Google Play inspecciona estos directorios y empaqueta solo los archivos que cumplen con la configuración del dispositivo de destino, al tiempo que conserva las rutas de los archivos.

Entonces, de alguna manera, puede dividir los activos.

@jereksel esto solo dice que estos directorios están funcionando exactamente de la misma manera en el paquete de aplicaciones que en la apk y la carpeta assets/ no está dividida. Se utiliza para tener activos almacenados en una estructura de archivo muy específica en la aplicación, no está destinado a ser analizado por el sistema operativo ni nada.

Si me equivoco, dígame cómo podemos dividir esta carpeta en función de la ABI de destino.

Y esta cita solo confirma lo que digo, si esto no es posible en este momento con APK, esto no será posible usando el paquete de aplicaciones ya que estas carpetas funcionan exactamente igual en ambos sentidos.

No he visto que los activos se dividan, pero encontré esto:

https://medium.com/google-developer-experts/exploring-the-android-app-bundle-ca16846fa3d7

assets.pb: es el equivalente a una tabla de recursos para los activos de la aplicación y solo estará presente si está utilizando activos en su aplicación.

Entonces, supongo que Android Studio no divide los activos, pero los paquetes de aplicaciones tienen soporte para eso.

¿Tienes alguna documentación oficial? Todo eso parece muy poco fiable.
El siguiente artículo, https://medium.com/mindorks/android-app-bundle-aab-98de6dad8ba8 , establece que podemos agregar un sufijo al nombre de las carpetas en assets/ para dividirlo, pero actualmente esto solo puede hacerse en el idioma.

Aún así, esto aún no parece estable y no debería basarse en este momento. Las instantáneas de VM deben ser deportadas en la carpeta lib/ si eso es posible o el comando flutter debe venir con una función completa para construir un APK para un objetivo específico (todavía hay trabajo por hacer en eso por ser accesible para muchas personas) y retrasar la producción de un paquete de aplicaciones cuando esté listo.

@blasten

Cambié al canal maestro, actualicé y construí el paquete de aplicaciones. Desafortunadamente, la aplicación persigue después de descargarla de Google Play Store con el siguiente logcat

2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.

flutter build appbundle ahora está en master, ¿alguna persona voluntaria quiere intentarlo?

Tuvimos una discusión para admitir una lista de plataformas en build apk , por lo que podría hacer algo como esto: flutter build apk --target-platform android-arm,android-arm64

@blasten

Cambié al canal maestro, actualicé y construí el paquete de aplicaciones. Desafortunadamente, la aplicación persigue después de descargarla de Google Play Store con el siguiente logcat

2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.

flutter build appbundle ahora está en master, ¿alguna persona voluntaria quiere intentarlo?
Tuvimos una discusión para admitir una lista de plataformas en build apk , por lo que podría hacer algo como esto: flutter build apk --target-platform android-arm,android-arm64

Tengo el mismo problema, aunque todavía no tengo ningún registro.

@skybur, el problema que tenía podría estar relacionado con https://github.com/flutter/flutter/issues/33119. Si ese es el caso, este parche debería solucionarlo.

@ndusart
Si, tienes razón. Verifiqué el código fuente de bundletool y la división de activos es solo por idioma:
https://github.com/google/bundletool/blob/master/src/main/java/com/android/tools/build/bundletool/splitters/ModuleSplitter.java#L286

Esta fue mi solución:

  1. en app gradle
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
  1. ejecutar flutter build apk --release --target-platform=android-arm
  2. sube app-armeabi-v7a-release.apk a Play Store
  3. incremento versionCode
  4. ejecutar flutter build apk --release --target-platform=android-arm64
  5. sube app-arm64-v8a-release.apk a Play Store

Google Play Store servirá la aplicación de acuerdo con la arquitectura del dispositivo. Los dispositivos de 32 bits están contentos, los dispositivos de 64 bits están contentos y estoy contento de saber que el tamaño de mi APK sigue siendo relativamente pequeño y al mismo tiempo sirve para ambas arquitecturas.

Si incluimos soporte para ambas arquitecturas en el mismo APK, espere que el tamaño de su aplicación sea de más de 10 MB

Hay una cosa importante que decirles a ustedes. Si usa el método que cito. Es posible que deba comentar la configuración, cuando desee seguir depurando su aplicación. Me enfrento al error La compilación de Gradle no pudo producir un paquete de Android , y me quedé atascado durante unas horas, generando algo de gradlew clean ... etc., ¡y finalmente descubrí que esto debería estar comentado!

Espero que esto haya ayudado a alguien a saltar.

flutter build appbundle ahora está en master, ¿alguna persona voluntaria quiere intentarlo?

Tuvimos una discusión para admitir una lista de plataformas en build apk , por lo que podría hacer algo como esto: flutter build apk --target-platform android-arm,android-arm64

flutter build appbundle está funcionando! No necesito agregar esa configuración, y solo hacer el código. Sin embargo, la compilación lleva un poco de tiempo, pero es la única forma de pasar Google Play ahora.

@Tokenyet , ¿ .aab ? Si este es el caso, ¿le importaría pegar la salida de flutter doctor ?

@blasten

Cambié al canal maestro, actualicé y construí el paquete de aplicaciones. Desafortunadamente, la aplicación persigue después de descargarla de Google Play Store con el siguiente logcat

2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.

flutter build appbundle ahora está en master, ¿alguna persona voluntaria quiere intentarlo?
Tuvimos una discusión para admitir una lista de plataformas en build apk , por lo que podría hacer algo como esto: flutter build apk --target-platform android-arm,android-arm64

Exactamente lo mismo aquí, cuando intento ejecutar mi aplicación desde Play Store (creado como paquete de aplicaciones). ¿Qué registros necesitan para resolver esto?

Esto será útil:

  1. Descarga bundletool de https://developer.android.com/studio/command-line/bundletool
  2. Ejecute flutter build appbundle (indique si pasa alguna marca o si realizó cambios _personalizados_ en cualquier secuencia de comandos de Gradle)
  3. Ejecute bundletool build-apks --bundle=build/app/outputs/bundle/release/app.aab --output=out.apks para extraer el conjunto de APK.
  4. Ejecute unzip -l out.apks y finalmente flutter doctor y pegue la salida de ambos comandos en su comentario.

Si es posible:

Pruebe localmente en el dispositivo usando bundletool y el conjunto de APK. Estos son los pasos , pega el logcat en tu comentario.

No puedo reproducir el problema, aunque solo probé localmente usando bundletool .

@blasten Entonces, el error anterior se solucionó, pero encontré otro error. Supongo que esto es causado por algo en mi proyecto. ¿Hay alguna forma de que pueda depurar esto?

[+6084 ms] Failed to execute aapt
[  +17 ms] com.android.ide.common.process.ProcessException: Failed to execute aapt
[   +1 ms]      at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:809)
[   +1 ms]      at com.android.build.gradle.internal.res.LinkAndroidResForBundleTask.taskAction(LinkAndroidResForBundleTask.kt:128)
[   +1 ms]      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[   +1 ms]      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[   +1 ms]      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[        ]      at java.lang.reflect.Method.invoke(Method.java:498)
[        ]      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
[   +4 ms]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
[   +1 ms]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
[   +3 ms]      at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788)
[  +29 ms]      at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755)
[   +1 ms]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
[   +1 ms]      at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
[   +2 ms]      at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
[   +1 ms]      at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
[   +9 ms]      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
[   +1 ms]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
[        ]      at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
[   +1 ms]      at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
[        ]      at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
[        ]      at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
[   +5 ms]      at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
[        ]      at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
[   +1 ms]      at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
[   +1 ms]      at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
[  +12 ms]      at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
[   +4 ms]      at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
[        ]      at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
[        ]      at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
[        ]      at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
[        ]      at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
[        ]      at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
[   +1 ms]      at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
[   +6 ms]      at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
[   +1 ms]      at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
[   +1 ms]      at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
[   +1 ms]      at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
[  +14 ms]      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
[   +1 ms]      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
[   +4 ms]      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[   +1 ms]      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[   +2 ms]      at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
[   +1 ms]      at java.lang.Thread.run(Thread.java:745)
[  +26 ms] Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[   +4 ms]      at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
[   +1 ms]      at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
[        ]      at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
[        ]      at com.android.builder.internal.aapt.AbstractAapt.link(AbstractAapt.java:34)
[        ]      at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:807)
[        ]      ... 51 more
[        ] Caused by: java.util.concurrent.ExecutionException: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[   +1 ms]      at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
[        ]      at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
[        ]      at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
[        ]      at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:166)
[   +4 ms]      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[   +1 ms]      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[   +1 ms]      ... 1 more
[   +1 ms] Caused by: com.android.builder.internal.aapt.v2.Aapt2Exception: AAPT2 error: check logs for details
[   +1 ms]      at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:443)
[   +1 ms]      at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:395)
[        ]      at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:312)
[        ]      at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)
[        ] FAILURE: Build failed with an exception.
[        ] * What went wrong:
[        ] Execution failed for task ':app:bundleProdReleaseResources'.
[        ] > Failed to execute aapt
[        ] * Try:
[        ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[   +5 ms] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 30s
[ +324 ms] Running Gradle task 'bundleProdRelease'... (completed in 31.5s)

@blasten sigo todos tus pasos mis registros:

➜  PROJECT_NAME git:(master) ✗ unzip -l out.apks
Archive:  out.apks
  Length      Date    Time    Name
---------  ---------- -----   ----
 43369811  01-01-1970 01:00   standalones/standalone-armeabi_tvdpi.apk
 43327197  01-01-1970 01:00   standalones/standalone-armeabi_hdpi.apk
 43319503  01-01-1970 01:00   standalones/standalone-armeabi_mdpi.apk
 43320027  01-01-1970 01:00   standalones/standalone-armeabi_ldpi.apk
 43346424  01-01-1970 01:00   standalones/standalone-armeabi_xxhdpi.apk
 43350403  01-01-1970 01:00   standalones/standalone-armeabi_xxxhdpi.apk
 43332970  01-01-1970 01:00   standalones/standalone-armeabi_xhdpi.apk
 50349155  01-01-1970 01:00   standalones/standalone-armeabi_v7a_ldpi.apk
 50348629  01-01-1970 01:00   standalones/standalone-armeabi_v7a_mdpi.apk
 50398968  01-01-1970 01:00   standalones/standalone-armeabi_v7a_tvdpi.apk
 50356358  01-01-1970 01:00   standalones/standalone-armeabi_v7a_hdpi.apk
 50362126  01-01-1970 01:00   standalones/standalone-armeabi_v7a_xhdpi.apk
 50375565  01-01-1970 01:00   standalones/standalone-armeabi_v7a_xxhdpi.apk
 50379553  01-01-1970 01:00   standalones/standalone-armeabi_v7a_xxxhdpi.apk
 50660246  01-01-1970 01:00   standalones/standalone-arm64_v8a_ldpi.apk
 50659718  01-01-1970 01:00   standalones/standalone-arm64_v8a_mdpi.apk
 50710027  01-01-1970 01:00   standalones/standalone-arm64_v8a_tvdpi.apk
 50667415  01-01-1970 01:00   standalones/standalone-arm64_v8a_hdpi.apk
 50673185  01-01-1970 01:00   standalones/standalone-arm64_v8a_xhdpi.apk
 50686641  01-01-1970 01:00   standalones/standalone-arm64_v8a_xxhdpi.apk
 43345757  01-01-1970 01:00   standalones/standalone-x86_mdpi.apk
 43346287  01-01-1970 01:00   standalones/standalone-x86_ldpi.apk
 43396086  01-01-1970 01:00   standalones/standalone-x86_tvdpi.apk
 50690619  01-01-1970 01:00   standalones/standalone-arm64_v8a_xxxhdpi.apk
 43359247  01-01-1970 01:00   standalones/standalone-x86_xhdpi.apk
 43353470  01-01-1970 01:00   standalones/standalone-x86_hdpi.apk
 43372688  01-01-1970 01:00   standalones/standalone-x86_xxhdpi.apk
 43376653  01-01-1970 01:00   standalones/standalone-x86_xxxhdpi.apk
 43340224  01-01-1970 01:00   standalones/standalone-x86_64_ldpi.apk
 43339701  01-01-1970 01:00   standalones/standalone-x86_64_mdpi.apk
 43390033  01-01-1970 01:00   standalones/standalone-x86_64_tvdpi.apk
 43347418  01-01-1970 01:00   standalones/standalone-x86_64_hdpi.apk
    57027  01-01-1970 01:00   splits/base-ldpi.apk
    56501  01-01-1970 01:00   splits/base-mdpi.apk
    61951  01-01-1970 01:00   splits/base-hdpi.apk
    67741  01-01-1970 01:00   splits/base-xhdpi.apk
    81187  01-01-1970 01:00   splits/base-xxhdpi.apk
    85188  01-01-1970 01:00   splits/base-xxxhdpi.apk
   105385  01-01-1970 01:00   splits/base-tvdpi.apk
 43353194  01-01-1970 01:00   standalones/standalone-x86_64_xhdpi.apk
    11313  01-01-1970 01:00   splits/base-ca.apk
    11211  01-01-1970 01:00   splits/base-da.apk
    12040  01-01-1970 01:00   splits/base-fa.apk
    11659  01-01-1970 01:00   splits/base-ja.apk
    12486  01-01-1970 01:00   splits/base-ka.apk
    12511  01-01-1970 01:00   splits/base-pa.apk
    12856  01-01-1970 01:00   splits/base-ta.apk
    11195  01-01-1970 01:00   splits/base-nb.apk
    12001  01-01-1970 01:00   splits/base-be.apk
    11420  01-01-1970 01:00   splits/base-de.apk
    13041  01-01-1970 01:00   splits/base-ne.apk
    12674  01-01-1970 01:00   splits/base-te.apk
 43366615  01-01-1970 01:00   standalones/standalone-x86_64_xxhdpi.apk
    11179  01-01-1970 01:00   splits/base-af.apk
    12151  01-01-1970 01:00   splits/base-bg.apk
    12353  01-01-1970 01:00   splits/base-th.apk
    11228  01-01-1970 01:00   splits/base-fi.apk
    12537  01-01-1970 01:00   splits/base-si.apk
    12551  01-01-1970 01:00   splits/base-hi.apk
    11939  01-01-1970 01:00   splits/base-kk.apk
    11615  01-01-1970 01:00   splits/base-vi.apk
    12059  01-01-1970 01:00   splits/base-mk.apk
    11440  01-01-1970 01:00   splits/base-sk.apk
    11961  01-01-1970 01:00   splits/base-uk.apk
    12344  01-01-1970 01:00   splits/base-el.apk
    11342  01-01-1970 01:00   splits/base-gl.apk
    13334  01-01-1970 01:00   splits/base-ml.apk
    11350  01-01-1970 01:00   splits/base-nl.apk
    11371  01-01-1970 01:00   splits/base-pl.apk
    11311  01-01-1970 01:00   splits/base-sl.apk
    11428  01-01-1970 01:00   splits/base-tl.apk
    11825  01-01-1970 01:00   splits/base-am.apk
    12685  01-01-1970 01:00   splits/base-km.apk
    12615  01-01-1970 01:00   splits/base-bn.apk
    11223  01-01-1970 01:00   splits/base-in.apk
    12832  01-01-1970 01:00   splits/base-kn.apk
    11958  01-01-1970 01:00   splits/base-mn.apk
    12621  01-01-1970 01:00   splits/base-lo.apk
    11425  01-01-1970 01:00   splits/base-ko.apk
    11395  01-01-1970 01:00   splits/base-ro.apk
    11438  01-01-1970 01:00   splits/base-sq.apk
    13612  01-01-1970 01:00   splits/base-fr.apk
    11647  01-01-1970 01:00   splits/base-ar.apk
    11278  01-01-1970 01:00   splits/base-hr.apk
    12447  01-01-1970 01:00   splits/base-mr.apk
    12943  01-01-1970 01:00   splits/base-or.apk
    14244  01-01-1970 01:00   splits/base-sr.apk
    11316  01-01-1970 01:00   splits/base-tr.apk
    11973  01-01-1970 01:00   splits/base-ur.apk
    11308  01-01-1970 01:00   splits/base-bs.apk
    12525  01-01-1970 01:00   splits/base-as.apk
    13704  01-01-1970 01:00   splits/base-es.apk
    11367  01-01-1970 01:00   splits/base-cs.apk
    11222  01-01-1970 01:00   splits/base-is.apk
    11360  01-01-1970 01:00   splits/base-ms.apk
    11323  01-01-1970 01:00   splits/base-et.apk
    11283  01-01-1970 01:00   splits/base-it.apk
    11550  01-01-1970 01:00   splits/base-lt.apk
    14605  01-01-1970 01:00   splits/base-pt.apk
    11377  01-01-1970 01:00   splits/base-eu.apk
    12409  01-01-1970 01:00   splits/base-gu.apk
    11651  01-01-1970 01:00   splits/base-hu.apk
    12048  01-01-1970 01:00   splits/base-ru.apk
    11616  01-01-1970 01:00   splits/base-lv.apk
    11314  01-01-1970 01:00   splits/base-zu.apk
    11260  01-01-1970 01:00   splits/base-sv.apk
    11539  01-01-1970 01:00   splits/base-iw.apk
    11283  01-01-1970 01:00   splits/base-sw.apk
    12110  01-01-1970 01:00   splits/base-hy.apk
 43370609  01-01-1970 01:00   standalones/standalone-x86_64_xxxhdpi.apk
    11904  01-01-1970 01:00   splits/base-ky.apk
    11430  01-01-1970 01:00   splits/base-az.apk
    13395  01-01-1970 01:00   splits/base-my.apk
    11296  01-01-1970 01:00   splits/base-uz.apk
    15398  01-01-1970 01:00   splits/base-zh.apk
    23877  01-01-1970 01:00   splits/base-en.apk
   107757  01-01-1970 01:00   splits/base-armeabi.apk
   134023  01-01-1970 01:00   splits/base-x86.apk
   127969  01-01-1970 01:00   splits/base-x86_64.apk
 42926206  01-01-1970 01:00   splits/base-master.apk
 21480838  01-01-1970 01:00   splits/base-arm64_v8a_2.apk
 17508309  01-01-1970 01:00   splits/base-armeabi_v7a_2.apk
   217751  01-01-1970 01:00   splits/base-armeabi_2.apk
   311771  01-01-1970 01:00   splits/base-x86_2.apk
   308537  01-01-1970 01:00   splits/base-x86_64_2.apk
  7136923  01-01-1970 01:00   splits/base-armeabi_v7a.apk
  7447993  01-01-1970 01:00   splits/base-arm64_v8a.apk
 42926200  01-01-1970 01:00   splits/base-master_2.apk
    16537  01-01-1970 01:00   toc.pb
---------                     -------
1759809847                     129 files
➜  PROJECT_NAME git:(master) ✗ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel master, v1.6.1-pre.68, on Mac OS X 10.14.5 18F132, locale en-GB)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.2.1)
[!] Android Studio (version 3.3)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.34.0)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.

@jereksel @ndusart
En realidad, esto se llama Assets Targeting y le permite apuntar / dividir directorios en activos basados ​​en API de gráficos, lenguaje y compresión de texturas.
Como se ve aquí: ... / bundletool / model / target / TargetedDirectorySegment.java

Con respecto al actual flutter@master AAB, me funciona localmente, usando bundletool para probar e instalar en un dispositivo real. He inhabilitado la división por densidad e idioma en mi build.gradle así que build-apks me da esto:

  Length      Date    Time    Name
---------  ---------- -----   ----
  6872466  1970-01-01 01:00   splits/base-arm64_v8a.apk
  6726824  1970-01-01 01:00   splits/base-master.apk
 13289718  1970-01-01 01:00   standalones/standalone-armeabi_v7a.apk
 13594392  1970-01-01 01:00   standalones/standalone-arm64_v8a.apk
  6567785  1970-01-01 01:00   splits/base-armeabi_v7a.apk
      429  1970-01-01 01:00   toc.pb
---------                     -------
 47051614                     6 files

Probándolo en Test Lab, también tengo todo verde.
Todavía estoy esperando que Play Store procese esta versión para probar este canal.

@Tokenyet , ¿ .aab ? Si este es el caso, ¿le importaría pegar la salida de flutter doctor ?

Puedo descargar la aplicación desde Play Store y ejecutarla. Podrías [probarlo] (https://play.google.com/store/apps/details?id=com.bumbystudio.starry_clock). (Editar: Vaya, no está funcionando ... de PlayStore)

A continuación se muestra mi flutter doctor que necesita. Espero que haya ayudado.

[√] Flutter (Channel master, v1.6.1-pre.88, en Microsoft Windows [Versión 10.0.17134.765], configuración regional zh-TW)

[√] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
[√] Android Studio (versión 3.3)
[√] VS Code, edición de 64 bits (versión 1.30.2)
[!] Dispositivo conectado
! No hay dispositivos disponibles

Esto funciona bien para mi !

buildTypes {
liberar {
// TODO: Agregue su propia configuración de firma para la compilación de lanzamiento.
// Firmando con las claves de depuración por ahora, entonces flutter run --release funciona.
signingConfig signingConfigs.debug
}
depurar {
ndk {
abiFilters 'armeabi-v7a'
}
}
}

@SPodjasek aún, necesitamos dividir assets/ según ABI. ¿Cómo se puede hacer esto actualmente?

Lo instalé en mi dispositivo y parece que no funciona. Todo lo que obtuve fue un
pantalla en negro.

Gracias,

Purusothaman Ramanujam

El jueves 23 de mayo de 2019 a las 6:43 p.m. Tokenyet, [email protected] escribió:

@Tokenyet https://github.com/Tokenyet ¿ pudiste descargar la aplicación?
desde Play Store y ejecutarlo después de cargar el archivo .aab? Si este es el
caso, ¿le importaría pegar la salida de flutter doctor?

Puedo descargar la aplicación desde Play Store y ejecutarla. Podrías darlo
un intento
https://play.google.com/store/apps/details?id=com.bumbystudio.starry_clock
.

A continuación se muestra mi médico de aleteo, según lo necesite. Espero que haya ayudado.

[√] Flutter (Channel master, v1.6.1-pre.88, en Microsoft Windows [Versión
10.0.17134.765], configuración regional zh-TW)

[√] Cadena de herramientas de Android: desarrollo para dispositivos Android (versión SDK de Android
28.0.3)
[√] Android Studio (versión 3.3)
[√] VS Code, edición de 64 bits (versión 1.30.2)
[!] Dispositivo conectado
! No hay dispositivos disponibles

-
Estás recibiendo esto porque estás suscrito a este hilo.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/flutter/flutter/issues/18494?email_source=notifications&email_token=AAIHDZYY47H6PUQQJYEO4J3PW2J7RA5CNFSM4FFE2B7KYY3PNVWWK3TUL52HS4DFVDVREXWG43V ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AAIHDZZXV67JCNVJYLVA3WLPW2J7RANCNFSM4FFE2B7A
.

@ndusart En este punto es imposible; tal vez presente una solicitud de función en bundletool y Google considerará implementarla.

@SPodjasek, así que eso es lo que estoy diciendo, todo este problema va por el camino equivocado.

Todas las discusiones parecen terminar en "no te preocupes, cuando pudiéramos crear paquetes de aplicaciones, todo estaría bien", pero no es el caso en este momento y en un futuro cercano.
Es un poco decepcionante ver que el equipo de Flutter deja que la gente piense que es posible de esta manera.

flutter debería ser capaz de proporcionar una manera de construir fácilmente APK dividido, ya sea haciendo la división en sí mismo o administrando para mover las instantáneas de la VM a la carpeta lib/ y dejar que la división simplemente funcione (luego podríamos usar paquetes de aplicaciones también )

Recapitulemos:

  1. Flutter admitirá APK pesados ​​a través de flutter build apk ... .
  2. Si quieres probar esta función _ ahora mismo_ prueba flutter build appbundle en la rama maestra. Si los paquetes de aplicaciones no funcionan para su caso de uso, entonces (1) debería cubrir los casos restantes.

De acuerdo @blasten, miré en el código maestro y las instantáneas se movieron a la carpeta lib:
https://github.com/flutter/flutter/blob/dc28ba8919604ff19ea7cbad8d9400516347b08a/packages/flutter_tools/gradle/flutter.gradle#L470 -L481

Por lo tanto, no se trata solo de agregar compatibilidad con paquetes de aplicaciones. Ahora está más claro.
Sin embargo, se habría agradecido un poco de explicación, ya que se dijo que el problema era la carpeta de activos y no se proporcionó información. Se trabajó en esta dirección, ya que este problema y el soporte del paquete de aplicaciones son bastante independientes.

Gracias por tu trabajo.

@ndusart - @blasten ha realizado cambios en la incrustación de Android para que busque los blobs binarios en la carpeta lib ahora, para que pueda agrupar en ambos tipos si no me equivoco ...

Si las instantáneas se mueven a la biblioteca, ¿quizás también se arregle el # 30846?

@blasten
Cambié al canal maestro, actualicé y construí el paquete de aplicaciones. Desafortunadamente, la aplicación persigue después de descargarla de Google Play Store con el siguiente logcat

2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(241)] Could not setup VM data to bootstrap the VM from.
2019-05-22 09:42:14.824 6995-6995/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
2019-05-22 09:42:14.824 6995-6995/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.

flutter build appbundle ahora está en master, ¿alguna persona voluntaria quiere intentarlo?
Tuvimos una discusión para admitir una lista de plataformas en build apk , por lo que podría hacer algo como esto: flutter build apk --target-platform android-arm,android-arm64

Tengo el mismo problema, aunque todavía no tengo ningún registro.

Aquí igual. Estaba teniendo un error. Master actualizado y ejecutó flutter build appbundle . Se deshizo del error, pero la aplicación se bloquea cuando se abre.

Intenté cargar un paquete de aplicaciones con la última versión de flutter master en la tienda de aplicaciones con los últimos cambios. El error de 64 bits desapareció, pero mi aplicación se bloquea inmediatamente.

Lo que es realmente extraño es que ejecutar la versión de 64 bits con los siguientes comandos funciona bien.
flutter build apk - plataforma de destino android-arm64
flutter install api

Solo falla cuando la aplicación se instala a través del paquete de aplicaciones en la tienda de aplicaciones. Por ahora, he revertido la tienda de aplicaciones a la apk de 32 bits.

No tengo nada especial en mi gradle.build

minSdkVersion 21
targetSdkVersion 28
versionCode flutterVersionCode.toInteger ()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled verdadero

Estoy ejecutando Flutter (Channel master, v1.6.4-pre.13, en Mac OS X 10.14.5 18F132, locale en-US)

¿Hay alguna forma de probar estos paquetes antes de cargarlos en la tienda de aplicaciones? ¿Es este un problema conocido en el que Google está trabajando o necesito hacer algunos cambios en mi archivo gradle?

@blasten Tengo un problema con la herramienta de paquete que no está relacionado con este problema.

yo obtengo
Error: no se pudo iniciar el servidor ADB

Al correr
build-apks --connected-device --bundle =. / app.aab --output =. / my_app.apks --adb

Tengo adb instalado correctamente. Cuando pruebo adb logcat, funciona bien.

Será un comentario largo, pero esto solucionó completamente el problema.

Esta fue mi solución:

  1. en app gradle
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
  1. ejecutar flutter build apk --release --target-platform=android-arm
  2. sube app-armeabi-v7a-release.apk a Play Store
  3. incremento versionCode
  4. ejecutar flutter build apk --release --target-platform=android-arm64
  5. sube app-arm64-v8a-release.apk a Play Store

Google Play Store servirá la aplicación de acuerdo con la arquitectura del dispositivo. Los dispositivos de 32 bits están contentos, los dispositivos de 64 bits están contentos y estoy contento de saber que el tamaño de mi APK sigue siendo relativamente pequeño y al mismo tiempo sirve para ambas arquitecturas.

Si incluimos soporte para ambas arquitecturas en el mismo APK, espere que el tamaño de su aplicación sea de más de 10 MB

Seguir estos pasos estaba dando "La compilación de Gradle no pudo producir un paquete de Android". error
_ Después de una hora de depuración, descubrí la solución. _

Para crear diferentes aplicaciones para x86 y x64, siga estos pasos:

Paso 1: Incluya el fragmento de código en el archivo app/build.gradle . El archivo se verá así:

....
    lintOptions {
        disable 'InvalidPackage'
    }

    splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }

    defaultConfig {
....

Paso 2: Crea un apk de lanzamiento usando flutter build apk --release
Esto creará el apk basado en x86 en la carpeta build/app/outputs/apk/app.apk
Sube este apk a Google Play Store.
x86 hecho hasta ahora

En este punto, no ejecute flutter clean
Estaba haciendo esto y obtenía errores al compilar x64 apk

Paso 3: Ahora abra pubspec.yaml y cambie version de
version: 1.0.0+1 a version: 1.0.0+2

El número junto a + es el código de versión

Paso 4: ahora ejecuta el comando
flutter build apk --release --target-platform=android-arm64

Una vez que se complete este comando, vaya a build/app/outputs/apk/release/ . Allí encontrará un apk con el nombre app-arm64-v8a-release.apk . Este es su archivo apk de 64 bits con un código de versión diferente.

Ahora sube esta apk x64 a Play Store ... y aquí tienes. Has subido aplicaciones x86 y x64 a Play Store.

Será un comentario largo, pero esto solucionó completamente el problema.

[...]
Para crear diferentes aplicaciones para x86 y x64, siga estos pasos:

Paso 1: Incluya el fragmento de código en el archivo app/build.gradle . El archivo se verá así:

....
    lintOptions {
        disable 'InvalidPackage'
    }

    splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }

    defaultConfig {
....

Paso 2: Crea una versión apk usando flutter build apk --release
[...]

De acuerdo con su respuesta. Funciona para mí, aunque no tuve que seguir el Paso 1 (usé un build.gradle predeterminado)

Luego, solo necesita incrementar su número de compilación y versión para que Google Play lo acepte.

Todavía tengo problemas con flutter build appbundle en mi mano.

Será un comentario largo, pero esto solucionó completamente el problema.

[...]
Para crear diferentes aplicaciones para x86 y x64, siga estos pasos:
Paso 1: Incluya el fragmento de código en el archivo app/build.gradle . El archivo se verá así:

....
    lintOptions {
        disable 'InvalidPackage'
    }

    splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }

    defaultConfig {
....

Paso 2: Crea una versión apk usando flutter build apk --release
[...]

De acuerdo con su respuesta. Funciona para mí, aunque no tuve que seguir el Paso 1 (usé un build.gradle predeterminado)

Luego, solo necesita incrementar su número de compilación y versión para que Google Play lo acepte.

Todavía tengo problemas con flutter build appbundle en mi mano.

No funciona. Estoy tan molesto. La aplicación se bloqueó cuando se intentó implementar en un emulador x86, así como en un dispositivo de brazo real. Probado con canal maestro / beta / estable. Sin lanzamiento listo. Todavía es un obstáculo para nosotros. El comando Appbundle genera un paquete instalable para jugar, pero durante el tiempo de ejecución, la aplicación muestra solo la pantalla de inicio y luego se congela. El equipo de Flutter proporcione una solución clara o WA.

@mormih, gracias por tu paciencia, estamos trabajando para reproducirlo. Si no le importa, ¿podría enviarme un correo electrónico ([email protected]) que incluya lo siguiente? Sería útil:

  • Su plataforma de host que está utilizando para construir.
  • El comando que estás usando para crear la aplicación.
  • Ejecute su comando de compilación con --bug-report (por ejemplo, flutter build appbundle --bug-report ) y adjunte el archivo bugreport.zip asociado
  • Adjunte el paquete de aplicaciones generado para que podamos intentar ejecutarlo en dispositivos locales
  • Adjunte los resultados de adb bugreport después de haber intentado ejecutar la aplicación

¡Gracias!

@tvolkert También tengo el problema de que se bloquea con el siguiente mensaje:

Verificación fallida: vm. Debe poder inicializar la máquina virtual.

Mi plataforma de host es una mac y macOS 10.14.5. ¿Pudiste reproducirlo o te gustaría que siguiera los pasos que escribiste arriba? Además, tal vez esto debería tener un boleto dedicado, ya que es un problema separado del OP.

@mormih No estoy seguro, pero ¿has intentado incluir x86 también en la lista abi?

include "armeabi-v7a", "arm64-v8a", "x86"

flutter build appbundle (en el maestro) tampoco funcionó para mí, tengo la pantalla de bienvenida atascada como otros han notado ...

La única solución alternativa que encontré para el lanzamiento (en Play Store) para 32 y 64 bits hasta ahora es la siguiente. (Cubierto parcialmente en el hilo, pero podría ayudar a alguien):

  1. Cree una apk con el filtro v7 en + el comando de compilación apk predeterminado:
    En su archivo app / build.gradle:
    defaultConfig { ... ndk{ abiFilters "armeabi-v7a" } }
    y luego corre
    flutter build apk
    (predeterminado en --release)

  2. Aumente su número de compilación en pubspec.yaml.
    Por ejemplo, de version: 1.1.0+6 a version: 1.1.0+7

  3. Cree una apk con el filtro v8 en + build con arm64 como plataforma de destino:
    ahora actualice el build.gradle como:
    defaultConfig { ... ndk{ abiFilters "arm64-v8a" } }
    y luego corre
    flutter build apk --release --target-platform android-arm64

Incluye la sobrecarga de tener que cargar 2 apks (y así crear 2 números de compilación) pero al menos parece hacer el trabajo y puedo lanzarlo para dispositivos de 32 y 64 bits ...

Nota: Dejé de lado x86 ya que solo involucra a un grupo muy pequeño de dispositivos móviles (y potencialmente ninguno de mis usuarios), además de que no necesito una compilación de lanzamiento en el emulador (la depuración es suficiente para probar). Pero, por supuesto, este podría no ser el caso de otros.

El método

En algún lugar de los comentarios, alguien dejó esto.

image

Esto ha funcionado para mí y su único código de terminal 1.
Sin embargo, genera 2 archivos que odio y crea 2 versiones.

@ezmegy ¡ Gracias! Tu salvas mi dia

Gracias @ezmegy , ¡tu "truco" funciona!

¡Gracias @ezmegy !
Me gustaría compartir mi flujo de trabajo actual que podría ser útil:


Cree algunos tipos de compilación en app/build.gradle por arquitectura

flavorDimensions 'arch'
    productFlavors {
        arm32 {
            dimension 'arch'
            ndk {
                abiFilters 'armeabi-v7a'
            }
        }
        arm64 {
            dimension 'arch'
            ndk {
                abiFilters 'arm64-v8a'
            }
        }

Entonces puedo construir ambos con:
flutter build apk --flavor arm32
y
flutter build apk --flavor arm64 --target-platform android-arm64
sin modificar gradle en cada compilación


Con respecto al código de versión, preferiría establecer uno de forma predeterminada y derivar los demás de ese
Por ejemplo, configure arm32 con 1.0.0 + 10000 y genere el código de versión para arm64 que es 1.0.0 + 10001
Esto debería ser fácil de generar usando bash (o dentro de fastfile si está usando fastlane)

Puede establecer el número de compilación usando --build-number argumentos o vía fastlane si está usando uno

Este script de código de versión me ayuda en CI / CD 😄

CMIIW

Para mí esto funcionó bastante bien
https://github.com/flutter/flutter/issues/10728#issuecomment -461375218

Será un comentario largo, pero esto solucionó completamente el problema.

Esta fue mi solución:

  1. en app gradle
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
  1. ejecutar flutter build apk --release --target-platform=android-arm
  2. sube app-armeabi-v7a-release.apk a Play Store
  3. incremento versionCode
  4. ejecutar flutter build apk --release --target-platform=android-arm64
  5. sube app-arm64-v8a-release.apk a Play Store

Google Play Store servirá la aplicación de acuerdo con la arquitectura del dispositivo. Los dispositivos de 32 bits están contentos, los dispositivos de 64 bits están contentos y estoy contento de saber que el tamaño de mi APK sigue siendo relativamente pequeño y al mismo tiempo sirve para ambas arquitecturas.
Si incluimos soporte para ambas arquitecturas en el mismo APK, espere que el tamaño de su aplicación sea de más de 10 MB

Seguir estos pasos estaba dando "La compilación de Gradle no pudo producir un paquete de Android". error
_ Después de una hora de depuración, descubrí la solución. _

Para crear diferentes aplicaciones para x86 y x64, siga estos pasos:

Paso 1: Incluya el fragmento de código en el archivo app/build.gradle . El archivo se verá así:

....
    lintOptions {
        disable 'InvalidPackage'
    }

    splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }

    defaultConfig {
....

Paso 2: Crea un apk de lanzamiento usando flutter build apk --release
Esto creará el apk basado en x86 en la carpeta build/app/outputs/apk/app.apk
Sube este apk a Google Play Store.
x86 hecho hasta ahora

En este punto, no ejecute flutter clean
Estaba haciendo esto y obtenía errores al compilar x64 apk

Paso 3: Ahora abra pubspec.yaml y cambie version de
version: 1.0.0+1 a version: 1.0.0+2

El número junto a + es el código de versión

Paso 4: ahora ejecuta el comando
flutter build apk --release --target-platform=android-arm64

Una vez que se complete este comando, vaya a build/app/outputs/apk/release/ . Allí encontrará un apk con el nombre app-arm64-v8a-release.apk . Este es su archivo apk de 64 bits con un código de versión diferente.

Ahora sube esta apk x64 a Play Store ... y aquí tienes. Has subido aplicaciones x86 y x64 a Play Store.

Me está funcionando también sin el paso 1. Gracias a todos. He usado filtros ndk ndk {
abiFilters "armeabi-v7a", "x86"
}
en el archivo Gradle de compilación. No sé si se requiere o no. Aparte de eso, seguí todos los pasos desde el paso 2 y cargué dos apk, uno para 32 bits y otro para 64 bits.

Anteriormente había subido el paquete de aplicaciones, esta vez subí archivos apk. Funcionando bien. Tengo que verificar con appbundle y también intentar arreglarlo sin cargar dos apk.

Nota :
Antes de realizar este proceso, mi aplicación se bloqueó en los siguientes dispositivos arm-64 bit
Redmi MI,
Redmi 3S Prime
Honor 8x

Trabajó en los siguientes dispositivos arm-64 bit
Samsung Galaxy J4
Samsung On8

Hola equipo de Flutter,

Por favor también considere otros mercados de aplicaciones como los de China. En China, no se nos permite usar Google Play Store, en cambio, tenemos muchos mercados de aplicaciones como Xiaomi, Huawei y Ali, etc.

En esos mercados de aplicaciones, NO se nos permite proporcionar versiones de apk en diferentes arquitecturas, solo podemos cargar UNA Y SOLAMENTE UNA apk por versión, y esa versión anulará la apk de la versión anterior. Lo que significa que la solución actual es utilizar "armeabi-v7a".

Corrígeme si me equivoco, al usar "armeabi-v7a", todos los dispositivos de 64 bits ejecutarán libflutter.so de 32 bits, y supongo que será más lento.

Así que sugeriría si el equipo de flutter puede proporcionar un método que nos permita construir un apk que incluya libflutter.so tanto de 32 bits como de 64 bits, aunque el tamaño del apk será mayor. (En China, generalmente tenemos una velocidad de Internet muy rápida y pagamos poco para tener planes de uso de 4G infinitos, y a la gente generalmente no le importa el tamaño de la apk)

Hola equipo de Flutter,

Por favor también considere otros mercados de aplicaciones como los de China. En China, no se nos permite usar Google Play Store, en cambio, tenemos muchos mercados de aplicaciones como Xiaomi, Huawei y Ali, etc.

En esos mercados de aplicaciones, NO se nos permite proporcionar versiones de apk en diferentes arquitecturas, solo podemos cargar UNA Y SOLAMENTE UNA apk por versión, y esa versión anulará la apk de la versión anterior. Lo que significa que la solución actual es utilizar "armeabi-v7a".

Corrígeme si me equivoco, al usar "armeabi-v7a", todos los dispositivos de 64 bits ejecutarán libflutter.so de 32 bits, y supongo que será más lento.

Así que sugeriría si el equipo de flutter puede proporcionar un método que nos permita construir un apk que incluya libflutter.so tanto de 32 bits como de 64 bits, aunque el tamaño del apk será mayor. (En China, generalmente tenemos una velocidad de Internet muy rápida y pagamos poco para tener planes de uso de 4G infinitos, y a la gente generalmente no le importa el tamaño de la apk)

En su caso, puede proporcionar el estándar de 32 bits y todo estará bien, ¿verdad?
La advertencia de 64 bits es solo para Google Play. Creo que este no es un problema para China.
(Por favor, corríjame si estoy equivocado.)

@ KunalT6569 Supongo que el paso 3 según lo indicado por usted:

Paso 3: Ahora abra pubspec.yaml y cambie la versión de
versión: 1.0.0 + 1 a la versión: 1.0.0 + 2

se requiere para permitir la carga de ambos archivos apk a la consola de Google Play, ¿no es así?

Tengo una pregunta más: una vez que ambos archivos apk estén listos, simplemente cárguelos a través de la sección App releases\New Release\Browse Files , ¿no es así?

@ angel1st Sí, se requiere el paso 3 ya que Google Play no permitirá cargar dos apks con los mismos códigos de versión.

Para cargar varias aplicaciones en Google Play, me referí a este video.
https://www.youtube.com/watch?v=rMl_oLlf_g0

FYI:

Nuestro plan actual es lanzar una versión beta con uno de los lanzamientos de desarrollo recientes en los próximos 10 días aproximadamente. Luego, nuestro plan es esperar hasta que tengamos un proceso documentado actualizado sobre cómo enviar en Android que no active las advertencias sobre compilaciones de 64 bits de Play Store, tener una forma de empaquetar un APK que admita 64 bits y demostrar podemos lanzar la galería usando ese proceso, y tan pronto como lo hayamos hecho, seguir el proceso para lanzar una nueva beta que luego empujaremos a estable una semana más tarde.

Esto significa que es probable que tengamos una versión beta a principios de junio y una versión beta a finales de junio o principios de julio, que se estabilizará poco después.

@Hixie Hay otro problema aquí
paquete de aplicaciones por último flutter (maestro a partir de ahora) que no genera versiones x86, x86_64
Archivos producidos por la rama maestra
WinRAR_2019-05-30_02-55-34

Archivos generados por la versión antigua con android studio
WinRAR_2019-05-30_03-03-15

El comportamiento esperado es incluir versiones x86, x86_64 también en el archivo producido por la nueva versión

@canewsin independientemente de este problema, no proporcionamos binarios de lanzamiento x86 (https://github.com/flutter/flutter/issues/9253) - es la "versión anterior" en https://github.com/flutter/ flutter / issues / 18494 # issuecomment -497118805 ¿se refiere a una compilación de depuración?

Tengo el mismo problema, la construcción para 32 bits excluirá los dispositivos de 64 bits, aunque se ejecuta en ellos. Construir para 64 especificando --target-platform android-arm64 funciona en dispositivos de 64 bits, pero falla en dispositivos de 32 bits. Además, Google restringirá la carga de apks para que sean de 64 bits en 2019.

Equipo de Flutter, ¡resuelve este problema básico!

defaultConfig {
....
versionName flutterVersionName
ndk.abi Filtros 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
// ¡Listo!

Compilé mi aplicación con la última rama maestra de flutter y la cargué en Play Store como paquete de aplicaciones, pero la aplicación se bloquea en el dispositivo. Este registro se tomó del laboratorio de pruebas.

05-31 07:50:28.384: D/AndroidRuntime(11036): --------- beginning of crash
05-31 07:50:28.384: E/AndroidRuntime(11036): FATAL EXCEPTION: main
05-31 07:50:28.384: E/AndroidRuntime(11036): Process: in.canews.social, PID: 11036
05-31 07:50:28.384: E/AndroidRuntime(11036): java.lang.RuntimeException: Unable to create application in.canews.social.App: java.lang.NullPointerException: Attempt to get length of null array
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5794)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.app.ActivityThread.-wrap1(Unknown Source:0)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.os.Handler.dispatchMessage(Handler.java:105)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.os.Looper.loop(Looper.java:164)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.app.ActivityThread.main(ActivityThread.java:6541)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at java.lang.reflect.Method.invoke(Native Method)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
05-31 07:50:28.384: E/AndroidRuntime(11036): Caused by: java.lang.NullPointerException: Attempt to get length of null array
05-31 07:50:28.384: E/AndroidRuntime(11036):    at io.flutter.view.FlutterMain.listLibs(FlutterMain.java:381)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at io.flutter.view.FlutterMain.initAot(FlutterMain.java:412)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:164)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at io.flutter.view.FlutterMain.startInitialization(FlutterMain.java:143)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at io.flutter.app.FlutterApplication.onCreate(FlutterApplication.java:22)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1118)
05-31 07:50:28.384: E/AndroidRuntime(11036):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5791)
05-31 07:50:28.384: E/AndroidRuntime(11036):    ... 8 more
05-31 07:50:28.392: W/ActivityManager(897):   Force finishing activity in.canews.social/.MainActivity

Doctor aleteo -v

C:\flutter\flutter\bin>flutter doctor -v
[√] Flutter (Channel master, v1.6.7-pre.7, on Microsoft Windows [Version 10.0.17763.503], locale en-IN)
    • Flutter version 1.6.7-pre.7 at C:\flutter\flutter
    • Framework revision 6884146925 (2 days ago), 2019-05-29 12:52:05 -0700
    • Engine revision 8dc3a4cde2
    • Dart version 2.3.2 (build 2.3.2-dev.0.0 e3edfd36b2)


[√] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at C:\Users\PramUkesh\AppData\Local\Android\sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[√] Android Studio (version 3.4)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 35.3.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[√] VS Code (version 1.34.0)
    • VS Code at C:\Users\PramUkesh\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.0.2

[√] Connected device (1 available)
    • Z2 Plus • 2e9087c2 • android-arm64 • Android 9 (API 28)

• No issues found!

@canewsin parece que este problema se solucionó en https://github.com/flutter/engine/pull/9078. En su árbol de Flutter, actualice su rama principal local, git fetch upstream && git merge upstream/master

Después de ver preguntas repetidas, que ya respondí en comentarios anteriores, escribí un artículo corto que documenta las opciones que tenemos ahora https://medium.com/@truongsinh/flutter -android-64-bit-so-what-the-fuss -15da6f8e3a46. Aquí está el TLDR:
1_Awm6pB8jR3wGdHMC4DsatQ

@truongsinh , también estamos finalizando la compatibilidad con el uso de flutter build appbundle para crear un paquete de aplicaciones que contenga binarios de 32 y 64 bits para su implementación en Play Store. Consulte https://github.com/flutter/flutter/issues/31922 para obtener más información; pruébelo y avísenos si encuentra algún problema.

@truongsinh , también estamos finalizando la compatibilidad con el uso de flutter build appbundle para crear un paquete de aplicaciones que contenga binarios de 32 y 64 bits para su implementación en Play Store. Consulte el n. ° 31922 para obtener más información; pruébelo y avísenos si tiene algún problema.

Sí, todavía estoy esperando que flutter build appbundle produzca la aplicación y no se bloquee ni se bloquee: D

Sí, todavía estoy esperando que el paquete de aplicaciones de compilación de flutter produzca la aplicación que no se atasca ni se bloquea: D

Reconocido 🙂. Si tiene un caso reproducible de que esto suceda que podamos ver, sería genial. Si estuviera dispuesto a crear un archivo .aab sin firmar a partir de la versión 1.7.1 y enviármelo por correo electrónico ([email protected]), se lo agradecería.

Para su información, el siguiente anuncio se envió a [email protected] con respecto a nuestro soporte de 64 bits.

https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc

Yo también tengo este problema.

Cuando construyo un paquete de aplicaciones en Android Studios, puedo cargarlo bien en mi simulador, pero bloquea la aplicación cuando la descargo de la tienda de juegos

Hola chicos, gente que usa la rama maestra de flutter y crea paquetes de aplicaciones
si está depurando su aplicación, su aplicación funciona bien
algunos choques faciales al descargar desde Play Store si esto sucede, debe verificar el paquete de su aplicación si está funcionando en su dispositivo porque el modo de depuración produce binarios JIT y el modo de lanzamiento produce binarios AOT actualmente, sus ubicaciones también son diferentes, creo que sí para probar su aplicación correctamente
produzca apk desde el paquete de aplicaciones solo para una configuración específica basada en su dispositivo y desinstale completamente la aplicación de depuración de su dispositivo e instale esta nueva aplicación de salida del paquete de aplicaciones si falla, se bloqueará cuando se descargue de Play Store o de lo contrario, espero que esto ayude a otros. .

Ref para Salida a APK desde su paquete de aplicaciones desde la línea cmd
https://developer.android.com/studio/command-line/bundletool

Para su información, los bloqueos en los paquetes de aplicaciones se rastrean mejor en https://github.com/flutter/flutter/issues/31922. Sin embargo, la publicación cruzada aquí:

Hola a todos,

TLDR:

Identificamos el problema con los bloqueos cuando se descargan de Play Store y estamos trabajando en una solución, que se entregará dentro del mismo período de tiempo que se describe anteriormente en https://github.com/flutter/flutter/issues/31922#issuecomment -498880614

Explicación de alto nivel

Para aquellos interesados, la explicación un tanto larga es que con dispositivos que ejecutan Android Marshmallow o posterior, Play Store detectará aplicaciones empaquetadas como App Bundles que contienen múltiples ABI, e instalará esas aplicaciones en el dispositivo en forma de "split APK ". Cuando hace esto, los archivos .so que contiene no se extraen del archivo zip APK, que es diferente al comportamiento de los APK no divididos. Dado que el mecanismo actual del motor Flutter

La solución es solo dlopen las bibliotecas, y Android abstrae la ubicación de las bibliotecas (es decir, dentro de un archivo o no). Sin embargo, los archivos .so necesarios nunca fueron bibliotecas verdaderas para empezar, eran solo blobs binarios de datos que cargamos en la máquina virtual Dart. Entonces, como parte de esto, las estamos convirtiendo en bibliotecas ELF (por ejemplo, https://github.com/dart-lang/sdk/commit/6d608fb52bc1926a73d986d73ab228b77cfb7ca2 y https://github.com/flutter/flutter/pull/33696).

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

Recibo este error después de agregar el fragmento de código a build.gradle
Gradle build failed to produce an Android package.

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

Recibo este error después de agregar el fragmento de código a build.gradle
Gradle build failed to produce an Android package.

https://developer.android.com/distribute/best-practices/develop/64-bit

¿Alguien podría resolver el problema? Tengo una aplicación en Flutter que solo funciona con su apk de 32 bits, pero la de 64 no funciona o no se instala. Estoy probando en un teléfono celular de 64 bits

@CgarciaTC , consulte https://github.com/flutter/flutter/issues/18494#issuecomment -500101807 para obtener la actualización más reciente

Hola a todos,

Creemos que todas las correcciones han aterrizado en la punta del árbol en el canal master . Si desea probarlos, haga lo siguiente:

  • flutter build appbundle

    De forma predeterminada, el paquete de aplicaciones contiene su código de Dart y el tiempo de ejecución de Flutter compilado para armeabi-v7a (32 bits) y arm64-v8a (64 bits)

  • flutter build apk --split-per-abi

    Este comando dará como resultado dos APK:

    build/app/outputs/apk/release/app-armeabi-v7a-release.apk
    build/app/outputs/apk/release/app-arm64-v8a-release.apk

  • flutter build apk

    Esto dará como resultado un APK grueso que contiene su código compilado para todas las ABI de destino. Dichos APK serán de mayor tamaño que sus contrapartes divididas, lo que hará que el usuario descargue binarios nativos que no son aplicables a la arquitectura de su dispositivo.

Flutter build apk --split-per-abi
Este comando dará como resultado dos APK:
build / app / outputs / apk / release / app-armeabi-v7a-release.apk
build / app / outputs / apk / release / app-arm64-v8a-release.apk

@tvolkert : en este escenario particular, ¿qué pasa con cada número de versión de lanzamiento? Hasta donde yo sé, tienen que ser diferentes, por lo que podemos subir ambos a Google Play. ¿Esa parte se gestiona de alguna manera, cuando se compilan los apks? Si no es así, ¿cómo se supone que debe manejarse?

@ angel1st se administra automáticamente cuando se https://developer.android.com/studio/build/configure-apk-splits#configure -APK-versions

@tvolkert, ¿hay alguna información sobre cuándo aterrizará en un canal estable?

Puede confirmar que esto está funcionando (después de cambiar a maestro) en varios dispositivos Android. Qué salvavidas, gracias.

@tvolkert Muchas gracias. ¿Alguna línea de tiempo para llevar esto a Flutter estable?

@ harsha973 estás etiquetando seriamente y haciendo exactamente la misma pregunta que él respondió 2 publicaciones por encima de la tuya. No solo ignorante sino al borde de la falta de respeto.

@PerLycke lo siento.

Revisé el canal maestro, actualicé flutter y ahora realmente no puedo construir la aplicación, usando el comando:
flutter build apk --release --flavor production -t lib/main.dart
el resultado es:

* What went wrong:                                                                                                 
Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForProductionRelease'.                          
> More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so' 

Las respuestas de problemas similares de StackOverflow realmente no ayudan.

@MichaelRFairhurst flutter build apk --release funcionó bien para mí, por lo que tal vez las nuevas actualizaciones en el maestro también requieran una actualización de la configuración de su sabor.

Sé que no es una respuesta, lo siento, pero al menos un punto en la dirección correcta.

¿Cuándo se volverá beta la solución?

@derolf , consulte https://github.com/flutter/flutter/issues/18494#issuecomment -498880287 como la actualización más reciente con las líneas de tiempo de destino.

Hola a todos,

Estas correcciones ahora están disponibles en el canal dev , en la versión v1.7.4 o posterior.

Mientras trato de resolver estas cosas de 64 bits, tengo el mismo problema que @michalsuryntequiqo y no puedo compilar nada ahora a través de CLI. Se compila y funciona bien a través de Android Studio ...
ejecutar flutter build apk --flavor=dev -t lib/main-dev.dart

[   +3 ms] FAILURE: Build failed with an exception.
[   +1 ms] * What went wrong:
[        ] Execution failed for task ':app:transformNativeLibsWithMergeJniLibsForDevRelease'.
[        ] > More than one file was found with OS independent path 'lib/armeabi-v7a/libapp.so'
[        ] * Try:
[        ] Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
[        ] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 1m 3s
[ +370 ms] Running Gradle task 'assembleDevRelease'... (completed in 64.0s)
[   +4 ms] "flutter apk" took 69,789ms.
[        ] "flutter apk" took 69,789ms.

médico

Editar:
Intenté con el compromiso justo antes de 8627ff433b4658195e66b9c0034902116f53d580 y produce el apk con el error habitual Gradle build failed to produce an Android package. debido a https://github.com/flutter/flutter/issues/24106

@blasten ¿ Alguna idea de cómo hacer que esto vuelva a funcionar con tus cambios?

Edición 2:
Nuevo problema abierto para esto: https://github.com/flutter/flutter/issues/34598

Leí la documentación de Flutter hoy y encontré:

Desde la línea de comando:

Ingrese cd
(Reemplazarcon el directorio de su aplicación).
Ejecutar flutter build apk --split-per-abi
(El comando flutter build tiene como valor predeterminado --release).
Este comando da como resultado dos archivos APK:

/build/app/outputs/apk/release/app-armeabi-v7a-release.apk
/build/app/outputs/apk/release/app-arm64-v8a-release.apk

https://flutter.dev/docs/deployment/android#build -an-apk

@ eugenio-tesio ¿qué códigos de versión se utilizan cuando se usa --split-per-abi ?

Lo vi en la documentación y pensé publicarlo aquí. No lo probé.
Ejecuté el comando y no funcionó. Dice:

No se pudo encontrar una opción llamada "split-per-abi".

Ejecute 'flutter -h' (o 'flutter-h ') para ver los comandos y opciones de flutter disponibles.

doctor aleteo:

Flutter 1.6.3 • canal beta • https://github.com/flutter/flutter.git
Marco • revisión bc7bc94083 (hace 4 semanas) • 2019-05-23 10:29:07 -0700
Motor • revisión 8dc3a4cde2
Herramientas • Dart 2.3.2 (compilación 2.3.2-dev.0.0 e3edfd36b2)

Ejecutando "flutter pub upgrade" en consumos_app ... 19,8s

Corriendo flutter doctor ...
Resumen del médico (para ver todos los detalles, ejecute flutter doctor -v):
[√] Flutter (Canal beta, v1.6.3, en Microsoft Windows [Versión 10.0.17134.829], configuración regional es-AR)
[√] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
[√] Android Studio (versión 3.4)
[√] IntelliJ IDEA Ultimate Edition (versión 2019.1)
[√] VS Code (versión 1.26.1)
[√] VS Code, edición de 64 bits (versión 1.33.1)
[!] Dispositivo conectado
! No hay dispositivos disponibles

Creo que esta función estará disponible pronto.

Lo vi en la documentación y pensé publicarlo aquí. No lo probé.
Ejecuté el comando y no funcionó. Dice:

No se pudo encontrar una opción llamada "split-per-abi".
Ejecute 'flutter -h' (o 'flutter -h') para ver los comandos y opciones de flutter disponibles.

doctor aleteo:

Flutter 1.6.3 • canal beta • https://github.com/flutter/flutter.git
Marco • revisión bc7bc94 (hace 4 semanas) • 2019-05-23 10:29:07 -0700
Motor • revisión 8dc3a4cde2
Herramientas • Dart 2.3.2 (compilación 2.3.2-dev.0.0 e3edfd36b2)
Ejecutando "flutter pub upgrade" en consumos_app ... 19,8s
Corriendo flutter doctor ...
Resumen del médico (para ver todos los detalles, ejecute flutter doctor -v):
[√] Flutter (Canal beta, v1.6.3, en Microsoft Windows [Versión 10.0.17134.829], configuración regional es-AR)
[√] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
[√] Android Studio (versión 3.4)
[√] IntelliJ IDEA Ultimate Edition (versión 2019.1)
[√] VS Code (versión 1.26.1)
[√] VS Code, edición de 64 bits (versión 1.33.1)
[!] Dispositivo conectado
! No hay dispositivos disponibles

Creo que esta función estará disponible pronto.

Recuerde que esto es solo en el canal dev / versión 1.7.4 en adelante. Está ejecutando beta canal / versión 1.6.3

Lo probé (construyendo y publicando usando Codemagic) y funcionó muy bien. ¡Gracias!

Sin embargo, Google todavía se queja de que no estoy usando appbundle. Dada esta advertencia, ¿publicar apks tal vez no tenga mucho sentido?

Usaría appbundle, pero esto impide que funcionen las pruebas automatizadas de Google (que generan el informe previo al lanzamiento). ¿Debo abrir una nueva edición para esto?

@nohli Actualizamos los documentos para reflejar lo último sobre paquetes de aplicaciones / APK: https://flutter.dev/docs/deployment/android#building -the-app-for-release.

No dude en presentar el problema sobre las pruebas automatizadas de Google.

Construyo mi aplicación desde el paquete, pero después de ejecutarla en dispositivos de 64 bits, dice que falta libflutter.so al compilar la aplicación tanto para dispositivos de 32 bits como para dispositivos de 64 bits. ¿Cómo agregar libflutter.so para ambas arquitecturas en un solo archivo de paquete?

@nohli Actualizamos los documentos para reflejar lo último sobre paquetes de aplicaciones / APK: https://flutter.dev/docs/deployment/android#building -the-app-for-release.

No dude en presentar el problema sobre las pruebas automatizadas de Google.

@blasten El procedimiento proporcionado en el enlace no produjo APK de 64 bits en el paquete. Cuando cargué el paquete, la tienda de Google Play tenía el mismo error intacto diciendo que su APK no es compatible con 64 bits.

@ wal33d006 vea el descargo de responsabilidad en la parte superior de la página; solo se aplica a v1.7.4 o posterior (actualmente, canales dev o maestros).

@ wal33d006 vea el descargo de responsabilidad en la parte superior de la página; solo se aplica a v1.7.4 o posterior (actualmente, canales dev o maestros).

@tvolkert No puedo ni siquiera crear mi aplicación a través de canales dev o maestros.

Esta es mi salida cuando la construyo en canales dev o maestros:

Mensaje del compilador:
file: ///Users/waleed/.pub-cache/hosted/pub.dartlang.org/cached_network_image-0.5.1/lib/cached_network_image. dart: 199 : 38: Error: El tipo de argumento 'función void (ImageInfo, bool)' no se puede asignar al tipo de parámetro 'ImageStreamListener'.

  • 'ImageInfo' es de ' package: flutter / src / painting / image_stream.dart ' ('file: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/painting/image_stream.dart ').
  • 'ImageStreamListener' es de ' paquete: flutter / src / painting / image_stream.dart ' ('archivo: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/painting/image_stream.dart ').
    Intente cambiar el tipo de parámetro o enviar el argumento a 'ImageStreamListener'.
    oldImageStream? .removeListener (_handleImageChanged);
    ^
    file: ///Users/waleed/.pub-cache/hosted/pub.dartlang.org/cached_network_image-0.5.1/lib/cached_network_image. dart: 200 : 32: Error: El tipo de argumento 'función void (ImageInfo, bool)' no se puede asignar al tipo de parámetro 'ImageStreamListener'.
  • 'ImageInfo' es de ' package: flutter / src / painting / image_stream.dart ' ('file: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/painting/image_stream.dart ').
  • 'ImageStreamListener' es de ' paquete: flutter / src / painting / image_stream.dart ' ('archivo: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/painting/image_stream.dart ').
    Intente cambiar el tipo de parámetro o enviar el argumento a 'ImageStreamListener'.
    _imageStream.addListener (_handleImageChanged);
    ^
    file: ///Users/waleed/.pub-cache/hosted/pub.dartlang.org/cached_network_image-0.5.1/lib/cached_network_image. dart: 210 : 34: Error: El tipo de argumento 'función void (ImageInfo, bool)' no se puede asignar al tipo de parámetro 'ImageStreamListener'.
  • 'ImageInfo' es de ' package: flutter / src / painting / image_stream.dart ' ('file: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/painting/image_stream.dart ').
  • 'ImageStreamListener' es de ' paquete: flutter / src / painting / image_stream.dart ' ('archivo: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/painting/image_stream.dart ').
    Intente cambiar el tipo de parámetro o enviar el argumento a 'ImageStreamListener'.
    _imageStream? .removeListener (_handleImageChanged);
    ^
    file: ///Users/waleed/.pub-cache/hosted/pub.dartlang.org/cached_network_image-0.5.1/lib/cached_network_image. dart: 465 : 31: Error: El tipo de argumento 'Función nula (StringBuffer)' no se puede asignar al tipo de parámetro 'IterableFunción()'.
  • 'StringBuffer' es de ' dart: core '.
  • 'Iterable' es de ' dart: core '.
  • 'DiagnosticsNode' es de ' package: flutter / src / foundation / diagnostics.dart ' ('file: ///Users/waleed/Developer/flutter-sdk/flutter/packages/flutter/lib/src/foundation/diagnostics.dart ').
    Intente cambiar el tipo de parámetro o convertir el argumento a 'IterableFunción()'.
    informationCollector: (StringBuffer información) {
    ^
    El compilador terminó inesperadamente.

FALLO: La compilación falló con una excepción.

  • Donde:
    Línea de secuencia de comandos '/Users/waleed/Developer/flutter-sdk/flutter/packages/flutter_tools/gradle/flutter.gradle': 638

  • Qué salió mal:
    Error de ejecución para la tarea ':

    El proceso 'comando' / Users / waleed / Developer / flutter-sdk / flutter / bin / flutter '' terminó con un valor de salida distinto de cero 1

  • Tratar:
    Ejecute con la opción --stacktrace para obtener el seguimiento de la pila. Ejecute con la opción --info o --debug para obtener más resultados de registro. Ejecute con --scan para obtener información completa.

  • Obtenga más ayuda en https://help.gradle.org

CONSTRUCCIÓN FALLÓ en 14 s
Ejecutando la tarea de Gradle 'bundleRelease' ...
Ejecutando la tarea de Gradle 'bundleRelease' ... Hecho 15.0s
Error de liberación del paquete de tareas de Gradle con el código de salida 1

@ wal33d006 package:cached_network_image ahora es la versión 0.8.0 y estás usando 0.5.1 - parece que cuando se ejecuta contra la versión más nueva de Flutter, necesitas actualizar la restricción de tu versión en tus pubspec.yaml y flutter packages upgrade

@tvolkert, ¿está diciendo que en v1.7.4 el archivo libflutter.so se agrega automáticamente para el dispositivo de 64 bits cuando construimos el paquete usando el comando flutter build appbundle ?

@ nimesh1997 sí, aunque la compilación que lo hace estable probablemente sea una versión más nueva.

@tvolkert Cambié mi canal a ### canal maestro y también actualicé el paquete ###: versión cached_network_image a 0.8.0 cambiando dentro de pubspec.yaml. Pero cuando se ejecutan los paquetes de flutter, se actualizan. El error se muestra a continuación como este:
** Debido a que cached_network_image> = 0.7.0 depende de flutter_cache_manager ^ 0.3.2 que depende de path_provider ^ 0.5.0 + 1, cached_network_image> = 0.7.0 requiere path_provider ^ 0.5.0 + 1.

@ nimesh1997 ¿ puede presentar un problema por separado y enviarme una

@tvolkert ¿ Cuándo estará disponible la versión 1.7.4 de flutter en un canal estable y cuando el error mencionado a continuación se resuelva en la versión 1.7.4 de flutter debido a ese error, no se ejecutará en dispositivos de 64 bits (falta libflutter.so)?

Este es el resultado que obtengo cuando ejecuto flutter v1.7.4 o posterior: -

Mensaje del compilador:
archivo: ///home/zunroof-dev-4/package_flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_image-1.0.0/lib/network. dardo: 75 : 31:
Error: el tipo de argumento 'Función nula (StringBuffer)' no se puede asignar al tipo de parámetro 'IterableFunción()'.

  • 'StringBuffer' es de ' dart: core '.
  • 'Iterable' es de ' dart: core '.
  • 'DiagnosticsNode' es de ' package: flutter / src / foundation / diagnostics.dart ' ('file: ///home/zunroof-dev-4/package_flutter/flutter/packages/flutter/lib/src/foundation/diagnostics.dart ').
    Intente cambiar el tipo de parámetro o convertir el argumento a 'IterableFunción()'.
    informationCollector: (StringBuffer información) {
    ^
    archivo: ///home/zunroof-dev-4/package_flutter/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_image-1.0.0/lib/network. dart: 168 : 65: Error: El tipo de argumento 'Cadena' no se puede asignar al tipo de parámetro 'DiagnosticsNode'.
  • 'DiagnosticsNode' es de ' package: flutter / src / foundation / diagnostics.dart ' ('file: ///home/zunroof-dev-4/package_flutter/flutter/packages/flutter/lib/src/foundation/diagnostics.dart ').
    Intente cambiar el tipo de parámetro o enviar el argumento a 'DiagnosticsNode'.
    contexto: '$ runtimeType no pudo cargar $ {instrucciones.uri}',
    ^
    El compilador terminó inesperadamente.

Error al compilar, no genera registros y flutter doctor -v no apunta a errores. ¿Qué tengo que hacer?

Si está implementando la aplicación en Play Store, se recomienda utilizar la aplicación
agrupa o divide el APK para reducir el tamaño del APK.
Para generar un paquete de aplicaciones, ejecute:
flutter build appbundle --target-platform android-arm, android-arm64
Obtenga más información en: https://developer.android.com/guide/app-bundle
Para dividir los APK por ABI, ejecute:
flutter build apk --target-platform android-arm, android-arm64
--split-per-abi
Más información sobre:
https://developer.android.com/studio/build/configure-apk-splits#configur
e-abi-split
Inicializando gradle ... 7,4s
Resolución de dependencias ... 4,3s
registerResGeneratingTask está en desuso, use registerGeneratedResFolders (FileCollection)
registerResGeneratingTask está en desuso, use registerGeneratedResFolders (FileCollection)
registerResGeneratingTask está en desuso, use registerGeneratedResFolders (FileCollection)
Ejecutando la tarea de Gradle 'ensamblarRelease' ...
Ejecutando la tarea de Gradle 'ensamblarRelease' ... Hecho 9,0s

La compilación de Gradle no pudo producir un paquete de Android.

@ leonardop21 prueba con

aleteo ejecutar -v

@canewsin

DIOS MÍO. No tengo ni idea de qué hacer ahora

La compilación de Gradle no pudo producir un paquete de Android.

0 throwToolSalir (paquete: flutter_tools / src / base / common.dart: 28: 3)

1 _buildGradleProjectV2

(paquete: flutter_tools / src / android / gradle.dart: 514: 7)

2 _asyncThenWrapperHelper.

(dardo: async-patch / async_patch.dart: 77: 64)

3 _rootRunUnary (dart: async / zone.dart: 1132: 38)

4 _CustomZone.runUnary (dart: async / zone.dart: 1029: 19)

5 _FutureListener.handleValue (dardo: async / future_impl.dart: 126: 18)

6 Future._propagateToListeners.handleValueCallback

(dardo: async / future_impl.dart: 639: 45)

7 Future._propagateToListeners (dart: async / future_impl.dart: 668: 32)

8 Future._complete (dardo: async / future_impl.dart: 473: 7)

9 _SyncCompleter.complete (dardo: async / future_impl.dart: 51: 12)

10 _AsyncAwaitCompleter.complete (dart: async-patch / async_patch.dart: 28: 18)

11 _completeOnAsyncReturn (dart: async-patch / async_patch.dart: 294: 13)

12 runCommandAndStreamOutput (paquete: flutter_tools / src / base / process.dart)

13 _asyncThenWrapperHelper.

(dardo: async-patch / async_patch.dart: 77: 64)

14 _rootRunUnary (dart: async / zone.dart: 1132: 38)

15 _CustomZone.runUnary (dardo: async / zone.dart: 1029: 19)

16 _FutureListener.handleValue (dardo: async / future_impl.dart: 126: 18)

17 Future._propagateToListeners.handleValueCallback

(dardo: async / future_impl.dart: 639: 45)

18 Future._propagateToListeners (dart: async / future_impl.dart: 668: 32)

19 Future._completeWithValue (dart: async / future_impl.dart: 483: 5)

20 Future._asyncComplete.

(dardo: async / future_impl.dart: 513: 7)

21 _rootRun (dart: async / zone.dart: 1124: 13)

22 _CustomZone.run (dardo: asíncrono / zona.dart: 1021: 19)

23 _CustomZone.runGuarded (dardo: async / zone.dart: 923: 7)

24 _CustomZone.bindCallbackGuarded.

(dardo: async / zone.dart: 963: 23)

25 _microtaskLoop (dart: async / schedule_microtask.dart: 41: 21)

26 _startMicrotaskLoop (dart: async / schedule_microtask.dart: 50: 5)

27 _runPendingImmediateCallback

(dardo: parche-aislante / parche_isolate.dart: 116: 13)

28 _RawReceivePortImpl._handleMessage

(dardo: parche-aislante / parche_isolate.dart: 173: 5)

Hemos actualizado nuestros documentos para indicar cómo se pueden crear APK con binarios de 32 y 64 bits. https://flutter.dev/docs/deployment/android#building -the-app-for-release.

Utilice el canal dev : v1.7.9 o superior. El equipo está trabajando para promover los últimos cambios a la versión beta para este viernes (28/06/2019).

Mensaje del compilador:
archivo: ///Users/systemgnk/Desktop/flutter/.pub-cache/hosted/pub.dartlang.org/flare_flutter-1.5.2/lib/flare. dart: 1033 : 18: Error: El tipo de argumento 'Int32List' no se puede asignar al tipo de parámetro 'Uint16List'.

  • 'Int32List' es de ' dart: typed_data '.
  • 'Uint16List' es de 'dart: typed_data'.
    Intente cambiar el tipo de parámetro o convertir el argumento en 'Uint16List'.
    índices: _índices, texturasCoordenadas: _uvBuffer);
    ^
    El compilador terminó inesperadamente.

FALLO: La compilación falló con una excepción.

  • Donde:
    Línea de secuencia de comandos '/Users/systemgnk/Desktop/flutter/packages/flutter_tools/gradle/flutter.gradle': 631

  • Qué salió mal:
    Error de ejecución para la tarea ':

    El proceso 'comando' / Users / systemgnk / Desktop / flutter / bin / flutter '' terminó con un valor de salida 1 distinto de cero

  • Tratar:
    Ejecute con la opción --stacktrace para obtener el seguimiento de la pila. Ejecute con la opción --info o --debug para obtener más resultados de registro. Ejecute con --scan para obtener información completa.

  • Obtenga más ayuda en https://help.gradle.org

CONSTRUCCIÓN FALLÓ en 22 s
Ejecutando la tarea de Gradle 'ensamblarRelease' ...
Ejecutando la tarea de Gradle 'ensamblarRelease' ... Hecho 23.3s
Error de ensamblaje de la tarea de Gradle con el código de salida 1

[✓] Flutter (desarrollo de canal, v1.7.10, en Mac OS X 10.13.6 17G65, configuración regional en-US)
• Flutter versión 1.7.10 en / Users / systemgnk / Desktop / flutter
• Revisión del marco 9a3a7490c8 (hace 2 días), 2019-06-25 15:59:15 +0200
• Revisión del motor ae8e6d9f46
• Dart versión 2.4.0

[✓] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
• SDK de Android en / Users / systemgnk / Library / Android / sdk
• Ubicación del NDK de Android no configurada (opcional; útil para la compatibilidad con perfiles nativos)
• Plataforma android-28, herramientas de compilación 28.0.3
• Binario de Java en: / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Versión de Java OpenJDK Runtime Environment (compilación 1.8.0_152-release-1248-b01)
• Se aceptan todas las licencias de Android.

[✓] Xcode: desarrollo para iOS y macOS (Xcode 10.1)
• Xcode en /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, versión de compilación 10B61
• CocoaPods versión 1.6.0

[✓] Herramientas de iOS: desarrolle para dispositivos iOS
• ios-deploy 1.9.4

[✓] Chrome: desarrollo para la Web
• Chrome en / Applications / Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (versión 3.3)
• Android Studio en / Aplicaciones / Android Studio.app/Contents
• Complemento Flutter versión 33.3.1
• Complemento de Dart versión 182.5215
• Versión de Java OpenJDK Runtime Environment (compilación 1.8.0_152-release-1248-b01)

[✓] Dispositivo conectado (4 disponibles)
• SDK de Android creado para x86 • emulador-5554 • android-x86 • Android 7.0 (API 24) (emulador)
• iPhone del sistema • 73145c33ee6d180a2db3d4a96b908ceb4c49065b • ios • iOS 12.3.1
• macOS • macOS • darwin-x64 • Mac OS X 10.13.6 17G65
• Chrome • chrome • web-javascript • Google Chrome 75.0.3770.100

• ¡No se encontraron problemas!

Sigo teniendo problemas con la construcción de apk.
Solo estaba disponible para construir una apk de 32 bits en un canal estable.

Creo que necesito esperar hasta que el equipo de flutter solucione este error en lugar de usar dev o master channel sdk.

Gracias.

@JaeyoungChu Consulte 2d-inc / Flare-Flutter # 79

@ctrysbita Gracias por el enlace. Cambié el canal a maestro y cambié el tipo de _indices de Int32List a Uint16List.
apk que se carga en Play Store no tiene advertencia para 64bit y se está ejecutando después de la instalación desde la página de prueba de Play Store.

Tengo otros problemas con el sdk de flutter del canal de desarrollo, como que no aparece el cuadro de diálogo de permiso para la ubicación y el mapa de Google no se muestra en ios y no se puede mostrar el archivo de imagen grande por http (imagen de red en caché). Esos problemas no están seguros debido al canal de desarrollo, pero cuando volví a estable y compilé nuevamente, todos los problemas desaparecieron. No tengo mucho tiempo para profundizar en este tema, por lo que no estoy 100% seguro. Lo siento, pero tal vez alguien reciba una pista de estos problemas.

Esta fue mi solución:

  1. en app gradle
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
  1. ejecutar flutter build apk --release --target-platform=android-arm
  2. sube app-armeabi-v7a-release.apk a Play Store
  3. incremento versionCode
  4. ejecutar flutter build apk --release --target-platform=android-arm64
  5. sube app-arm64-v8a-release.apk a Play Store

Google Play Store servirá la aplicación de acuerdo con la arquitectura del dispositivo. Los dispositivos de 32 bits están contentos, los dispositivos de 64 bits están contentos y estoy contento de saber que el tamaño de mi APK sigue siendo relativamente pequeño y al mismo tiempo sirve para ambas arquitecturas.

Si incluimos soporte para ambas arquitecturas en el mismo APK, espere que el tamaño de su aplicación sea de más de 10 MB

¿DONDE? ¿DÓNDE agregamos la sección de divisiones al archivo gradle? Lo agregué entre flutter {} y dependencias {} y no compilará el primer APK como dice:

Revise la configuración de su proyecto Gradle en la carpeta android /.

Claramente, esto no es correcto, ya que este es el único cambio que he realizado en el proyecto desde mi última compilación.

@ ArtfulDodgerB92 Gracias por la solución. ¿Qué canal usaste para construir apk y versión?

¿DONDE? ¿DÓNDE agregamos la sección de divisiones al archivo gradle? Lo agregué entre flutter {} y dependencias {} y no compilará el primer APK como dice:

Revise la configuración de su proyecto Gradle en la carpeta android /.

Claramente, esto no es correcto, ya que este es el único cambio que he realizado en el proyecto desde mi última compilación.

@ ArtfulDodgerB92 debería estar dentro de la sección android{} , como está escrito aquí: https://developer.android.com/studio/build/configure-apk-splits.html

Para su información, el siguiente anuncio se envió a [email protected] con respecto a nuestro soporte de 64 bits.

https://groups.google.com/forum/#!topic/flutter -announce / oIzwT9EDczc

¿Alguna noticia sobre un próximo lanzamiento beta?

@nohli retrasamos el lanzamiento beta unos días para obtener una solución (revertir el compromiso) en https://github.com/flutter/flutter/issues/35291. Estamos trabajando para lanzar una versión beta lo antes posible.

Esto ahora está en vivo en el canal beta, en la versión v1.7.8+hotfix.2

Esto ahora está en vivo en el canal beta, en la versión v1.7.8+hotfix.2

¿Cómo generar apk de lanzamiento?

Esto ahora está en vivo en el canal beta, en la versión v1.7.8+hotfix.2

¿Cómo generar apk de lanzamiento?

Aquí está la instrucción https://flutter.dev/docs/deployment/android

Esto ahora está en vivo en el canal beta, en la versión v1.7.8+hotfix.2

¿Cómo generar apk de lanzamiento?

Aquí está la instrucción https://flutter.dev/docs/deployment/android

lo intenté pero no funcionaba a los 32

lo intenté pero no funcionaba a los 32

¿Qué quieres decir con 32 ? ¿Como "Puedo generar una apk grasa, y esa apk funciona en un dispositivo de 64 bits, pero falla en un dispositivo de 32 bits"?

¿Puede publicar el resultado de flutter doctor , su paso a paso (por ejemplo, este es el paso 2 de progard https://flutter.dev/docs/deployment/android#step-2---enable- ofuscación-o-minificación), ¿está generando APK o AAB, y qué dispositivo está probando?

todavía tenemos que poner
ndk { abiFilters 'armeabi-v7a' , 'x86', 'armeabi' } en el gradle ot ya no es necesario después de la corrección en beta ??

@ksamj eso no es necesario.

lo intenté pero no funcionaba a los 32

¿Qué quieres decir con 32 ? ¿Como "Puedo generar una apk grasa, y esa apk funciona en un dispositivo de 64 bits, pero falla en un dispositivo de 32 bits"?

¿Puede publicar el resultado de flutter doctor , su paso a paso (por ejemplo, este es el paso 2 de progard https://flutter.dev/docs/deployment/android#step-2---enable- ofuscación-o-minificación), ¿está generando APK o AAB, y qué dispositivo está probando?

Resumen del médico (para ver todos los detalles, ejecute flutter doctor -v):
[✓] Flutter (canal beta, v1.7.8 + hotfix.2, en Mac OS X 10.14.5 18F132, configuración regional ru-RU)

[✓] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
[✓] Xcode: desarrollo para iOS y macOS (Xcode 10.2.1)
[✓] Herramientas de iOS: desarrolle para dispositivos iOS
[✓] Android Studio (versión 3.4)
[✓] Dispositivo conectado (1 disponible)

• ¡No se encontraron problemas!

Resumen del médico (para ver todos los detalles, ejecute flutter doctor -v):
[✓] Flutter (canal beta, v1.7.8 + hotfix.2, en Mac OS X 10.14.5 18F132, configuración regional ru-RU)

[✓] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
[✓] Xcode: desarrollo para iOS y macOS (Xcode 10.2.1)
[✓] Herramientas de iOS: desarrolle para dispositivos iOS
[✓] Android Studio (versión 3.4)
[✓] Dispositivo conectado (1 disponible)

• ¡No se encontraron problemas!
Resumen del médico (para ver todos los detalles, ejecute flutter doctor -v):
[✓] Flutter (canal beta, v1.7.8 + hotfix.2, en Mac OS X 10.14.5 18F132, configuración regional ru-RU)

[✓] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
[✓] Xcode: desarrollo para iOS y macOS (Xcode 10.2.1)
[✓] Herramientas de iOS: desarrolle para dispositivos iOS
[✓] Android Studio (versión 3.4)
[✓] Dispositivo conectado (1 disponible)

• ¡No se encontraron problemas!
construir apk
Hice todo como en las instrucciones pero no se instala en 32 bits

Hice todo como en las instrucciones pero no se instala en 32 bits

¿Alguna captura de pantalla / registro que muestre que la instalación de la apk de 32 bits en el dispositivo de 32 bits no fue exitosa, y qué modelo de dispositivo es ese?

Hola a todos,

v1.7.8+hotfix.2 se ha lanzado al canal estable, por lo que esta solución ahora está disponible en todos los canales. ¡Gracias a todos por su paciencia y ayuda en el camino!

Hice todo como en las instrucciones pero no se instala en 32 bits

¿Alguna captura de pantalla / registro que muestre que la instalación de la apk de 32 bits en el dispositivo de 32 bits no fue exitosa, y qué modelo de dispositivo es ese?

gracias por la ayuda, traté de compilar appbundle y funcionó.

@tvolkert Mismo problema, compruébalo. https://github.com/flutter/flutter/issues/31962#issuecomment -509458960

@ nimesh1997 ese problema no tiene nada que ver con este. Si no encontró útiles las respuestas proporcionadas en el problema vinculado, tal vez podría considerar publicar una pregunta de Stackoverflow con su problema.

@tvolkert , solo para aclarar, la revisión anterior se puede usar para crear apks separados de acuerdo con las instrucciones de flutter docs , ¿correcto?
Por lo tanto, no será necesario realizar ningún otro cambio en el archivo gradle como se describe en soluciones parciales anteriores.
¡Gracias por ti y el resto del equipo, excelente trabajo y entrega a tiempo!

Acabo de compilar una de mis aplicaciones con la revisión más reciente. Como resultado, el app-production-armeabi-v7a-release.apk compilado no se puede ejecutar en Galaxy S3 mini (Android OS 4.1.2); después de la pantalla de inicio, la aplicación se cierra sin ninguna notificación.
Sin embargo, puedo ejecutar con éxito el mismo apk en teléfonos 64, por ejemplo, Galaxy S8.
así es como ejecuto el aleteo desde la línea de comando:

flutter build apk --target = "lib / config / main_production.dart" --flavor = producción --split-per-abi

y aquí está mi flutter doctor -v

[√] Flutter (canal estable, v1.7.8 + hotfix.2, en Microsoft Windows [Versión 10.0.17763.557], configuración regional en-US)
• Flutter versión 1.7.8 + hotfix.2 en E: \ DevToolsflutter
• Revisión del marco 2e540931f7 (hace 7 días), 2019-07-02 09:31:07 -0700
• Revisión del motor b1cb0d9e9b
• Dart versión 2.4.0

[√] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 28.0.3)
• SDK de Android en E: \ DevTools \ Android \ Sdk
• Ubicación del NDK de Android no configurada (opcional; útil para la compatibilidad con perfiles nativos)
• Plataforma android-28, herramientas de compilación 28.0.3
• ANDROID_SDK_ROOT = E: \ DevTools \ Android \ Sdk
• Binario de Java en: E: \ DevTools \ android-studio \ jre \ bin \ java
• Versión de Java OpenJDK Runtime Environment (compilación 1.8.0_152-release-1343-b01)
• Se aceptan todas las licencias de Android.

[√] Android Studio (versión 3.4)
• Android Studio en E: \ DevTools \ android-studio
• Complemento Flutter versión 37.0.1
• Complemento de Dart, versión 183.6270
• Versión de Java OpenJDK Runtime Environment (compilación 1.8.0_152-release-1343-b01)

[√] Dispositivo conectado (1 disponible)
• SDK de Android creado para x86 • emulador-5554 • android-x86 • Android 8.1.0 (API 27) (emulador)

• ¡No se encontraron problemas!

Además, el apk fat tampoco se puede ejecutar, después de la instalación (en el mismo dispositivo arm-32) y ejecutarlo, simplemente se cierra.
Hágame saber cómo proceder y resolver el problema, ¡gracias!

@ angel1st ¿ es posible que pueda compartir su archivo AAB y / o APK aquí para que podamos ayudarlo a solucionar problemas?

@truongsinh - claro, aquí están:

app-production-releases.zip

He subido ambos APK, aunque el supuesto problema es con la versión arm-32 como se indicó anteriormente.

Chicos, mientras tanto, ¿alguien sería tan amable y les diría (si lo saben) qué pasaría después del 1 de agosto en Google Play Store, en caso de que no tengan la versión arm-64 de su aplicación? ser servido a dispositivos arm64 o no podrá cargar la versión única de arm32 o ambas?

@ angel1st Pude ejecutar la aplicación (app-production-armeabi-v7a-release.apk) en Android 4.4.2 Galaxy S4. ¡Buena aplicación!

Sospecho que esto es muy específico para Galaxy S3 mini / Android OS 4.1.2. Mientras tanto, solicité esta configuración para ver si puedo reproducir el problema.

@ angel1st aquí está la fuente más informativa: https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

El requisito [material de 64 bits] no se aplica a:

  • APK o paquetes de aplicaciones que se orientan explícitamente a Wear OS o Android TV, que son factores de forma que actualmente no admiten el código de 64 bits.
  • APK o paquetes de aplicaciones que no se distribuyen a dispositivos con Android 9 Pie o posterior.

A partir del 1 de agosto de 2019:

  • Todas las aplicaciones nuevas y las actualizaciones de aplicaciones que incluyen código nativo deben proporcionar versiones de 64 bits además de versiones de 32 bits cuando se publican en Google Play.

En otras palabras, las aplicaciones continúan distribuyéndose, aunque no puede cargar una nueva versión de la aplicación existente o publicar una nueva aplicación sin cumplimiento.

@ angel1st Pude reproducir este problema en un Galaxy S3 mini con sistema operativo Android 4.1.2.

El logcat es:

[ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library 'libapp.so' due to error 'Cannot load library: load_library[1093]: Library 'libapp.so' not found'.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/fml/platform/posix/native_library_posix.cc(16)] Could not open library 'libapp.so' due to error 'Cannot load library: load_library[1093]: Library 'libapp.so' not found'.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm_data.cc(19)] VM snapshot invalid and could not be inferred from settings.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm.cc(238)] Could not setup VM data to bootstrap the VM from.
07-10 00:16:50.298 8739-8739/? E/flutter: [ERROR:flutter/runtime/dart_vm_lifecycle.cc(89)] Could not create Dart VM instance.
07-10 00:16:50.298 8739-8739/? A/flutter: [FATAL:flutter/shell/common/shell.cc(218)] Check failed: vm. Must be able to initialize the VM.

Presenté https://github.com/flutter/flutter/issues/35838 mientras tanto.

cc @ jason-simmons

@truongsinh : gracias por la descripción general.

@blasten : gracias por los prontos comentarios. Hasta donde tengo entendido, no hay nada que pueda hacer en un cajero automático, pero el monitor # 35838 con los dedos cruzados se resolverá en algún momento de este mes. Creo que el mismo problema aparecerá en cualquier otra aplicación para Android 4.1.2 compilada con el hotfix más reciente.
Para su información, la aplicación apk compilada con la versión estable anterior de flutter no tiene este problema (S3 mini con Android 4.1.2 es uno de mis dispositivos de prueba).

Alguien más recibió un correo electrónico de Google hoy, diciendo

"Acción requerida: actualice sus aplicaciones para que sean compatibles con 64 bits antes del 1 de agosto de 2019"

aunque ya publica versiones de 32 bits y 64 bits?

Dice

Para el 1 de agosto de 2019, todas las aplicaciones que usan código nativo deben proporcionar una versión de 64 bits para poder publicar una actualización. En el momento del envío de este correo electrónico, al menos una de sus aplicaciones * aún no cumple con el requisito

* Nota: esta lista de aplicaciones refleja la mejor estimación de Google en el momento del envío de este correo electrónico. (...)

Supongo que la "mejor estimación" de Google no es correcta.

Gracias por el equipo de Flutter. Actualizo Flutter y construyo un canal estable y la advertencia desaparece.
¡Espero no tener un error con los probadores, pero hasta ahora no encontré ningún error con el dispositivo real!

Gracias Team Flutter, la actualización de Flutter con la revisión soluciona este problema al compilar .aab

Gracias al equipo de flutter por este logro. ¡Ahora para continuar programado!

@ angel1st También tengo problemas con algunos dispositivos Samsung.

https://github.com/flutter/flutter/issues/36128

@ abdullayev007 - ¡gracias! Te sugiero que eches un vistazo al # 35838, podría estar relacionado de alguna manera.

Hice todo como en las instrucciones pero no se instala en 32 bits

¿Alguna captura de pantalla / registro que muestre que la instalación de la apk de 32 bits en el dispositivo de 32 bits no fue exitosa, y qué modelo de dispositivo es ese?
IMG-20190710-WA0000

El dispositivo es Samsung M10

Probé la última versión de flutter del canal dev: v1.8.4. También creé un proyecto nuevo: el proyecto Vanilla Flutter e intenté crear una versión firmada a partir de él. Se compila y el tamaño de la aplicación es de solo 10,4 MB. Pero probé todos los pasos anteriores en este camino, nada ayudó. ¿Alguien puede dar una secuencia clara de pasos para crear una compilación que podamos enviar a Play Store con aab o apk con emulador y dispositivo local desde flutter? Ha pasado más de una semana, tenemos un proyecto construido en flutter que no se mueve a prod en Android, pero podemos publicarlo en la tienda de aplicaciones en iOS. Un poco de ayuda será genial.

`[✓] Flutter (Desarrollo de canal, v1.8.4, en Mac OS X 10.14.5, configuración regional en-US)
• Flutter versión 1.8.4 en / Users / muthu / muthu / devapps / flutter
• Revisión del marco 954714c967 (hace 7 días), 2019-08-02 10:10:39 -0700
• Revisión del motor 26368225b5
• Dart versión 2.5.0 (compilación 2.5.0-dev.1.0 bd049f5b53)

[!] Cadena de herramientas de Android: desarrollo para dispositivos Android (SDK de Android versión 29.0.1)
• SDK de Android en ../Library/Android/sdk
• Ubicación del NDK de Android no configurada (opcional; útil para la compatibilidad con perfiles nativos)
• Plataforma android-29, herramientas de compilación 29.0.1
• Binario de Java en: / Applications / Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Versión de Java OpenJDK Runtime Environment (compilación 1.8.0_152-release-1343-b01)
✗ Estado de la licencia de Android desconocido.
Intente reinstalar o actualizar su Android SDK Manager.
Consulte https://developer.android.com/studio/#downloads o visite https://flutter.dev/setup/#android -setup
para obtener instrucciones detalladas.

[✓] Xcode: desarrollo para iOS y macOS (Xcode 10.3)
• Xcode en /Applications/Xcode.app/Contents/Developer
• Xcode 10.3, versión de compilación 10G8
• CocoaPods versión 1.7.3

[✓] Android Studio (versión 3.4)
• Android Studio en / Aplicaciones / Android Studio.app/Contents
• Complemento Flutter versión 38.2.1
• Complemento de Dart, versión 183.6270
• Versión de Java OpenJDK Runtime Environment (compilación 1.8.0_152-release-1343-b01)

[✓] Código VS (versión 1.36.1)
• Código VS en / Aplicaciones / Visual Studio Code.app/Contents
• Extensión Flutter versión 3.3.0

[✓] Dispositivo conectado (3 disponibles)
• SDK de Android creado para x86 • emulador-5554 • android-x86 • Android 9 (API 28)
(emulador) `

@muthufmass , presente un nuevo problema con detalles de lo que no funciona y cómo reproducir el error. ¡Gracias!

¿Alguien puede dar una secuencia clara de pasos para crear una compilación que podamos enviar a Play Store?

https://flutter.dev/docs/deployment/android

¿Alguien puede dar una secuencia clara de pasos para crear una compilación que podamos enviar a Play Store?

https://flutter.dev/docs/deployment/android

Estos pasos ya se siguieron, no funciona en la versión de prod. ¡La compilación de depuración funciona! Claramente encuentro una diferencia, en la compilación de depuración, los archivos .so de flutter están presentes, pero no con la versión de lanzamiento. Esos son los que crean problemas para instalar el apk en el emulador o en dispositivos con apk firmado.

@muthufmass , presente un nuevo problema con detalles de lo que no funciona y cómo reproducir el error. ¡Gracias!

Espero haber compartido los pasos aclarados anteriores. Creación de una nueva aplicación usando flutter create - código vanilla con el último flutter sdk. No se puede crear una versión de lanzamiento, mientras que las versiones de depuración funcionan sin problemas. Diferencia significativa entre la versión prod y dev del apk en cuanto al tamaño. Intenté todos los pasos anteriores, pero no pude crear una versión de lanzamiento que se ejecute. La compilación ocurre súper rápido y el archivo viene con menos de 11 mb con el lanzamiento, mientras que con la depuración apk viene alrededor de 40mb +. Debug apk funciona, mientras que el apk firmado con la versión prod no se instala ni siquiera.

Screen Shot 2019-08-09 at 8 29 12 PM

@muthufmass cuando presente el nuevo problema, incluya la versión del SDK de Android, el modelo del dispositivo, el resultado del doctor y los pasos a partir de flutter create .

@muthufmass y la salida de adb logcat.

Este problema está cerrado; presente un nuevo problema para que podamos rastrearlo correctamente.

levantó un boleto por separado ahora https://github.com/flutter/flutter/issues/37935

Si tenía sabores en su proyecto y desea admitir tanto x64 como x32, simplemente agregue la carpeta jniLibs a su carpeta de sabor y funcionará muy bien, así
image

¿Cómo puedo hacer esto en adobe animate cc?
Necesito más información

La consola de Google Play ha comenzado recientemente a deshabilitar el botón de despliegue debido a varias advertencias. Y una de esas advertencias es usar apk en lugar del archivo .aab. Existen soluciones para crear un archivo .aab si el proyecto se ha creado en Android Studio o Unity. Pero, ¿qué pasa si la apk ha sido creada por Animate CC o Haxe / Flash Develop? ¿Hay alguna forma de convertir?

@newapproach no me queda claro si tu comentario tiene algo que ver con Flutter. ¿Estaría dispuesto a presentar un nuevo problema con más detalles? ¡Gracias!

Tengo el mismo problema, pero flutter.so no está incluido en la carpeta "armeabi-v7a.
Solo tiene bibliotecas de terceros para x86 y armeabi-v7a, pero no arm64.
Me gustaría crear flutter solo para "armeabi-v7a con
ndk {
abiFilters "armeabi-v7a" // tampoco funciona "armeabi", "x86",
}
y establecer como plataforma de destino como @ mravn-google sugiere para android-arm.

APK sin especificar arch y no incluir bibliotecas
screen shot 2018-07-26 at 21 06 53

APK con bibliotecas y sin especificaciones de brazo
screen shot 2018-07-26 at 21 10 30

APK con especificar arch e incluir bibliotecas
screen shot 2018-07-26 at 21 12 58

¿Alguna sugerencia de cómo depurar otros pasos?

También encontré este error, ¿está arreglado? Me podrias ayudar?

Recomiendo preguntar en Stack Overflow o abrir un nuevo error. Dudo que este error cerrado sea el lugar adecuado para que la gente lo ayude a resolver el problema anterior. ¡Gracias!

Esta fue mi solución:

  1. en app gradle
splits {
        // Configures multiple APKs based on ABI.
        abi {
            // Enables building multiple APKs per ABI.
            enable true
            // By default all ABIs are included, so use reset() and include to specify that we only
            // want APKs for armeabi-v7a and arm64-v8a.

            // Resets the list of ABIs that Gradle should create APKs for to none.
            reset()

            // Specifies a list of ABIs that Gradle should create APKs for.
            include "armeabi-v7a", "arm64-v8a"

            // Specifies that we do not want to also generate a universal APK that includes all ABIs.
            universalApk false
        }
    }
  1. ejecutar flutter build apk --release --target-platform=android-arm
  2. sube app-armeabi-v7a-release.apk a Play Store
  3. incremento versionCode
  4. ejecutar flutter build apk --release --target-platform=android-arm64
  5. sube app-arm64-v8a-release.apk a Play Store

Google Play Store servirá la aplicación de acuerdo con la arquitectura del dispositivo. Los dispositivos de 32 bits están contentos, los dispositivos de 64 bits están contentos y estoy contento de saber que el tamaño de mi APK sigue siendo relativamente pequeño y al mismo tiempo sirve para ambas arquitecturas.

Si incluimos soporte para ambas arquitecturas en el mismo APK, espere que el tamaño de su aplicación sea de más de 10 MB

no funciona ... cuando lo veo en Play Store en el píxel 2, dice que no es compatible con este dispositivo

Funciona, muchas aplicaciones conocidas han implementado múltiples APK de esta manera y han dejado que Play Store sirva el apropiado en el dispositivo apropiado durante mucho tiempo.

Sin embargo, los paquetes de aplicaciones son la forma moderna de hacer esto.

Funciona, muchas aplicaciones conocidas han implementado múltiples APK de esta manera y han dejado que Play Store sirva el apropiado en el dispositivo apropiado durante mucho tiempo.

Sin embargo, los paquetes de aplicaciones son la forma moderna de hacer esto.

No sé por qué no aparece en la Play Store de Pixel 2 para mí, entonces ... Lo sigo exactamente, dos veces, solo por si acaso ...
Usé el paquete de aplicaciones y mi aplicación se bloquea, por lo que estoy buscando alternativas

Este hilo se ha bloqueado automáticamente ya que no ha habido ninguna actividad reciente después de que se cerró. Si aún experimenta un problema similar, abra un nuevo error, incluida la salida de flutter doctor -v y una reproducción mínima del problema.

¿Fue útil esta página
0 / 5 - 0 calificaciones