flutter 专题三十二 Flutter Android embedding升级到v2

一、背景

为了更好地支持将Flutter添加到现有项目的执行环境,旧的Android平台端包装器在 io.flutter.app.FlutterActivity 及其相关类托管Flutter运行时已被弃用。取而代之的则是 io.flutter.embedding.android.FlutterActivity 及其相关的类。如果我们不进行升级,那么运行flutter doctor命令时会报如下的错误。

Your Flutter application is created using an older version of the Android
embedding. It is being deprecated in favor of Android embedding v2. Follow the
steps athttps://flutter.dev/go/android-project-migrationto 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:No `/Users/mac/android/AndroidManifest.xml` file
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

如果是纯Flutter工程,只需要打开 \android\app\src\main 目录下的AndroidManifest.xml文件,然后添加如下的代码即可解决。

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

二、迁移

如果是原生混合开发的项目,则可以参考下面的步骤进行:

  1. 首先,打开FlutterActivity主页面,重新导入 import io.flutter.embedding.android.FlutterActivity 

  1. 如果你在MainActivity.java中有自定义平台通道代码,那么你需要做如下的更新:


换句话说,就是将 onCreate 中代码的通道注册部分移到 onfigureFlutterEngine 方法中,并使用 flutterEngine.getDartExecutor(). getbinarymessenger() 作为二进制信使,而不是 getFlutterView() 

  1. 接下来,打开 android/app/src/main/AndroidManifest.xml ,全局替换 FlutterApplication 为 ${applicationName} ,如下。
<applicationandroid:name="io.flutter.app.FlutterApplication"><!-- code omitted -->
</application>
<applicationandroid:name="${applicationName}"><!-- code omitted -->
</application>
  1. 更新启动画面,移除所有带有android键的标签 :name="io.flutter.app.android.SplashScreenUntilFirstFrame" ,然后在styles.xml中添加一个启动主题,将所需的启动屏幕配置为Drawable的背景。
<!-- You can name this style whatever you'd like -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"><item name="android:windowBackground">@drawable/[your_launch_drawable_here]</item>
</style>

接着,配置MainActivity以启动主题,然后切换到正常的主题,直到Flutter呈现其第一帧:

<activity android:name=".MainActivity"android:theme="@style/LaunchTheme"// some code omitted><!-- Specify that the launch screen should continue being displayed --><!-- until Flutter renders its first frame. --><meta-dataandroid:name="io.flutter.embedding.android.SplashScreenDrawable"android:resource="@drawable/launch_background" /><!-- Theme to apply as soon as Flutter begins rendering frames --><meta-dataandroid:name="io.flutter.embedding.android.NormalTheme"android:resource="@style/NormalTheme"/><!-- some code omitted -->
</activity>
  1. 在 <application> 中添加一个新的标记。
<meta-dataandroid:name="flutterEmbedding"android:value="2" />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/66481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MetaGPT - 多Agent框架

文章目录 一、关于 MetaGPT功能介绍快速开始的演示视频教程 二、安装Pip安装Docker安装 一、关于 MetaGPT MetaGPT 为GPTs分配不同的角色&#xff0c;以形成一个协作实体来完成复杂的任务。 github : https://github.com/geekan/MetaGPTtwitter : https://twitter.com/MetaGP…

人工智能伦理困境:技术发展的界限在哪里?

引言 人工智能&#xff08;AI&#xff09;技术正以前所未有的速度改变着世界。从自动驾驶汽车到智能语音助手&#xff0c;再到精准医疗和金融预测&#xff0c;AI正在重塑各行各业。然而&#xff0c;技术进步的背后也隐藏着复杂的伦理难题&#xff0c;引发人们对AI发展边界的深刻…

平安社招 | 平安集团2025年社招笔试平安IQ新胜任力测评个性扫描16PF题库

平安集团旗下专业公司主要包括以保险、银行、资管为代表的综合金融业务和以平安健康、北大国际医院为代表的的医疗健康业务&#xff0c;涵盖金融、医疗、养老的各个领域。中国平安深化“综合金融医疗养老”服务体系&#xff0c;提供专业的“金融顾问、家庭医生、养老管家”服务…

HTML+CSS+JS制作中华传统文化主题网站(内附源码,含5个页面)

一、作品介绍 HTMLCSSJS制作一个中华传统文化主题网站&#xff0c;包含首页、文化艺术页、传统工艺页、文化遗产页、关于我们页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部导航区 包含网站 Logo、主导航菜单&#xff…

深入探讨 Android 中的 AlarmManager:定时任务调度及优化实践

引言 在 Android 开发中&#xff0c;AlarmManager 是一个非常重要的系统服务&#xff0c;用于设置定时任务或者周期性任务。无论是设置一个闹钟&#xff0c;还是定时进行数据同步&#xff0c;AlarmManager 都是不可或缺的工具之一。然而&#xff0c;随着 Android 系统的不断演…

centos服务器 /1ib64/libm.so.6: version “GLIBc 2.27’ not found 异常

