# Manifest Merger 错误修复指南 ## 🔍 问题分析 你遇到的问题有两个层面: ### 1. Java 版本问题(主要问题) - **当前**:使用 Java 8 - **需要**:Android Gradle Plugin 7.0+ 需要 Java 11+ - **影响**:无法使用现代化的 AGP 版本 ### 2. Manifest Merger 问题 - `namespace` 不一致导致合并冲突 - `android:allowBackup` 属性冲突 - 模块重复声明 Receiver ## ✅ 推荐解决方案:升级到 Java 11 ### 方案 A:使用 Java 11(推荐)⭐⭐⭐⭐⭐ #### 1. 下载并安装 Java 11 - **下载地址**:https://adoptium.net/temurin/releases/?version=11 - 选择 JDK 11 (LTS) for Windows x64 - 安装到默认位置或自定义路径 #### 2. 设置 JAVA_HOME 环境变量 ```powershell # 打开环境变量设置 # 系统属性 → 高级 → 环境变量 # 添加或修改: JAVA_HOME = C:\Program Files\Eclipse Adoptium\jdk-11.0.xx-hotspot # 更新 Path,添加: %JAVA_HOME%\bin ``` #### 3. 验证 Java 版本 ```bash java -version # 应该显示:openjdk version "11.0.xx" ``` #### 4. 重新编译 ```bash .\gradlew clean assembleApp_bbengDebug ``` #### 5. 使用的配置 `build.gradle`(根目录): ```gradle buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 推荐版本 classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10' } } ``` `app/build.gradle`: ```gradle android { compileSdkVersion 33 buildToolsVersion '33.0.0' namespace 'com.YuyeTech.HeartRate' // ← 支持 namespace defaultConfig { minSdkVersion 21 targetSdkVersion 32 // ... } } ``` --- ## 🔧 方案 B:继续使用 Java 8(不推荐) 如果你坚持使用 Java 8,需要使用旧版本的 AGP: ### 1. 修改 `build.gradle`(根目录) ```gradle buildscript { repositories { google() // jcenter() // ← 移除,已废弃 maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() // ← 添加 } dependencies { classpath 'com.android.tools.build:gradle:4.2.2' // Java 8 最后支持版本 classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.21' } } allprojects { repositories { google() // jcenter() // ← 移除 maven { url = uri("https://jitpack.io") } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/public' } mavenCentral() // ← 添加 } } ``` ### 2. 修改 `app/build.gradle` ```gradle android { compileSdkVersion 30 // AGP 4.2.2 最高支持 30 buildToolsVersion '30.0.3' // ❌ 不支持 namespace,必须在 AndroidManifest.xml 中使用 package defaultConfig { minSdkVersion 21 targetSdkVersion 30 // 也需要降低 applicationId "com.YuyeTech.HeartRate" // ... } } ``` ### 3. 修改 `AndroidManifest.xml` ```xml ... ``` ### 4. 移除模块中的重复声明 `myLockView/src/main/AndroidManifest.xml`: ```xml ``` --- ## 🚀 快速修复命令(方案 B) 如果你现在无法安装 Java 11,执行以下修改: ```bash # 1. 备份当前文件(可选) # 2. 我已经帮你修改了以下文件: # - build.gradle # - app/build.gradle # - app/src/main/AndroidManifest.xml # - myLockView/src/main/AndroidManifest.xml # 3. 清理并编译 .\gradlew clean assembleApp_bbengDebug ``` --- ## 📝 已修改的文件总结 ### ✅ build.gradle(根目录) - AGP 版本:`4.2.2`(Java 8 兼容) - Kotlin 版本:`1.8.10` ### ✅ app/build.gradle - 移除 `namespace` - compileSdkVersion 保持 33 ### ✅ app/src/main/AndroidManifest.xml - 添加 `package="com.YuyeTech.HeartRate"` - 添加 `android:allowBackup="true"` - 添加 `tools:replace="android:allowBackup"` ### ✅ myLockView/src/main/AndroidManifest.xml - 移除所有 `` 内容(避免重复) --- ## ⚠️ 重要说明 ### 方案 A(Java 11)的优势 - ✅ 使用现代化的 AGP 版本 - ✅ 支持 `namespace`(更好的模块化) - ✅ 更好的编译性能 - ✅ 更多新特性支持 - ✅ 官方推荐 ### 方案 B(Java 8)的劣势 - ⚠️ AGP 4.2.2 已经很旧(2021年) - ⚠️ 不支持最新的 Android API - ⚠️ 很多新特性无法使用 - ⚠️ 未来可能有兼容性问题 --- ## 🎯 当前状态 我已经按照**方案 B**(Java 8 兼容)修改了你的配置。 现在请尝试编译: ```bash .\gradlew clean .\gradlew assembleApp_bbengDebug ``` 如果还有错误,请提供完整的错误信息。 --- ## 💡 最终建议 **强烈建议升级到 Java 11!** 这样做的好处: 1. 一次性解决所有问题 2. 获得更好的开发体验 3. 未来兼容性更好 4. 编译速度更快 安装 Java 11 只需要 5 分钟,但能节省大量后续的配置时间。 --- **创建时间**:2026-01-22 **适用场景**:Manifest merger 错误、Java 版本问题