如何修复Android编译错误:package R does not exist
Android编译报错:package R does not exist
问题场景
执行./gradlew assembleDebug时触发编译错误,此前执行过gradle clean命令,尝试修改XML文件后问题仍未解决。
编译错误日志
...app/src/main/java/com/name/app/MainActivity.java:11: error: package R does not exist setContentView(R.layout.activity_main); ^ 1 error FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details.
添加--info参数后的运行日志
Caching disabled for task ':app:compileDebugJavaWithJavac' because: Build cache is disabled Task ':app:compileDebugJavaWithJavac' is not up-to-date because: Task has failed previously. The input changes require a full rebuild for incremental task ':app:compileDebugJavaWithJavac'. Watching 47 directories to track changes Watching 46 directories to track changes Watching 45 directories to track changes Full recompilation is required because no incremental change information is available. This is usually caused by clean builds or changing compiler arguments. Compiling with toolchain '/usr/lib/jvm/java-17-openjdk-amd64'.
相关代码
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="app" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
MainActivity.java
package com.name.app; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
解决方法
- 检查布局文件是否存在:确认
app/src/main/res/layout/目录下有activity_main.xml文件,若缺失需创建对应布局。 - 排查XML语法错误:检查
res目录下所有XML文件(包括布局、样式、值文件等)是否存在标签未闭合、属性值错误、资源名称非法等问题,XML编译失败会直接导致R类无法生成。 - 重新完整构建:执行
./gradlew clean build命令,clean后强制完整编译,确保R类重新生成。 - 适配Java版本:当前使用Java 17编译,需在模块级
build.gradle中确认配置了对应版本的编译选项:android { compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } } - 检查R类导入:确认代码中没有手动导入
android.R(当前代码未出现,但需排查其他文件),若有需删除该导入,确保使用项目自动生成的com.name.app.R。
内容的提问来源于stack exchange,提问作者camcam
相关产品推荐
相关产品推荐

