“La compilación falló debido al uso de la incrustación obsoleta de Android v1” al compilar la aplicación Flutter

2 minutos de lectura

Avatar de usuario de Ali Hassan
alí hassan

to migrate your project. You may also pass the --ignore-deprecation flag to
ignore this check and continue with the deprecated v1 embedding. However,
the v1 Android embedding will be removed in future versions of Flutter.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The detected reason was:

  C:\Users\ALI HASSAN\OneDrive\Desktop\New folder\arcore_app\example\android\app\src\main\AndroidManifest.xml uses
  `android:name="io.flutter.app.FutterApplication"`
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Build failed due to use of deprecated Android v1 embedding.

  • Aclare su problema específico o proporcione detalles adicionales para resaltar exactamente lo que necesita. Tal como está escrito actualmente, es difícil decir exactamente lo que está preguntando.

    – Comunidad
    Bot

    9 de marzo de 2022 a las 17:53

Avatar de usuario de Ahmed El Rhaouti
Ahmed El Rhaouti

Necesitas cambiar el android\aplicación\src\principal\AndroidManifest.xml expediente.

De :

<application
    android:name="io.flutter.app.FlutterApplication"
    ...

A :

<application
        android:name="${applicationName}"
        ...

agregue estas tres líneas si no existe:

<meta-data
        android:name="flutterEmbedding"
        android:value="2" />
          ...

Esto lo utiliza la herramienta Flutter para generar GeneratedPluginRegistrant.java.

Cambie el archivo android AndroidManifest.xml

<application
    android:name="io.flutter.app.FlutterApplication"
...
 </application>

A

android:name="${applicationName}"

También se agregaron estas dos líneas

<meta-data
                android:name="flutterEmbedding"
                android:value="2" />

  • ¿Leíste la primera respuesta a esta publicación antes de comentar? stackoverflow.com/a/71457907/7969733

    – sgrysoft

    21 de junio de 2022 a las 20:33

Dependiendo de lo que esté haciendo, puede optar por ignorar el error.

Yo, por ejemplo, estoy siguiendo una clase en línea que proporciona un código de plantilla para cada lección. Sin embargo, el código de la plantilla está desactualizado y realmente no necesito migrarlo para continuar.

En Android Studio esto se puede lograr agregando el --ignore-deprecation marca al campo ‘Argumentos de ejecución adicionales:’:

Ignorar desaprobación

Si dejaste tu proyecto hace mucho tiempo y regresaste ahora, tienes algunas cosas que cambiar, pero son simples si las conoces:

Manifiesto
Cambia lo que hayas escrito antes aquí con:

<application android:name="${applicationName}"

añadir :

<application android:exported="true"...>
<meta-data
    android:name="flutterEmbedding"
    android:value="2" />..

En el tema principal de la actividad principal atención a corregir con:

<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="your theme" />

Espero que tengas el kotlin clase como referencia, para que pueda ir en el caso de MainActivity.kt:

package com.yourpackage.....
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity() {
 //If you have some native code put it back
}

Si usted tiene Java Actividad principal:

package com.yourpackage.....

import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
// You can keep this empty class or remove it.  
}

También vale la pena actualizar targetSdkVersion y compilarSdkVersionen mi caso en: 31

Puede encontrar la solución creando un nuevo proyecto con el SDK más reciente y comparando el archivo android\app\src\main\AndroidManifest.xml de los dos proyectos.

  • Imagina que estás en un ambiente de producción y se lo sugieres al gerente.

    – sgrysoft

    21/06/2022 a las 20:31

Avatar de usuario de Devdip rachchh
Devdip rachchh

en el archivo principal Manifest.xml,

establecer android: exportado = “falso”.

otra solución es,

en la aplicación gradle,

cambie Targetsdkversion a 30 y Compilesdkversion a 31

trabajó para mi

  • Imagina que estás en un ambiente de producción y se lo sugieres al gerente.

    – sgrysoft

    21/06/2022 a las 20:31

Avatar de usuario de Michael
Miguel

Exactamente como el error le indica que está utilizando una versión de incrustación obsoleta. Para actualizar a una versión más nueva, haga lo siguiente:

  1. Vaya a android/app/src/main/java/[your/package/name]/MainActivity.java abre MainActivity.java o MainActivity.kt.

  2. Eliminar las siguientes dependencias

    import android.os.Bundle;
    import io.flutter.app.FlutterActivity;
    import io.flutter.plugins.GeneratedPluginRegistrant;
    

y reemplácelos con la siguiente línea

import io.flutter.embedding.android.FlutterActivity;
  1. Abra android/app/src/main/AndroidManifest.xml.

  2. Reemplace la referencia a FlutterApplication en la etiqueta de la aplicación con ${applicationName} de la siguiente manera

     <application
     android:name="${applicationName}"
     >
     <!-- code omitted -->
     </application>
    

5.Elimine todas las etiquetas con la clave android:name=”io.flutter.app.android.SplashScreenUntilFirstFrame”. y agregue una nueva etiqueta en la aplicación.

<meta-data
android:name="flutterEmbedding"
android:value="2" />

después de eso todo debería funcionar bien

¿Ha sido útil esta solución?