Flutter-->AAPT: error: resource android:attr/lStar not found.

news2024/9/22 9:37:20

更新Flutter 3.24.0之后, 打包出现AAPT: error: resource android:attr/lStar not found.问题, 这里出一个我的解决方案.

更新Flutter 3.24.0之后, Android编译sdk需要使用34, 否则就会出现很多问题…

由于很多库都不可能及时更新适配到Android sdk 34, 所以可以等pub get将子库拉取到本地之后, 在本地手动将compileSdkVersioncompileSdk修改为34,即可解决本文问题.

作为程序猿,那肯定不可能手动修改, 这种体力活是干不会的.

祭出本文干货dart脚本:

import 'dart:convert';
import 'dart:io';

///
/// 新版本的flutter 3.24.0使用Android 34编译,
/// 所有子库不使用sdk 34编译的话, 就会在打包的时候报错.
/// ```
/// AAPT: error: resource android:attr/lStar not found.
/// ```
/// ```
/// android {
///     // Conditional for compatibility with AGP <4.2.
///     if (project.android.hasProperty("namespace")) {
///         namespace 'com.rmawatson.flutterisolate'
///     }
///
///     compileSdkVersion 34
///
///     defaultConfig {
///         minSdkVersion 16
///     }
/// }
/// ```
///
/// 此脚本用于在打包前, 修改子库的compileSdkVersion编译版本.
///
void main() async {
  final currentPath = Directory.current.path;
  print('脚本工作路径->$currentPath');

  //Android sdk compile sdk version
  final compileSdk = 34;

  //获取所有依赖的子库
  final dependenciesFile = File("$currentPath/.flutter-plugins-dependencies");
  final androidDependencies =
      jsonDecode(dependenciesFile.readAsStringSync())?["plugins"]?["android"];
  if (androidDependencies is List) {
    int index = 0;
    for (final dependency in androidDependencies) {
      final name = dependency["name"];
      final path = dependency["path"];
      if (path != null) {
          print(
              "正在修改[${index + 1}/${androidDependencies.length}]->$path -> compileSdk:$compileSdk");
          amendAndroidCompileSdkVersion(path, compileSdk);
      }
      index++;
    }
  }
}

/// 核心修改方法
/// 修改子库flutter工程中android工程中`build.gradle`文件中的`compileSdkVersion`和`compileSdk`
/// [flutterPath] flutter工程路径
/// [compileSdk] 修改后的编译版本
void amendAndroidCompileSdkVersion(String flutterPath, int compileSdk) {
  final androidPath = "$flutterPath/android";
  final androidPathFile = File("$androidPath/build.gradle");
  if (androidPathFile.existsSync()) {
    final androidPathFileContent = androidPathFile.readAsStringSync();
    if (androidPathFileContent.contains("compileSdkVersion")) {
      //修改compileSdkVersion
      final newContent = androidPathFileContent
          .replaceAllMapped(RegExp(r"compileSdkVersion\s+(\d+)"), (match) {
        return "compileSdkVersion $compileSdk";
      });
      //修改compileSdk
      final newContent2 =
          newContent.replaceAllMapped(RegExp(r"compileSdk\s+(\d+)"), (match) {
        return "compileSdk $compileSdk";
      });
      //写入文件
      androidPathFile.writeAsStringSync(newContent2);
      print("修改成功->$androidPathFile", 250);
    }
  }
}

Flutter工程的任意位置, 新建一个dart文件, 粘贴上述代码, 使用dart运行main方法即可.


群内有各(pian)种(ni)各(jin)样(qun)的大佬,等你来撩.

联系作者

点此QQ对话 该死的空格 点此快速加群

在这里插入图片描述

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

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

相关文章

硅谷物理服务器有哪些关键优势和特点

硅谷的物理服务器设施全球知名&#xff0c;为各类企业提供了卓越的IT基础设施支持。下面将逐一探讨硅谷物理服务器的关键优势和特点&#xff0c;rak小编为您整理发布硅谷物理服务器有哪些关键优势和特点。 1. 卓越的性能 高性能计算能力&#xff1a;硅谷的物理服务器采用最新一…

Authentik:开源身份提供商

Authentik 是一个开源身份提供商&#xff0c;旨在实现最大的灵活性和适应性。 它可轻松集成到现有环境中并支持新协议。 它是一个全面的解决方案&#xff0c;用于在您的应用程序中实现注册、帐户恢复等功能&#xff0c;无需手动管理这些任务。 Authentik 可以无缝集成到现有…

arcgis打开不同tif格式编码的栅格数据

1、如下图&#xff0c;将文件包包解压打开&#xff0c;看到【2020年GDP数据】。 2、点击进入【2020年GDP数据】文件夹如下图所示。接着去打开arcgis软件。 3、按照步骤来&#xff0c;在arcgis【目录】里面添加【文件夹】然后选中你刚刚解压的【GDP文件夹数据】&#xff0c;最…

21 注意力机制—自注意力

目录 1.自注意力和位置编码跟CNN,RNN对比位置编码(position encoding)1、和 CNN / RNN 不同,自注意力并没有记录位置信息2、为了使用序列的顺序信息,通过在输入表示中添加位置编码将位置信息注入到输入里3、P 的元素具体计算如下:位置编码矩阵绝对位置信息相对位置信息总…

Linux运维篇-yum命令报错 /lib64/libcurl.so.4相关

目录 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a; 项目场景&#xff1a; centos7&#xff0c;8&#xff0c;同样也适用openEuer&#xff0c;Kylin等redhat系的国产化操作系统 问题描述 在使用yum命令时报错&#xff1a; 主要报错信息为&#xff1…

诈骗未成功是否构成犯罪?

