从 AGP 4.1.2 到 7.5.1——XmlParser、GPathResult、QName 过时

包体积优化 · 实战论 · 怎么做包体优化? 做好能晋升吗? 能涨多少钱? “ 【小木箱成长营】包体积优化系列文章: 包体积优化 · 方法论 · 揭开包体积优化神秘面纱 包体积优化 · 工具论 · 初识包体积优化 BaguTree 包体积优化录播视频课 ” 一、引言 Hello,我是小木箱,欢迎来到小木箱成长营系列教程,今天将分享包体积优化 · 实战论 · 怎么做包体优化? 做好能晋升吗? 能涨多少钱? 上一次分享,小木箱从三个维度将 Android 包体优化方法论解释清楚,第一部分内容是针对 So 优化,第二部分内容是针对 Res 资源优化,第三部分内容是针对 Assets/Ra 阅读详情

在这里插入图片描述

新年首发,
去年的问题,今年解决~

问题 & 排查

1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:processCommonReleaseManifest'.
> org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 38; 
> 元素类型 "manifest" 必须后跟属性规范 ">" 或 "/>"。

定位到了问题所在代码,且能成功复现,异常是在 XmlUtil.serialize 里面抛出。

//问题复现
def xmlpath = projectDir.getAbsolutePath() + File.separator + "testdata" + File.separator + "AndroidManifest.xml"
println("xmlpath: " + xmlpath)

def xmlNode = new XmlParser().parse(new File(xmlpath).getPath())
println("xml node: " + xmlNode)

println("xml serialize begin!")
def serialize = groovy.xml.XmlUtil.serialize(xmlNode)
println("xml serialize done!")

在这里插入图片描述

在这里插入图片描述

我们发现复现代码中 XmlParser是一个过时的,不仅如此整个groovy.util包下都是过时的类,其中一部分过时的类使用新包groovy.xml下的同名类代替。

在这里插入图片描述
果然,更换过时类的包名重新打包没有报错了。

解决

同类目更换导包路径即可。

//过时类
import groovy.util.XmlParser;
import groovy.util.slurpersupport.GPathResult
import groovy.xml.QName


//新类
import groovy.xml.XmlParser
import groovy.xml.slurpersupport.GPathResult
import groovy.namespace.QName

其他问题

1、assets 目录:从 merged_assets 变成 assets

检查你的代码,如果有对 assets 资源的操作,注意代码适配,且新版 assets 后面没有了out 子目录,比如我的代码就需要调整路径。

//调整常量 FILE_DIR_MERGED_ASSETS,移除拼接的 out 目录
String outFolder = PluginFileUtils.adjustPath(mProject.projectDir.path,
        FileConstant.FILE_DIR_BUILD,
        FileConstant.FILE_DIR_INTERMEDIATES,
        FileConstant.FILE_DIR_MERGED_ASSETS,
        CommUtils.getFirstCharLowercaseStr(CommonManager.getmVariantName()))

在这里插入图片描述

2、微信资源混淆 NoClassDefFoundError: Could not initialize class apksigner.PasswordRetriever

问题复现:AndResGuard-core 模块本地使用 JDK17 发布版本,发版之后打包使用 JDK11。

解决:AndResGuard-core 模块使用 JDK11 发布版本,打包也使用 JDK11。

银河麒麟桌面操作系统V10(SP1)ssh服务安装与配置 在国产化的大背景下,各种国产操作系统逐步进入运维人员的视野,ssh作为linux远程连接工具,是运维人员必需的工具之一。本文主要介绍在银河麒麟桌面操作系统V10(SP1)上安装和配置ssh服务。 阅读详情

相关推荐

【RT-Thread】从零到一:RT-Thread Studio工程创建与程序下载全流程实战

本文详细介绍了RT-Thread Studio开发环境的安装与使用,从工程创建到程序下载的全流程实战指南。通过具体案例演示了如何在STM32平台上快速开发RT-Thread应用,包括时钟配置、内存优化、构建调试等关键技巧,帮助开发者高效完成嵌入式系统开发。

weixin_30336061的博客 545

Java 运行时发生 NoClassDefFoundError: Could not initialize class 的解决方法

在编译时没有异常的程序,在运行时抛出异常称 NoClassDefFoundError: Could not initialize class {类名}。 根据 Java 官方文档,NoClassDefFoundError 是由于 JVM 或 ClassLoader 实例为了调用某个类的方法或 new 类的新的实例,而试图加载该类的定义时,却无法找到其定义,而抛出的异常。需要注意,对于抛出该异常的情况,试图找到的类的定义在编译时存在,只是在运行时不知所踪。 NoClassDefFoundError 总的来

亦碎流年的博客 11万+

图形学基础|屏幕空间反射(SSR)

图形学基础|屏幕空间反射(SSR) 文章目录图形学基础|屏幕空间反射(SSR)一、前言二、反射技术概述2.1 环境贴图反射2.2 IBL反射2.3 平面反射(Planar Reflections)2.4 屏幕空间反射(Screen Space Reflection)2.4.1 SSR的基本原理2.4.2 SSR的优缺点三、SSR(Screen-Space Reflection)实现3.1 Efficient GPU Screen-Space Ray Tracing3.1.1 2D Raymarching v

