从AVD损坏到Gradle报错,我花3小时才跑通第一个Android项目!新手避坑指南
摘要:刚学Android开发,想跑个开源项目练练手,结果从创建模拟器开始就一路踩坑:AVD损坏、真机调试连不上、运行配置缺失、Gradle同步失败、JDK版本不兼容、settings.gradle语法错误……我把这3小时的“血泪史”完整记录下来,并附上每一步的解决方案,帮你少走弯路,早日看到自己的App跑起来!
关键词:#AndroidStudio #Gradle #AVD #Java #CSDN #Android开发 #避坑指南
📌 前言
都说Android开发入门不难,可当我真正动手时,才发现“工具”这关就能卡住不少人。
最近我从GitHub上拉了一个开源项目,想在模拟器上跑起来看看效果。结果,从创建虚拟设备到项目运行,我遇到了大大小小不下10个问题,一度怀疑自己是不是不适合编程。
但最终,当模拟器上弹出我的应用界面时,那种成就感让我觉得一切都值得。今天就把我踩过的坑和爬出来的经验分享给你,希望能让你少掉几根头发。
🚧 第一坑:AVD损坏,模拟器建不起来
打开Android Studio,兴冲冲地点开Device Manager准备创建模拟器,结果看到一行红字:
Corrupted AVD ini file: E:\Android\android\avd\Medium_Phone_...
💡 原因分析
这个错误是因为AVD的配置文件(.ini文件)损坏了,可能是之前异常关闭或路径变更导致的。
✅ 解决方案
- 关闭Android Studio。
- 打开文件资源管理器,进入AVD配置目录(我的在
E:\Android\android\avd\)。 - 找到损坏的设备对应的两个文件:
Medium_Phone_API_36.1.iniMedium_Phone_API_36.1.avd文件夹
- 将它们删除。
- 重新启动Android Studio,打开Device Manager,点击“Create device”重新创建一个模拟器。
📱 第二坑:创建模拟器,参数怎么选?
既然旧的坏了,那就重新建一个。但我的真机是某品牌手机,参数比较特殊,Android Studio的设备列表里没有直接匹配的型号。
✅ 解决方案
我选择了“New Hardware Profile”手动创建:
- Device Name:自定义
- Screen Size:根据手机实际尺寸填写
- Resolution:根据手机分辨率填写
- RAM:根据手机内存填写
然后选择系统镜像,我选了API 34(Android 14) with Google APIs,这个版本稳定,并且自带Google Play服务,方便后续测试。
🔌 第三坑:想用真机调试,手机却连不上
模拟器有时候有点卡,我想直接用真机调试。结果插上数据线,Android Studio里根本看不到我的设备。
💡 原因分析
- 没有开启“开发者模式”和“USB调试”。
- 电脑缺少手机驱动。
- 没有授权电脑进行USB调试。
✅ 解决方案
-
开启开发者模式:
“设置” → “我的设备” → “全部参数” → 连续点击“系统版本”7次,直到提示“您现在处于开发者模式”。 -
开启USB调试:
“设置” → “更多设置” → “开发者选项” → 打开“USB调试”和“USB安装”。 -
安装驱动:
电脑上打开“设备管理器”,找到带黄色感叹号的手机设备,右键“更新驱动程序” → “浏览我的电脑以查找驱动程序” → “让我从计算机上的可用驱动程序列表中选取” → 选择“Android Composite ADB Interface”。 -
授权电脑:
手机弹出“允许USB调试吗?” → 勾选“始终允许使用这台计算机” → 确定。
重新插拔数据线,Android Studio的设备列表终于出现了我的手机。
不过,我还是想在模拟器上先跑一遍,因为模拟器能快速切换不同系统版本。
⚙️ 第四坑:在模拟器上运行项目,提示“未添加运行配置”
模拟器启动后,我点击绿色的运行按钮,结果弹出提示框:
No run configurations added
💡 原因分析
项目还没有配置运行设置,Android Studio不知道要运行哪个模块。
✅ 解决方案
- 点击顶部工具栏的运行配置下拉框(绿色三角形左边),选择“Edit Configurations…”。
- 在弹出的窗口中,点击左上角的 + 号,选择 Android App。
- 右侧填写:
- Name:随便写,比如
app - Module:下拉选择
app(如果下拉列表为空,说明项目还没同步好,先同步Gradle) - 其他保持默认
- Name:随便写,比如
- 点击 OK 保存,再点运行按钮。
这时,新的问题出现了:Gradle同步失败。
🐘 第五坑:Gradle同步失败,JDK版本不兼容
控制台输出了一大堆红色错误,最显眼的是这一行:
JDK 1.8.0_391 isn't compatible with Gradle 9.0.0.
Please fix JAVA_HOME environment variable.
💡 原因分析
我的系统环境变量指向的是JDK 1.8,但Gradle 9.0需要Java 17及以上。我之前其实装过Java 20,但环境变量没改。
✅ 解决方案
在Android Studio中直接指定JDK,不用依赖系统环境变量:
- 点击菜单 File → Project Structure(快捷键
Ctrl+Shift+Alt+S)。 - 左侧选择 SDK Location,在 JDK location 点击
...,浏览到Java 20的安装目录(例如C:\Program Files\Java\jdk-20)。 - 然后进入 File → Settings → Build, Execution, Deployment → Build Tools → Gradle,将 Gradle JDK 也改为Java 20。
- 点击 Apply 和 OK,然后重新同步。
同步开始跑,但几秒后再次报错:
A problem occurred evaluating settings 'StudyMem'.
> Cannot get property 'O' on null object
📄 第六坑:settings.gradle第19行语法错误
根据错误栈,问题出在settings.gradle文件的第19行。我打开文件一看,原来是我之前误加了一个字母O,把include ':app'写成了include ':app', O。
Gradle解析时认为O是一个变量,但它为null,所以就报错了。
✅ 解决方案
删除多余字符,保持文件干净。一个标准的settings.gradle应该像这样:
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' } // 因为我的项目用到了GitHub上的依赖
}
}
rootProject.name = "StudyMem"
include ':app'
保存后,顶部出现黄色横幅“Gradle files have changed…”,点击 Sync Now,这次同步终于成功了!
🛠️ 第七坑:build.gradle还有错误,导致编译失败
虽然settings.gradle修好了,但同步时又提示app/build.gradle有错误。我打开一看,果然有几个低级错误:
namesapce写成了namesapce(少了一个字母)minifyEnabled写成了minimizeEnabledproguardFiles路径写错
✅ 解决方案
我根据Android官方文档,把app/build.gradle修正为:
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt' // 因为用了Room,需要kapt
}
android {
namespace 'com.studymem.app'
compileSdk 34
defaultConfig {
applicationId "com.studymem.app"
minSdk 24
targetSdk 34
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.12.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.11.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
// PDF viewer
implementation 'com.github.barteksc:android-pdf-viewer:3.2.0-beta.1'
// Word reader
implementation 'org.apache.poi:poi:5.2.3'
implementation 'org.apache.poi:poi-ooxml:5.2.3'
// OCR
implementation 'com.google.mlkit:text-recognition:16.0.0'
// Mind map
implementation('com.github.nicholasding:MindMapView:1.0.0')
// Room database
implementation 'androidx.room:room-runtime:2.6.1'
kapt 'androidx.room:room-compiler:2.6.1'
implementation 'androidx.room:room-ktx:2.6.1'
// Coroutines
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
// Activity result API
implementation 'androidx.activity:activity-ktx:1.8.2'
implementation 'androidx.fragment:fragment-ktx:1.6.2'
}
这里还修正了:
- 添加了
kotlin-kapt插件,并将annotationProcessor改为kapt,以支持Room在Kotlin中的代码生成。 - 补充了
room-ktx,便于使用协程。 - 添加了JitPack仓库(在
settings.gradle中已添加)。
重新同步后,一切顺利,没有红色错误。
🚀 最终运行:成功!
在Device Manager中启动模拟器,点击工具栏的运行按钮,项目开始编译、打包、安装,几秒钟后,模拟器屏幕上出现了我的应用界面!
那一刻,真的想站起来鼓掌。
📌 总结与避坑清单
回顾整个流程,我遇到的坑可以归纳为这几类:
| 类别 | 具体问题 | 解决方案 |
|---|---|---|
| AVD | AVD配置文件损坏 | 删除损坏的.ini和.avd文件夹,重新创建 |
| 真机调试 | USB调试未开启/驱动缺失 | 开启开发者选项,安装Google USB驱动 |
| 运行配置 | 未添加运行配置 | 手动添加Android App配置,选择正确的Module |
| Gradle同步 | JDK版本不兼容 | 使用Java 17及以上版本,或在Android Studio中指定JDK |
| settings.gradle | 语法错误(多余字符) | 检查并修正,确保include ':app'正确 |
| build.gradle | 拼写错误、依赖配置不当 | 修正关键词,添加JitPack仓库,使用kapt替代annotationProcessor |
💡 几点心得
- 细心是第一位:很多错误(如拼写、多余字符)都是因为手滑,写代码时多检查一遍,能省下半小时。
- 善用IDE提示:Android Studio的黄色警告、红色下划线都能帮你快速定位问题,不要忽略。
- 同步是万能药:任何修改了
build.gradle或settings.gradle后,都要及时同步Gradle,确保项目状态一致。 - 版本兼容性:Gradle和JDK有严格的版本对应关系,遇到“not compatible”提示,优先升级JDK或调整Gradle版本。
- 社区帮助:遇到问题不要死磕,把错误信息复制到搜索引擎,往往能找到解决方案。
🔗 写在最后
如果你也正在入门Android开发,希望这篇文章能帮你绕过这些坑。如果你有更多的经验或问题,欢迎在评论区留言交流。
如果觉得本文对你有帮助,别忘了点赞、收藏、转发,让更多人看到!
本文首发于CSDN,未经授权,禁止转载。
欢迎关注,一起学习,一起成长!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)