2 new improvements of cpputest updated from 3.4 to 3.5

本文介绍了cpputest中资源泄露检测功能的一个重要修复。在3.4版本中,当使用delete而非delete[]来释放动态分配的数组时,cpputest无法正确地检测到这种资源泄露。此问题已在3.5版本中得到解决。

1.
提供了更加清晰合理的函数名:




2.
修复了一个3.4版本存在的bug:

概述:
引用一下头文件可以使得UT检测是否有资源泄露:
#include "CppUTest/MemoryLeakDetectorNewMacros.h"
cpputest的这一功能主要是通过对申请和释放的动作进行计数,然后比较前后申请和释放的次数判断是否有资源泄露。
问题描述:
3.4及之前的版本有一个BUG:
int* a = new int[100];
delete a;  // 错误!
本来应该使用 delete[] 释放申请的数组。但是这个错误并不能被cpputest检查出来。
该问题在3.5版本已经修复。


<think> 引用内容提示用户遇到了AGP版本不兼容的错误,但用户实际需求是将AGP从7.4.2升级到8.11.0。需要区分引用中的错误信息(AGP 8.9.0不兼容)和用户的实际需求(7.4.2→8.11.0)是不同的场景。 用户明确要求查找升级方法,因此核心是提供完整的升级路径。由于大版本升级(7.x→8.x)涉及破坏性变更,需分步骤处理: 1. **检查环境要求**:AGP 8.x需要JDK 17+和Android Studio Flamingo(2022.2.1)+,需先确认开发环境满足条件。 2. **逐步升级**:直接跨大版本升级易出错,建议按7.4.2→7.5→8.0→8.1→8.2的顺序渐进升级,每个中间版本都需处理兼容性问题。 3. **关键变更点**: - Gradle版本依赖:AGP 8.11要求Gradle 8.5+(引用中未提及,但属于必要知识) - 命名空间替代applicationId:AndroidManifest中的package需迁移到build.gradle的namespace - 废弃API替换:如compileSdkVersion改为compileSdk 4. **测试验证**:升级后必须执行./gradlew check --scan生成构建扫描报告,可检测废弃API使用情况。 需特别注意引用中提到的"AGP 8.9.0不兼容"是特定环境问题,但用户目标版本8.11.0已修复该问题。应在回答中说明跳过有问题的中间版本(如8.9.0)直接到8.11.0的可行性。 最后应强调回退方案:若升级失败可通过本地.properties文件强制降级(如设置android.overridePathCheck=true),但仅作临时措施。 </think> 要将项目的Android Gradle插件(AGP)从7.4.2升级到8.11.0,请按照以下步骤操作(注意:大版本升级存在兼容性风险,建议在版本控制下操作): ### 升级步骤 1. **检查环境要求** - 升级Android Studio至最新稳定版(至少2023.2.1 Hedgehog+) - 确认JDK版本 ≥ 17(在终端运行 `java -version` 验证) - Gradle Wrapper版本需 ≥ 8.5(AGP 8.11要求) 2. **修改项目级配置** 在根目录的 `build.gradle` 或 `build.gradle.kts` 中: ```groovy buildscript { dependencies { // 修改此行 classpath "com.android.tools.build:gradle:8.1.1" // → 改为8.1.1 } } ``` 3. **更新模块级配置** 在模块的 `build.gradle` 中: ```groovy android { // 必须添加以下配置 namespace "com.your.package" // 替代AndroidManifest的packageName compileSdk = 34 // 必须 ≥ 34 (Android 14) buildFeatures { buildConfig = true // AGP 8.x默认关闭需显式启用 } } ``` 4. **升级Gradle Wrapper** - 修改 `gradle/wrapper/gradle-wrapper.properties`: ```properties distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip ``` - 终端执行:`./gradlew wrapper --gradle-version=8.5` 5. **处理破坏性变更** - 替换废弃API: - `compileSdkVersion 34` → `compileSdk 34` - `targetSdkVersion 34` → `targetSdk 34` - 移除 `buildToolsVersion`(AGP 8.x自动管理) - 迁移清单配置: ```groovy androidComponents { onVariants(selector().all()) { variant -> variant.manifestPlaceholders.put("appLabel", "MyApp") } } ``` 6. **验证升级** - 执行清理构建:`./gradlew clean assembleDebug` - 检查警告:运行 `./gradlew lint` 处理兼容性警告 - 测试核心功能:重点验证安装、推送、深链接等涉及包名的功能 ### ⚠️ 注意事项 1. **渐进升级建议**(降低风险): ``` 7.4.2 → 7.5 → 8.0.2 → 8.1.1 → 8.2.2 → 8.3.0 → 8.4.0 → 8.11.0 ``` 每个中间版本升级后执行 `./gradlew check` 2. **常见问题解决**: - 包名冲突:在 `android` 块添加 `namespace = "com.your.actual.package"` - 依赖错误:第三方库需更新到兼容AGP 8.x的版本 - 构建失败:检查是否包含过时的DSL如 `packagingOptions.excludes` 3. **回退方案**: - 若遇到不可解决的问题,在 `gradle.properties` 添加临时回退: ``` android.overridePathCheck=true // 允许降级[^1] ``` > 升级后建议使用Android Studio的 **Refactor > Migrate to AGP 8.x** 工具自动修复部分兼容性问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值