【黑键】 3万+

XML: The processing instruction target matching "[xX][mM][lL]" is not allowed...解决方案

现象: ERROR  - Error on line 2 of document  : The processing instruction target matching "[xX][mM][lL]" is not allowed. Nested exception: The processing instruction target matching "[xX][mM][lL]" i

syy_syy的专栏 2178

RV1106G3的AOV下的yolov5调试记录

本文介绍了基于LuckFoxPicoMax开发板的RV1106芯片调试经验,重点包括AOV(Always-On Vision)和Yolov5目标检测的实现。在硬件方面,板载1TOPS NPU、256MB内存,并更换为SPI NOR存储。软件调试涉及MK配置文件修改、设备树调整(按键唤醒和sensor配置)以及程序自启动设置。Yolov5模型优化为320*320尺寸,推理时间约45ms。系统采用VI采图与AI识别通过共享内存通信的方案,实测功耗在20-35mA范围。文章还指出了当前存在的功耗优化、ISP调试等

fzktongyong的博客 1715

拿下华为性格测试!

华为性格测试指南

weixin_41171614的博客 5286

配置文件报错:元素类型 "XXX" 必须后跟属性规范 ">" 或 "/>"

这是一个比较常见的配置错误,一般分两步。 有的情况的确是xml文件出现了语法问题,可以让IDE来帮我们检查xml文件是否真的出现了语法错误。把xml内容复制进IDE中,让IDE帮我们检查错误。 如上图所示,上面的xml文件中出现了语法错误,错误情况一目了然。 如果IDE没报语法错误,可能是不同编辑器的原因。 例如,我喜欢用notepad++ 来编辑xml文件,然后在eclipse中调用...

weixin_34214500的博客 4064

1.4 KFD 设备文件的获取与驱动握手协议

本文分析了OpenClose模块中libhsakmt与KFD内核驱动建立通信的过程。首先通过hsaKmtOpenKFD()函数打开/dev/kfd设备文件,建立用户态与内核态的通信通道。随后通过AMDKFD_IOC_GET_VERSION ioctl命令完成版本握手,确认双方的接口兼容性。KFD驱动采用Major.Minor二级版本号体系,当前主要版本为1,从1.1演进到1.19不断添加新功能。整个过程构成了用户态与内核态之间的"建连协议",是所有后续GPU操作的基础前提。

图形/计算GPU的驱动与虚拟化技术分享园地 609

元素类型 * 必须后跟属性规范 ">" 或 "/>"

刚开始学习框架的过程中经常会遇到异常: org.xml.sax.SAXParseException; lineNumber: 27; columnNumber: 38; 元素类型 "collection" 必须后跟属性规范 ">" 或 "/>"。 能看出来是配置文件中的属性写错了,但是不知道是哪里错了,都是直接删掉然后重写,这种方法也能解决。但是并没

caoPengFlying的博客 3万+

【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中)

你是否在全网苦寻【图像去噪(ImageDenoising)】的相关资料?你的目标是否是看懂【图像去噪(ImageDenoising)】的相关论文,复现代码,跑出结果,并试图创新?你是否需要发表【图像去噪(ImageDenoising)】的相关论文毕业?你是否需要做【图像去噪(ImageDenoising)】的相关项目,开发软件,研究算法,获得专利或者软著?只要是与【图像去噪(ImageDenoising)】有关的问题,那么请继续往下看。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 2万+

s8654

The official Snapdragon Ride SX 4.0 development board provides standardized hardware support for the secondary development and functional verification of the s8654 platform.

qq_39257814的博客 6835

NoClassDefFoundError: Could not initialize class 的解决方法

聚合项目中,某个模块引入了第三方提供的安全加密jar包,由于是私包,所以使用如下方式添加到项目中。打包后启动,报错 NoClassDefFoundError: Could not initialize class SignatureBySM4AndSM2,该类中使用了第三方jar包,因为springboot打jar包时没有把上图4个jar包打进去,所以报错。前期被NoClassDefFoundError带偏,以为是类找不到,升级了jar包版本,install没有作用。于是在对应模块下加入boot打包插件在p

qq_40323503的博客 1万+

RK3568 低功耗设计全解析:DVFS 策略与 PMIC 电源管理

本文深入解析RK3568处理器的低功耗优化方案。从硬件架构分析入手,阐述四核Cortex-A55的功耗特性及分层电源域设计。重点介绍DVFS动态调压调频技术,包括Linux内核配置方法及场景化策略设计。详细讲解RK809 PMIC的电源管理优化,提供外设电源域控制与休眠唤醒配置的实战案例。通过智能终端应用实例,展示待机功耗从280mA降至65mA的优化效果,并推荐功率测试工具。文章强调需要平衡性能与功耗,结合场景定制策略,并指出AI负载预测等未来优化方向,为RK3568开发者提供系统性的低功耗解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2074