诈骗未成功不一定构成犯罪。在刑法上&#xff0c;构成诈骗罪需要满足特定的构成要件&#xff0c;包括有非法占有的目的、实施了虚构事实或隐瞒真相的行为、对方因此陷入错误认识并处分财产、行为人或第三方取得财产、被害人遭受财产损失。如果诈骗行为未能成功&#xff0c;即被…

[C#]基于winform结合photocartoon算法实现人物卡通化源码实现

【官方框架】 https://github.com/minivision-ai/photo2cartoon 简介 人像卡通风格渲染的目标是&#xff0c;在保持原图像ID信息和纹理细节的同时&#xff0c;将真实照片转换为卡通风格的非真实感图像。我们的思路是&#xff0c;从大量照片/卡通数据中习得照片到卡通画的映射…

HDRP管线下的开放世界游戏与跨平台优化,《仙剑世界》万字分享

《仙剑世界》作为仙剑 IP 系列的最新⻓篇⼒作&#xff0c;从故事和剧情上延续了仙剑的精髓。在仙剑 33 年的世界观下&#xff0c;《仙剑世界》打造出了⼀个由浪漫唯美的江南全景、磅礴恢弘的蜀⼭、神秘苗疆等区域构成的 384 平⽅公⾥完整的⽆缝开放⼤世界。以东⽅题材为起点&am…

Java入门-接口:JDK8开始接口新增方法,接口的多继承,接口注意事项

&#xff08;一&#xff09;新增接口注意事项&#xff1a; 接口A&#xff1a; package interface_jdk8;public interface A {//1.新增默认方法&#xff1a;必须使用defalut修饰&#xff0c;默认会被public修饰//注意&#xff1a;这种默认方法可以带方法体/*实例方法&#xff1…

openssh升级到9.8

升级步骤 1、查看版本 [rootlocalhost openssh-8.8p1]# ssh -V OpenSSH_8.8p1, OpenSSL 1.0.2k-fips 26 Jan 20172、下载安装包 cd /usr/local/src wget https://www.zlib.net/zlib-1.3.1.tar.gz wget https://www.openssl.org/source/openssl-3.2.1.tar.gz wget https://cdn.…

在小程序添加公司官网访问

在小程序添加公司官网访问 有时候由于业务需要&#xff0c;在小程序上加入自己公司官网的访问地址&#xff0c;点击后跳转到官网。 本文详细讲解整个过程。 一、小程序管理台配置 进入小程序管理台 开发管理-》业务域名 加入你的公司官网域名&#xff0c;具体如下图所示&…

2024新型数字政府综合解决方案(八)

新型数字政府综合解决方案结合人工智能、大数据、区块链与云计算等先进技术&#xff0c;旨在构建一个智能、高效、透明的政务服务体系&#xff0c;通过全面整合各部门的信息资源&#xff0c;实现数据的实时共享与高效管理&#xff0c;从而大幅提升政府应对复杂社会问题的能力&a…

LookupError: Resource averaged_perceptron_tagger not found.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

如何选择较为安全的第三方依赖版本?

如何选择较为安全的第三方依赖版本&#xff1f; 本文概览1.1 前言1.1.1 学会看第三方开源库的版本发布说明1.1.2 尽可能使用 starer 匹配的第三方开源库1.1.3 参考Maven 中心仓库的安全警告信息 本文概览 本篇博文分享如何选择较为安全的第三方依赖版本的方法。 1.1 前言 众…

学习Flutter时需要了解的背景知识

关键词&#xff1a;Flutter、移动UI框架、跨平台、Widget、高效开发、自定义Widget、热重载、性能优化 摘要&#xff1a;Flutter是Google推出的开源移动UI框架&#xff0c;旨在支持高效构建高质量的原生应用&#xff0c;同时兼容iOS和Android平台。它通过热重载技术实现高效开发…

【机器人学】7-1.六自由度机器人自干涉检测-总体算法介绍

目录 前言 机器人自干涉检测方法 一 机械臂各连杆等效 二 确定一个圆柱体 三 圆柱体的空间变换 四 空间几何分析 五 关键点总结 前言 机器人在运行过程中&#xff0c;可能发生碰撞&#xff0c;碰撞物可以是外界物体&#xff0c;也可以是机器人自己的关节间发生碰撞…

Docker部署Eclipse Mosquitto开源MQTT的消息代理环境步骤(实践)

1.前言 Eclipse Mosquitto是一个开源&#xff08;EPL/EDL许可&#xff09;的消息代理&#xff0c;实现了MQTT协议的版本5.0、3.1.1和3.1。Mosquitto是轻量级的&#xff0c;适用于从低功耗单板计算机到完整服务器的所有设备。 MQTT协议提供了一种轻量级的消息传输方法&#xf…

渗透测试-行业术语

1.肉鸡 肉鸡用来比喻哪些可以随意被我们控制的计算机&#xff0c;可以是普通的个人电脑&#xff0c;也可以是大型服务器或者其他网络设备&#xff0c;我们可以像操作自己的电脑一样操作他们而不被发觉。 2.木马 表面上伪装成了正常程序&#xff0c;但是当程序被运行的时候&a…

【gitlab】gitlab-ce:17.3.0-ce.0 1:使用docker engine安装

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

趣味算法------约瑟夫环

目录 问题概述&#xff1a; 问题解析&#xff1a; 图文示意&#xff1a; 处决开始&#xff1a; 第一轮结束&#xff1a; 第二轮结束&#xff1a; 最后一轮&#xff1a; 寻找规律&#xff1a; 最终思路&#xff1a; 具体代码&#xff1a; 总结&#xff1a; 问题概述&…