centos服务器 /1ib64/libm.so.6: version “GLIBc 2.27’ not found 异常 问题 在服务器使用open3d时&#xff0c;报错缺失GLIBC_2.27&#xff0c;因为后续操作出问题会导致服务器挂&#xff0c;所以最好先备份一下。 解决 查询glibc版本 输入指令查询系统glibc版本&#x…

如何在Windows上编译OpenCV4.7.0

前言 ​ 参考&#xff1a;Win10 下编译 OpenCV 4.7.0详细全过程&#xff0c;包含xfeatures2d 这里在其基础上还出现了一些问题&#xff0c;仅供参考。 正文 一、环境 1、win10 2、cmake-gui 3、opencv4.7.0 4、VS2019 二、编译过程 1、下载需要的文件&#xff1a; 通…

大模型(LLM) 的长上下文与 RAG:评估与回顾

大模型的长上下文与 RAG 以下是本文的主要发现&#xff1a; 在问答基准测试中&#xff0c;LC 的表现通常优于 RAG 基于摘要的检索与 LC 性能相当&#xff0c;而基于块的检索则落后 RAG 在基于对话和一般性问题查询方面具有优势 本文对结果进行了深入分析&#xff0c;请查看。 …

搭建一个本地轻量级且好用的学习TypeScript语言的环境

需求说明 虽然 TypeScript 的在线 Playground 很方便 https://www.tslang.com.cn/play/&#xff0c;但毕竟是在浏览器中使用&#xff0c;没有本地的 IDE 那么顺手。所以我想搭建一个本地类似 Playground 的环境&#xff0c;这样在学习 TypeScript 的过程中&#xff0c;可以更方…

Java中线程中断的几种方式,你了解吗?

Java中线程&#xff0c;可以使用 interrupt() 方法来实现线程的中断&#xff0c;那么&#xff0c;线程中中断的方式有几种呢&#xff1f;接下来&#xff0c;我们将介绍3种不同的线程中断方式&#xff0c;跟随我们的脚步&#xff0c;一起去看看&#xff01; 目录 第一招&#xf…

GESP5级语法知识(三):双向链表、循环链表

双链表的创建与输出&#xff1a; #include<cstdio> using namespace std; struct node {int data; //data记录这个结点对应元素的值node *next,*pre; //next指向后继 pre指向前驱 }*head,*tail,*p; int n,k; int main() {scanf("%d",&n);headnew no…

homework 2025.01.07 math 6

1选择部分 二填空部分

cursor vip

https://cursor.jeter.eu.org?pf7f4f3fab0af4119bece19ff4a4360c3 可以直接复制命令使用git bash执行即可 命令&#xff1a; bash <(curl -Lk https://gitee.com/kingparks/cursor-vip/releases/download/latest/ic.sh) f7f4f3fab0af4119bece19ff4a4360c3 等待执行完成后…

touch详讲

&#x1f3dd;️专栏&#xff1a;https://blog.csdn.net/2301_81831423/category_12872319.html &#x1f305;主页&#xff1a;猫咪-9527-CSDN博客 “欲穷千里目&#xff0c;更上一层楼。会当凌绝顶&#xff0c;一览众山小。” 目录 基本语法 主要功能 常用选项详解 1. …

UE5本地化和国际化语言

翻译语言 工具 - 本地化控制板 Localization Dashboard 修改图中这几个地方就可以 点击箭头处&#xff0c;把中文翻译成英语&#xff0c;如果要更多语言就点 添加新语言 最后点击编译即可 编译完&#xff0c;会在目录生成文件夹 设置界面相关蓝图中设置 切换本地化语言 必须在…

微信小程序实现登录注册

文章目录 1. 官方文档教程2. 注册实现3. 登录实现4. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/路由跳转的几种方式&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/api/route/wx.switchTab…

【C++】18.继承

文章目录 1.继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2继承关系和访问限定符1.2.3继承基类成员访问方式的变化 1.3 继承类模板 2.基类和派生类对象赋值转换3.继承中的作用域3.1 隐藏规则&#xff1a;3.2 考察继承作用域相关选择题 4.派生类的默认成员函数4…

PostgreSQL学习笔记(二):PostgreSQL基本操作

PostgreSQL 是一个功能强大的开源关系型数据库管理系统 (RDBMS)&#xff0c;支持标准的 SQL 语法&#xff0c;并扩展了许多功能强大的操作语法. 数据类型 数值类型 数据类型描述存储大小示例值SMALLINT小范围整数&#xff0c;范围&#xff1a;-32,768 到 32,7672 字节-123INTE…

Bi-Encoder vs. Cross-Encoder

Bi-Encoder vs. Cross-Encoder Bi-Encoder 和 Cross-Encoder 是两种常见的模型架构&#xff0c;主要用于自然语言处理&#xff08;NLP&#xff09;中的文本匹配、问答、检索等任务。它们的主要区别在于如何处理输入文本以及计算相似度的方式。 1. Bi-Encoder&#xff08;双编…

PyQt5 UI混合开发,控件的提升

PromoteLabelTest.py 提升的类 import sys from PyQt5.QtWidgets import QApplication, QWidget,QVBoxLayout,QTextEdit,QPushButton,QHBoxLayout,QFileDialog,QLabelclass PromoteLabel(QLabel):def __init__(self,parent None):super().__init__(parent)self.setText("…