【Flutter/Android】新建项目,打开android 目录,报错红色以及开启 MultiDex 配置

1 报错红色问题。

单独打开 Flutter 项目下的 android 项目即可。
也就是说,你要一部分原生代码开发,你就需要自己把 android 项目单独出去做(其实就相当于android 项目引用 Flutter的dart部分)。也就是说,在 Flutter 项目里打开 android 目录是没啥意义的,你要配置 安卓端,就自己单独打开 android 目录。所以爆红是很正常的(只要不报错)

2 低版本适配 MultiDex

由于 Flutter 新建项目之后,安卓端的SDK 最低默认 19(安卓4.4) < 21(安卓5.0) (我写下这篇文章的时候),所以需要手动开启 MultiDex 配置。

如果你 不适配 安卓4.4 ,直接改成 SDK 21 (安卓5.0)即可:然后就默认启用,就完全不需要你手动去做什么。

在这里插入图片描述
如果你确实需要使用,请开启:
按照官网的说明即可:
Flutter 说明:https://flutter.cn/docs/deployment/android#enabling-multidex-support
安卓官网说明:https://developer.android.google.cn/build/multidex?hl=zh-cn#keep

另外怕一些小白看文档头大,简单说明一下给你们做参考:


1 flutter run --debug
2 选择一个平台(android)
3 y
然后就会自动帮你配置好了,非常之快,那么下面的内容基本就不用看了Flutter 工具支持以便捷的方式启用 multidex 支持。当工具提示你需要支持时,跟随工具的指示进行调整,是最快的方式。
Flutter 工具会检测 multidex 的构建错误,并提示你是否要更改 Android 项目。
在同意的情况下,项目会自动依赖 androidx.multidex:multidex,并且让项目的 Application 继承于 FlutterMultiDexApplication。
提示:
在设定了目标 Android SDK 版本为 21 和以上时,其已经包含了 Multidex 的原生支持。
不过,我们不建议为了解决对 Multidex 的支持而将目标 SDK 设定为 21+,这可能会无意中忽略掉那些运行着旧设备的用户。----------另外-----------------------
你也可以根据 Android 的指南,手动配置你的 Android 项目以支持 multidex。
请务必指定 multidex keep 文件 以包含以下内容:
io/flutter/embedding/engine/loader/FlutterLoader.class
io/flutter/util/PathUtils.class同时也要包含所有在应用启动时加载的其他类。参考 multidex 文档 了解更详细的手动适配指南。一般Android SDK指定为 21 以及以上,都不需要指定(默认启用)
但是Flutter 默认是19(当前是这样的)所以是需要启用的。但是本项目不需要sdk 那么低,所以还是修改sdk为21以上:
---------------------操作1------------------------------------
android {defaultConfig {...minSdk = 15 // 建议改成 21 (安卓5.0),就不用考虑下面哪些操作了....因为默认启动了targetSdk = 33multiDexEnabled = true // 改成 21 之后不需要这个}...
}dependencies {implementation("androidx.multidex:multidex:2.0.1")
}-------------------操作2--------------------------------------
(三选一)
根据您是否替换 Application 类,执行以下某项操作:
——1——不替换 Application 类,请修改清单文件:<applicationandroid:name="androidx.multidex.MultiDexApplication" >...</application>——2——替换 Application 类,请对其进行更改以扩展 MultiDexApplication,如下所示:
class MyApplication : MultiDexApplication() {...}
建议使用——3——替换 Application 类,但无法更改基类,则可以改为替换 attachBaseContext() 方法并调用 MultiDex.install(this) 以启用 MultiDex:class MyApplication : SomeOtherApplication() {override fun attachBaseContext(base: Context) {super.attachBaseContext(base)MultiDex.install(this)// 方法3}}注意:在 MultiDex.install() 完成之前,不要通过反射或 JNI 执行 MultiDex.install() 或其他任何代码。MultiDex 跟踪功能不会追踪这些调用,从而导致出现 ClassNotFoundException,或因 DEX 文件之间的类分区错误而导致验证错误。现在,当您构建应用时,Android 构建工具会根据需要构造主要 DEX 文件 (classes.dex) 和辅助 DEX 文件(classes2.dex 和 classes3.dex 等)。
然后,构建系统会将所有 DEX 文件打包到 APK 中。在运行时,MultiDex API 使用特殊的类加载器来搜索适用于您的方法的所有 DEX 文件,而不是只在主 classes.dex 文件中搜索。
对 MultiDex 库的限制
MultiDex 库具有一些已知的局限性。将该库纳入您的应用 build 配置时,请考虑以下方面:(1)启动期间在设备的数据分区上安装 DEX 文件的过程相当复杂,如果辅助 DEX 文件较大,可能会导致应用无响应 (ANR) 错误。为避免此问题,请启用【代码缩减】,以尽量减小 DEX 文件的大小,并移除未使用的代码部分。(2)当搭载的版本低于 Android 5.0(API 级别 21)时,使用 MultiDex 不足以避开 linearalloc 限制(问题 37008143)。此上限在 Android 4.0(API 级别 14)中有所提高,但这并未完全解决该问题。(3)在低于 Android 4.0 的版本中,您可能会在达到 DEX 索引限制之前达到 linearalloc 限制。因此,如果您的目标 API 级别低于 14,请在这些版本的平台上进行全面测试,因为您的应用可能会在启动时或加载特定类组时出现问题。【代码缩减】可以减少甚至有可能消除这些问题!

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

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

相关文章

时间序列分析实战(六):ARIMA乘法(疏系数)模型建模及预测

&#x1f349;CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一&#xff5c;统计学&#xff5c;干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项&#xff0c;参与研究经费10w、40w级横向 文…

紫外-可见吸收光谱法(UV-Vis)是最常用吸收光谱技术 市场持续扩大

紫外-可见吸收光谱法&#xff08;UV-Vis&#xff09;是最常用吸收光谱技术 市场持续扩大 紫外-可见吸收光谱法&#xff0c;也称为紫外-可见分光光度法&#xff0c;简称UV-Vis&#xff0c;利用样品分子在紫外和可见光激发下产生电子能级跃迁形成的吸收光谱&#xff0c;对元素进行…

【lv14 day10内核模块参数传递和依赖】

一、模块传参 module_param(name,type,perm);//将指定的全局变量设置成模块参数 /* name:全局变量名 type&#xff1a; 使用符号 实际类型 传参方式 bool bool insmod xxx.ko 变量名0 或 1 invbool bool insmod xxx.ko 变量名0 或 1 charp char * insmod xxx.ko 变量名“字符串…

Sora - 真正单兵作战时代来临了

一、 OpenAI Sora 视频生成模型技术报告总结 不管是在视频的保真度、长度、稳定性、一致性、分辨率、文字理解等方面&#xff0c;Sora都做到了SOTA&#xff08;当前最优&#xff09;。 技术细节写得比较泛&#xff08;防止别人模仿&#xff09;大概就是用视觉块编码&#xff08…

Java数据结构----时间和空间复杂度

目录 1.算法效率 2.时间复杂度 2.1 时间复杂度的概念 2.2 大O的渐进表示法 2.3 推导大O阶方法 3.4 常见时间复杂度计算举例 3.空间复杂度 1.算法效率 算法效率分析分为两种&#xff1a;第一种是时间效率&#xff0c;第二种是空间效率。时间效率被称为时间复杂度&#xf…

Linux-基础命令(黑马学习笔记)

Linux的目录结构 Linux的目录结构 Linux的目录结构是一个树形结构 Windows系统可以拥有多个盘符&#xff0c;如C盘、D盘、E盘 Linux没有盘符这个概念&#xff0c;只有一个根目录 /&#xff0c;所有文件都在它下面 Linux路径的描述方式 ● 在Linux系统中&#xff0c;路径之…

idea 创建打包 android App

1、使用 idea 创建 android 工程 2、 配置构建 sdk 3、配置 gradle a、进入 gradle 官网&#xff0c;选择 install &#xff08;默认是最新版本&#xff09; b、选择包管理安装&#xff0c;手动安装选择下面一个即可 c、安装 sdk 并通过 sdk 安装 gradle 安装 sdk&#xff1a…

元学习(meta-learning)的通俗解释

目录 1、什么是元学习 2、元学习还可以做什么 3、元学习是如何训练的 1、什么是元学习 meta-learning 的一个很经典的英文解释是 learn to learn&#xff0c;即学会学习。元学习是一个很宽泛的概念&#xff0c;可以有很多实现的方式&#xff0c;下面以目标检测的例子来解释…

3. Java中的锁

文章目录 乐观锁与悲观锁乐观锁(无锁编程,版本号机制)悲观锁两种锁的伪代码比较 通过 8 种锁运行案例,了解锁锁相关的 8 种案例演示场景一场景二场景三场景四场景五场景六场景七场景八 synchronized 有三种应用方式8 种锁的案例实际体现在 3 个地方 从字节码角度分析 synchroni…

移动端学习:如何把exe转换成apk

exe转换成apk是怎么实现的呢?-电脑端-一门科技将exe文件转换成apk文件是一个比较常见的需求,尤其是对于一些开发者和用户来说。但是,这个过程并不是简单的复制和粘贴。在本文中,我们将介绍exe转换成apk的原理和详细介绍。首先,我们需要了解什么https://www.yimenapp.net/k…

前端sql条件拼接js工具

因为项目原因&#xff0c;需要前端写sql&#xff0c;所以弄了一套sql条件拼接的js工具 ​ /*常量 LT : " < ", LE : " < ", GT : " > ", GE : " > ", NE : " ! ", EQ : " ", LIKE : " like &qu…

【Excel PDF 系列】EasyExcel + iText 库

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …