如何修复Android编译报错:package R.id does not exist?
解决旧Android项目编译时
R.id不存在的问题 核心原因
你代码里的R.id.TextViewListItem是项目自定义布局资源生成的ID,并非Android系统自带的android.R.id,所以替换成系统ID必然找不到对应符号。报错本质是项目的自动生成类R未正确生成。
具体解决步骤
1. 恢复原R.id.xxx引用
把改成android.R.id.xxx的代码改回原来的R.id.xxx——系统ID仅适用于Android内置控件(比如android.R.id.list),自定义布局里的ID必须用项目自身的R类。
2. 检查布局与资源文件
- 找到
res/layout目录下对应布局文件(比如定义了TextViewListItem的xml),确认文件存在且xml语法无错误(如标签未闭合、属性拼写错误)。旧项目可能用了过时标签/属性,需修正为当前SDK支持的写法。 - 检查
res目录下所有资源文件(drawable、values等),确保文件名无大写字母、特殊字符(旧项目可能未严格遵守命名规则,会导致R类生成失败)。
3. 适配当前Android构建工具
10年前的项目大概率用Ant或旧版Gradle,需调整构建配置适配新版工具:
- 打开项目根目录的
build.gradle(Project级),将Gradle插件版本调整为兼容旧项目的稳定版(比如com.android.tools.build:gradle:7.0.4,需匹配你的Android Studio版本)。 - 打开模块级
build.gradle(通常在app目录下),修改compileSdkVersion、targetSdkVersion为当前SDK支持的低兼容版本(比如compileSdkVersion 30,避免因API版本过高导致旧代码报错),同时设置合理的minSdkVersion。 - 点击Android Studio右上角的
Sync Project with Gradle Files按钮,同步Gradle配置。
4. 清理并重新构建
- 执行
Build > Clean Project,清除旧构建缓存与生成文件。 - 执行
Build > Rebuild Project,让系统重新扫描所有资源并生成正确的R类。
5. 检查导入语句
确保代码文件顶部的导入是import 你的项目包名.R;,而非import android.R;——错误导入系统R类会导致找不到自定义ID。
额外提示
如果项目使用旧支持库(如android.support.v4),可选择迁移到AndroidX(新版Android Studio会提供迁移提示);若仅需编译运行,也可保留旧支持库,只要Gradle配置正确即可。
内容的提问来源于stack exchange,提问作者JB_User
相关产品推荐
相关产品推荐

