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

news/2024/4/15 17:35:23

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.mrgr.cn/p/48657772

相关文章

论文阅读NAM:Normalization-based Attention Module

Abstarct 识别不太显著的特征是模型压缩的关键。然而&#xff0c;在革命性的注意力机制中却没有对其进行研究。在这项工作中&#xff0c;我们提出了一种新的基于归一化的注意力模块&#xff08;NAM&#xff09;&#xff0c;它抑制了不太显著的权重。它对注意力模块应用了权重稀…

Tiktok api接口 获取视频列表、用户详情,视频无水印数据采集

通过 https://www.idatariver.com 提供开箱即用的Tiktok数据采集API,接口可以方便获取Tiktok的公开数据,且计费透明。iDataRiver平台 https://www.idatariver.com/zh-cn/ 提供开箱即用的Tiktok数据采集API,供用户按需调用。 接口使用详情请参考Tiktok接口文档 接口列表 1. …

华为OD技术面试案例3-2024年

技术一面&#xff1a; 1.手撕代码&#xff0c;算法题&#xff1a; 【最小路径和】 手撕代码通过&#xff0c;面试官拍了照片 2.深挖项目&#xff0c;做过的自认为最好的一个项目&#xff0c;描述做过的项目的工作过程&#xff0c;使用到哪些技术&#xff1f; 技术二面&…

云上攻防-云服务篇弹性计算服务器云数据库实例元数据控制角色AK控制台接管

知识点: 1、云服务-弹性计算服务器-元数据&SSRF&AK 2、云服务-云数据库-外部连接&权限提升 章节点&#xff1a; 云场景攻防&#xff1a;公有云&#xff0c;私有云&#xff0c;混合云&#xff0c;虚拟化集群&#xff0c;云桌面等 云厂商攻防&#xff1a;阿里云&am…

学不动系列-git-hooks和husky+lintstage

git-hooks 为了保证提交的代码符合规范&#xff0c;可以在上传代码时进行校验。常用husky来协助进行代码提交时的eslint校验。husky是基于git-hooks来实现&#xff0c;在使用husky之前&#xff0c;我们先来研究一下git-hooks。 构建git-hooks测试项目 需要使用git-hooks就需…

docker容器虚拟化与传统虚拟机比较

容器就是将软件打包成标准化单元,以用于开发,交付和部署 1.容器镜像是轻量的,可以执行的独立软件包,包含软件运行所需要的所有内容:代码,运行时环境,系统工具,系统库和设置。 2.容器化软件在任何环境中都能够始终如一地运行 3.容器赋予了软件独立性,使其免受外在环境差…

java数据结构与算法刷题-----LeetCode543. 二叉树的直径

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路 采用深度优先遍历&#xff0c;从最底下的结点开始&…

应用发布策略

应用发布策略 蓝绿发布 # 概念定义: 蓝绿发布是一种以最小的停机时间做服务升级的策略。需要维护的两个版本的环境分别称为 “蓝环境” 和 “绿环境”。一般当前生产流量指向环境为绿环境,而在蓝环境上部署新版本,短时间内作为测试环境。#发布流程 首先将一半的服务流量从负…

用JavaScript动态提取视频中的文字

现阶段整个社会短视频&#xff0c;中视频为王&#xff0c;文字传播虽然被弱化&#xff0c;但在业务中还是有一定的传播价值&#xff0c;今天就来讲一讲如何使用js动态提取视频中的字幕。 先来看看效果&#xff1a; 屏幕录制2024-02-29 15.40.18 一&#xff0c;tesseract.js介…

Spring Boot + liteflow 规则引擎,太香了!

作者:豫州牧 链接:https://juejin.cn/post/7296771770098745344 1、前言 在日常的开发过程中,经常会遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。 在这样的场景下,使用策略和模板模式的结合可以很好的解决这个问题,但是使用编码的方式会使得文件太多,…

