构建Flutter应用程序时,“由于使用了弃用的Android v1嵌入,构建失败”

mpgws1up  于 2022-12-09  发布在  Android
关注(0)|答案(9)|浏览(613)
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.
7eumitmz

7eumitmz1#

您需要更改android\app\src\main\Android清单.xml文件。
发件人:

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

收件人:

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

如果不存在,则添加以下三行:

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

Flutter工具会使用这个名称来产生GeneratedPluginRegistrant.java。

chhkpiq4

chhkpiq42#

更改Android清单. xml文件

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

发往

android:name="${applicationName}"

还加了这两行

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

vdzxcuhz3#

您可以使用最新的SDK创建一个新项目,然后比较两个项目的android\app\src\main\AndroidManifest.xml文件,从而找到解决方案。

sd2nnvve

sd2nnvve4#

根据您正在执行的操作,您可以选择忽略错误。
例如,我正在关注一个在线课程,它为每一课提供模板代码。但是,模板代码已经过时了,我并不真的需要迁移它才能继续。
在Android Studio中,这可以通过将--ignore-deprecation标志添加到'Additional run args:'字段来实现:

jhkqcmku

jhkqcmku5#

如果您很久以前就离开了项目,现在又回来了,那么您需要更改一些内容,但如果您了解这些内容,那么它们就很简单:

清单使用以下命令更改之前在此处写入的内容:

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

添加到**〈应用程序..**:

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

在主题活动中主要注意纠正用:

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

希望您有Kotlin类作为引用,这样您就可以在MainActivity.kt的情况下执行以下操作:

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

如果您有Java活动主页:

package com.yourpackage.....

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

还值得更新targetSdkVersioncompileSdkVersion,在我的情况下,请访问:31岁

vkc1a9a2

vkc1a9a26#

在主Manifest.xml文件中,
设置android:导出=“假”。
另一个解决方案是,
在应用分级中,
将目标dkversion更改为30,将编译dkversion更改为31
为我工作

bogh5gae

bogh5gae7#

正如错误消息所告诉您的,您使用的是过时的嵌入版本。要升级到较新的版本,请执行以下操作:
1.导航至android/app/源代码/main/java/[您的/软件包/名称]/MainActivity.java,打开MainActivity.java或MainActivity.kt.
1.删除以下依赖项

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

并将其替换为以下行

import io.flutter.embedding.android.FlutterActivity;

1.打开Android/应用程序/源代码/主/Android清单. xml。
1.将应用程序标记中对FlutterApplication的引用替换为${applicationName},如下所示

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

5.删除所有带有关键android的标签:name=“io.flutter.app.android.SplashScreenUntilFirstFrame”。并在应用程序下添加新标签。

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

在那之后,一切都将正常工作

nfzehxib

nfzehxib8#

只需删除android平台并重新添加android。
除去了

rm -r android

添加平台

flutter create --platforms=android .
u91tlkcl

u91tlkcl9#

您需要更改android\app\src\main\AndroidManifest.xml文件。
发件人:

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

收件人:

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

如果不存在,则添加以下三行:

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

Flutter工具会使用这个名称来产生GeneratedPluginRegistrant.java。

相关问题