元素类型 mapper 必须后跟属性规范 ">" 或 "/>"

##之前就错了很多次,这次决定记录下来 一直以为是DAO的格式出问题了,一直在我的DAO找,一直找不到。 其实真正出错的原因是在mybatis-config.xml里, 忘记添加"/>"了,所以它提示mapper是真的要找mapper..而不是自己写的mapper ...

woshilishu的博客 2855

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java.lang.NoClassDefFoundError: Could not initialize class异常处理

java.lang.NoClassDefFoundError: Could not initialize class异常处理

w36680130的博客 1315

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android Gradle 中的实例之动态修改AndroidManifest文件(十)

前言 逐步整理的一系列的总结: Android Gradle插件开发初次交手(一) Android Gradle的基本概念梳理(二) Android 自定义Gradle插件的完整流程(三) Android 自定义Task添加到任务队列(四) Android 自定义Gradle插件的Extension类(五) Android Gradle 中的Transform(六) And...

nihaomabmt的专栏 8868

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深入理解Android之Gradle

深入理解Android之Gradle 格式更加精美的PDF版请到:https://pan.baidu.com/s/1GfN6F8sOaKFAdz5y1bn3VQ下载 weibo分享失效,请各位到百度云盘下载   Gradle是当前非常“劲爆”得构建工具。本篇文章就是专为讲解Gradle而来。介绍Gradle之前,先说点题外话。 一、题外话 说实话,我在大法工作的时候,就见过Gradle...

Innost的专栏 19万+

gradle复制文件到你的build文件夹下

接到需求是,复制一个apk到build文件夹的assets文件夹下,我们都知道当我们点击clean的时候,build文件夹就会被清理,而且build文件夹下的assets文件夹并不存在,这个里面会根据application和library不同assets文件夹也会不同,具体看如下分析 application下,build文件夹的assets文件夹名称叫做 merged_assets library下,build文件夹的assets文件夹名称叫做library_assets 全路径是在build/inte.

北京流年 3621

Groovy 处理 XML

1. Parsing XML 1.1. XmlParser and XmlSlurper The most commonly used approach for parsing XML with Groovy is to use one of: groovy.util.XmlParser groovy.util.XmlSlurper Both have the same a...

weixin_30527323的博客 433

GPath

GPath xml节点获取

HPYON的专栏 450

Groovy XML文件/文本处理

引用:http://www.groovy-lang.org/processing-xml.html Processing XML 1. Parsing XML 1.1. XmlParser and XmlSlurper The most commonly used approach for parsing XML with Groovy is to use one of: groov...

yemao_guyue的专栏 3329

gradle拷贝静态资源文件_android 使用gradle实现资源自动拷贝

把下面的代码拷贝到module的gradle.build 文件内android.applicationVariants.all{ variant ->delete "${buildDir}/intermediates/merged_assets/${variant.dirName}" // buildDir是app下的build目录variant.mergeAssets.doLast{de...

weixin_39955233的博客 650

元素类型 "path" 必须后跟属性规范 ">" 或 "/>"错误解决方法

错误:Enclosed Exception: 元素类型 "path" 必须后跟属性规范 ">" 或 "/>" modeler作图使用svg(可缩放矢量图形),相关教程:http://www.w3school.com.cn/svg/,在ie中如果使用了箭头(即svg中的path元素),则model保存不成功,提示错误”Unexpected error: could not save m

qq_30908729的博客 7733

深入探索 Android 包体积优化(匠心制作-下)

前言 成为一名优秀的Android开发,需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样~。 在 Android 性能优化的知识体系当中,包体积优化一直被排在优先级比较低的位置,从而导致很多开发同学对自身应用的大小并不重视。在项目发展的历程中,一般可划分为如下三个阶段: 初创期 => 成长期 => 成熟期 通常来说,当应用处于成长期的中后阶段时,才会考虑...

IT元老的博客 2804

(1)从 AGP 4.1.2 升级到 7.5.1 我遇到了什么问题

agp4 时 Android 工程可运行模块同级目录下的自定义 Gradle 脚本能够直接使用内置的 project 属性(对象),到 apg7 怎么就不行了,如何兼容?this 是 script 对象,this.project 没有输出,但 this.buildscript 和 agp4 对象类型还是一致的,满足我们的要求,可以使用 buildscript。setting.gradle 引入的脚本执行找不到 project 属性,可以替换为。

Primer5 1321

深入理解Android之Gradle(转载)

深入理解Android之Gradle 格式更加精美的PDF版请到:https://pan.baidu.com/s/1boG2cLD下载 weibo分享失效,请各位到百度云盘下载 Gradle是当前非常“劲爆”得构建工具。本篇文章就是专为讲解Gradle而来。介绍Gradle之前,先说点题外...

chuanbao3501的博客 333
上一篇: 从 AGP 4.1.2 升级到 7.5.1——动态添加仓库
下一篇: 从 AGP 4.1.2 到 7.5.1——自定义混淆映射失效?
Primer@.com
博客等级 码龄9年 524粉丝 292原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值