问题:arcgis10.1连接SDE数据库时提示,未找到arcgis许可

转自:https://blog.csdn.net/wodeboke_123/article/details/103800407 因为我的许可文件是到2020年,所以SDE许可过期。1.问题如下:2.用PL/SQL打开自己的数据库,如图: 3.搜索SERVER_CONFIG表,其中的AUTH_KEY字段是许可信息,用语句改为新的授权信息即可 4.修改sql语句为…

视频在线压缩

video2edit 一款免费的在线视频编辑软件&#xff0c;可以进行视频合并、视频剪辑、视频压缩以及转换视频格式等。 链接地址&#xff1a;在线视频编辑器和转换器 - 编辑&#xff0c;转换和压缩视频文件 打开视频压缩页面&#xff0c;上传想要压缩视频&#xff0c;支持MP4&…

搭建一个大模型API服务

搭建一个大模型API服务 本文将介绍如何使用SWIFT框架搭建一个大模型API服务,以方便后续做RAG、Agent的开发工作。 环境准备 基础环境操作系统:Ubuntu 18.04.5 LTS (GNU/Linux 3.10.0-1127.el7.x86_64 x86_64) Anaconda3:Anaconda3-2023.03-1-Linux-x86_64 根据服务器网络情况…

Anaconda与Python环境在Windows中的部署

本文介绍在Win10电脑中,安装Anaconda环境与Python语言的方法~本文介绍在Win10电脑中,安装Anaconda环境与Python语言的方法。在这里需要注意,本文介绍的方法是在电脑自身原本不含有Python的情况下进行的;如果大家电脑中原本就下载、安装过Python语言,需要首先将原本安装Pyt…

可视化FAISS矢量空间并调整RAG参数提高结果精度

随着开源大型语言模型的性能不断提高,编写和分析代码、推荐、文本摘要和问答(QA)对的性能都有了很大的提高。但是当涉及到QA时,LLM通常会在未训练数据的相关的问题上有所欠缺,很多内部文件都保存在公司内部,以确保合规性、商业秘密或隐私。当查询这些文件时,会使得LLM产生…

Genymotion

Genymotion Desktop download - Genymotion Android Emulator,Best Wish 不负年华

【python】Python Turtle绘制流星雨动画效果【附源码】

在这篇技术博客中&#xff0c;我们将学习如何使用 Python 的 Turtle 模块绘制一个流星雨的动画效果。通过简单的代码实现&#xff0c;我们可以在画布上展现出流星闪耀的场景&#xff0c;为视觉带来一丝神秘与美感。 一、效果图&#xff1a; 二、准备工作 &#xff08;1)、导入…

Ubuntu中安装使用QEMU/KVM/virt-manager运行虚拟机

本文为原创,首次发布于我的个人博客网站Ubuntu中安装使用QEMU/KVM/virt-manager运行虚拟机有时候我们需要在同一台计算机中使用多种不同操作系统环境,基于已有的同一堆硬件资源来获得不同操作系统各自的便利性。对此,常用的解决方案主要有:在物理机器中安装使用双系统 在宿…

编辑器脚本工具——批量修改场景中的静态网格体

介绍 这个功能可以让用户在场景中批量替换静态模型 使用方式 在场景中选择完想要更改的静态模型在弹出的窗口选择要替换的模型替换完成蓝图https://blueprintue.com/blueprint/p1p8imoa/本文来自博客园,作者:荒坂株式会社,博客内容均属学习笔记,只做交流之用

4-如何进行细分市场的分析-02 细分行业的构成和基本情况

如何快速摸清行业的构成&#xff0c;通常会看同行或自己做过的相似的行业&#xff0c;会根据不同的行业来采用不同的研究方法。对于成熟的行业和不同的行业都会有一些比较通用的研究方式。 假设我们是在分析某一个行业&#xff0c;在分析行业的时候它的本质还是市场分析&#…