Android---关于Activity class {package/class} does not exist

本文介绍了在Android开发过程中遇到的包名冲突问题及其解决方案。当两个应用拥有相同的包名时,会导致安装失败或覆盖原有应用的情况。文章通过实例演示如何避免此类问题。
部署运行你感兴趣的模型镜像

今天遇到了这个问题,百度了一下,在这个博客看到了解决办法,转载以分享。

原文地址:http://blog.youkuaiyun.com/hgplan/article/details/5890346 点击打开链接


在Android学习的过程中,遇到了这样的错误,Activity class {package/class} does not exist,然后网上查找了些资料,后来才明白了问题出现在了包的路径上。比如,我创建了两个Android工程,两个工程的包名都相同,然后当在模拟器中运行其中一个程序时,没有问题,但是紧接着再运行另外一个程序的时候,就会出现这个错误。然后重启模拟器,再次运行后一个程序的时候又没有问题了。但是原来第一个安装的程序却被第二个程序取代了,也就是说,模拟器先删除了第一个程序,再进行安装的;同时也可以将原来的那个程序删除再安装第二个程序也没有什么问题。

启动模拟器后,在命令行下输入 adb shell sl /data/app 这时候我们会发现这个目录下的apk文件只有两个程序中的其中一个,而且名称是"包名+.apk"。这就说明了,两个不同的程序不能在相同的包下。于是这个错误的解决办法就是,创建程序的时候,所创建每个程序的包路径不能一致就ok了。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>我们正在解决Android Studio运行app时出现"Activity class {com.example.bmi_mvvm/comlexample.bmi mvvm.view.MainActivity} does not exist"错误的问题。 根据引用[3]中提到的,有时候需要卸载手机上已有的apk或清除残留文件。另外,我们还需要考虑其他常见原因。 常见原因及解决方案: 1. 包名或Activity路径不正确:检查AndroidManifest.xml文件中声明的Activity类路径是否与代码中的实际路径一致。 2. 安装残留:手机上之前安装的同一应用可能有残留,导致新安装的应用无法正确启动。需要卸载并清除残留。 3. 构建配置问题:检查build.gradle文件中的配置,特别是applicationId和命名空间是否匹配。 4. 多模块项目中,运行了错误的模块。 具体步骤: 步骤1:检查AndroidManifest.xml文件 确认MainActivity的声明是否正确,例如: <activity android:name=".view.MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 注意:这里的".view.MainActivity"应该与你的实际包结构一致。 步骤2:卸载旧应用并清理残留 - 在手机上找到该应用并卸载。 - 如果卸载后仍有残留,可以通过adb命令清除: ``` adb uninstall com.example.bmi_mvvm ``` 注意:这里的包名是com.example.bmi_mvvm,请替换为你的实际包名。 如果adb uninstall失败,可以尝试清除数据: ``` adb shell pm clear com.example.bmi_mvvm ``` 步骤3:检查build.gradle文件 在app模块的build.gradle中,检查applicationId和namespace是否一致,并且与AndroidManifest.xml中的包名一致。 例如: ``` android { namespace 'com.example.bmi_mvvm' defaultConfig { applicationId "com.example.bmi_mvvm" ... } } ``` 步骤4:清理并重建项目 在Android Studio中,选择菜单栏的"Build" -> "Clean Project",然后"Build" -> "Rebuild Project"。 步骤5:检查运行配置 确保在运行配置(Run Configuration)中,Launch选项为"Default Activity"或者指定了正确的Activity。 步骤6:同步Gradle 点击Android Studio工具栏的"Sync Project with Gradle Files"按钮。 步骤7:检查多模块情况 如果项目有多个模块,确保当前运行的是app模块,并且该模块的build.gradle中已经正确配置了启动Activity。 步骤8:重启Android Studio和电脑 有时候,重启IDE甚至电脑可以解决一些缓存问题。 如果以上步骤都不能解决,可能是由于IDE缓存问题,可以尝试: - 删除.idea文件夹和.gradle文件夹(在项目根目录),然后重新导入项目(注意:这会重置所有项目设置,需要重新配置)。 - 或者选择菜单"File" -> "Invalidate Caches / Restart...",然后点击"Invalidate and Restart"。 根据引用[4]的思想,我们不必拘泥于形式,但求解决问题。因此,请逐步尝试上述方法。 生成相关问题: 1. 如何正确配置AndroidManifest.xml中的Activity? 2. 如何在Android Studio中清理项目缓存? 3. 使用adb命令卸载应用时有哪些注意事项? 4. 如何检查Android应用的包名和命名空间设置? 5. 在Android Studio中如何正确设置运行配置? </think>针对 Android Studio 运行 app 时出现 `Activity class {com.example.bmi_mvvm/comlexample.bmi mvvm.view.MainActivity} does not exist` 错误的解决方案,请按顺序执行以下步骤: ### 1. **卸载残留应用并清理缓存** [^3] ```bash # 卸载应用(注意替换实际包名) adb uninstall com.example.bmi_mvvm # 清理残留数据 adb shell pm clear com.example.bmi_mvvm ``` > 📌 核心操作: > - 在手机上**手动卸载**已安装的 APK > - 通过 USB 连接电脑执行上述命令清除残留文件 > - 重启 Android Studio 和手机 ### 2. **检查包名与组件声明一致性** 在 `AndroidManifest.xml` 中验证: ```xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.bmi_mvvm"> <!-- 包名必须匹配 --> <application> <activity android:name=".view.MainActivity" <!-- 相对路径需正确 --> android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> ``` > ✅ 关键验证点: > - `package` 属性值必须与 Gradle 的 `namespace` 一致 > - Activity 名称路径需对应实际类位置(如 `com.example.bmi_mvvm.view.MainActivity`) ### 3. **同步 Gradle 配置** 在 `app/build.gradle` 中确认: ```gradle android { namespace 'com.example.bmi_mvvm' // 必须与 Manifest 包名一致 defaultConfig { applicationId "com.example.bmi_mvvm" // 需匹配启动类路径 } } ``` > ️ 注意: > - 避免使用过时的 `compile` 指令,改用 `implementation` 或 `api` [^3] > - 执行 **File > Sync Project with Gradle Files** ### 4. **清理构建缓存** ```bash # 终端执行以下命令 ./gradlew clean ./gradlew --stop ``` > 🔧 辅助操作: > - 删除项目目录下的 `.idea` 和 `build` 文件夹 > - 使用 **Build > Clean Project** 和 **Rebuild Project** ### 5. **检查运行配置** 在 Android Studio 工具栏: 1. 选择 **Run/Debug Configurations** 2. 确认 `Launch Options` 设置为 `Default Activity` 3. 检查 `Module` 选项指向正确的应用模块(如 `app`) ### 6. **验证代码结构(MVVM 模式)** [^4] 确保 MVVM 组件路径符合规范: ``` src/main/java/com/example/bmi_mvvm ├── view // Activity 应在此目录 │ └── MainActivity.kt ├── viewmodel └── model ``` > 💡 架构提示:MVVM 的核心是逻辑分离,但具体实现路径需保持一致性[^4] ### 疑难情况处理 若以上步骤无效: 1. **禁用 Instant Run**: `Settings > Build, Execution, Deployment > Instant Run` → 取消勾选 2. **更新 Android Gradle 插件**: 在 `project/build.gradle` 中: ```gradle dependencies { classpath 'com.android.tools.build:gradle:8.2.0' // 使用最新稳定版 } ``` 3. **检查 JDK 版本**: `Project Structure > SDK Location` → 确认使用 JDK 17+ --- ### 相关问题 1. 如何解决 Android Studio 中 `ClassNotFoundException` 的常见原因? 2. MVVM 架构中 View 层与 ViewModel 层的最佳通信方式是什么?[^4] 3. Gradle 同步失败时有哪些强制刷新缓存的方法? 4. 为什么 Android 应用需要定期清理构建缓存? 5. 如何正确配置多模块项目的 Activity 启动路径? [^1]: 引用自 Android MVVM 教程文档 [^2]: AndroidX 库的核心功能说明 [^3]: 编译配置更新与设备残留清理指南 [^4]: MVVM 架构设计的灵活性注意事项
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值