当前位置: 首页 > news >正文

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

更新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 versionfinal 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")) {//修改compileSdkVersionfinal newContent = androidPathFileContent.replaceAllMapped(RegExp(r"compileSdkVersion\s+(\d+)"), (match) {return "compileSdkVersion $compileSdk";});//修改compileSdkfinal 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对话 该死的空格 点此快速加群

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 安卓中Room持久化库的使用
  • 哈希 | Java | (hot100) 力扣 49
  • 重头开始嵌入式第十九天(Linux系统编程 文件IO)
  • Android-->产物收集(含apk文件重命名, aab文件重命名)
  • Mutual_Voting_for_Ranking_3D_Correspondences
  • AFSim 仿真系统----坐标系统
  • 基于CNN的医学X-Ray图像分类全程解析
  • 在Notebook中使用backtrader绘图出现 Javascript Error: IPython is not defined
  • CUDA编程06 - 性能优化指南
  • 【微信小程序】WXSS 模板样式
  • 详解C++的四大特性(封装,继承,多态,抽象)
  • 大数据信用报告查询哪家平台的比较好?
  • 视频美颜SDK的核心技术与直播美颜插件的开发详解
  • 国内首个支持国产化信创的开源云原生平台
  • 业界首个OpenTelemetry结合eBPF的向导式可观测性平台APO正式开源
  • 30天自制操作系统-2
  • bearychat的java client
  • create-react-app做的留言板
  • DataBase in Android
  • IOS评论框不贴底(ios12新bug)
  • java取消线程实例
  • Linux gpio口使用方法
  • linux学习笔记
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • MQ框架的比较
  • Python语法速览与机器学习开发环境搭建
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • vue-loader 源码解析系列之 selector
  • Webpack入门之遇到的那些坑,系列示例Demo
  • windows下mongoDB的环境配置
  • 从0到1:PostCSS 插件开发最佳实践
  • 给初学者:JavaScript 中数组操作注意点
  • 基于遗传算法的优化问题求解
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 数组的操作
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 数据库巡检项
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​【已解决】npm install​卡主不动的情况
  • #pragma 指令
  • #QT(串口助手-界面)
  • #Spring-boot高级
  • #Z0458. 树的中心2
  • (1)svelte 教程:hello world
  • (39)STM32——FLASH闪存
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (java)关于Thread的挂起和恢复
  • (LeetCode 49)Anagrams
  • (二十三)Flask之高频面试点
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (函数)颠倒字符串顺序(C语言)