摘要:刚学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文件)损坏了,可能是之前异常关闭或路径变更导致的。

✅ 解决方案

  1. 关闭Android Studio
  2. 打开文件资源管理器,进入AVD配置目录(我的在E:\Android\android\avd\)。
  3. 找到损坏的设备对应的两个文件:
    • Medium_Phone_API_36.1.ini
    • Medium_Phone_API_36.1.avd文件夹
  4. 将它们删除。
  5. 重新启动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调试。

✅ 解决方案

  1. 开启开发者模式
    “设置” → “我的设备” → “全部参数” → 连续点击“系统版本”7次,直到提示“您现在处于开发者模式”。

  2. 开启USB调试
    “设置” → “更多设置” → “开发者选项” → 打开“USB调试”和“USB安装”。

  3. 安装驱动
    电脑上打开“设备管理器”,找到带黄色感叹号的手机设备,右键“更新驱动程序” → “浏览我的电脑以查找驱动程序” → “让我从计算机上的可用驱动程序列表中选取” → 选择“Android Composite ADB Interface”。

  4. 授权电脑
    手机弹出“允许USB调试吗?” → 勾选“始终允许使用这台计算机” → 确定。

重新插拔数据线,Android Studio的设备列表终于出现了我的手机。
不过,我还是想在模拟器上先跑一遍,因为模拟器能快速切换不同系统版本。


⚙️ 第四坑:在模拟器上运行项目,提示“未添加运行配置”

模拟器启动后,我点击绿色的运行按钮,结果弹出提示框:

No run configurations added

💡 原因分析

项目还没有配置运行设置,Android Studio不知道要运行哪个模块。

✅ 解决方案

  1. 点击顶部工具栏的运行配置下拉框(绿色三角形左边),选择“Edit Configurations…”。
  2. 在弹出的窗口中,点击左上角的 + 号,选择 Android App
  3. 右侧填写:
    • Name:随便写,比如app
    • Module:下拉选择 app(如果下拉列表为空,说明项目还没同步好,先同步Gradle)
    • 其他保持默认
  4. 点击 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,不用依赖系统环境变量:

  1. 点击菜单 File → Project Structure(快捷键Ctrl+Shift+Alt+S)。
  2. 左侧选择 SDK Location,在 JDK location 点击 ...,浏览到Java 20的安装目录(例如C:\Program Files\Java\jdk-20)。
  3. 然后进入 File → Settings → Build, Execution, Deployment → Build Tools → Gradle,将 Gradle JDK 也改为Java 20。
  4. 点击 ApplyOK,然后重新同步。

同步开始跑,但几秒后再次报错:

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 写成了 minimizeEnabled
  • proguardFiles 路径写错

✅ 解决方案

我根据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

💡 几点心得

  1. 细心是第一位:很多错误(如拼写、多余字符)都是因为手滑,写代码时多检查一遍,能省下半小时。
  2. 善用IDE提示:Android Studio的黄色警告、红色下划线都能帮你快速定位问题,不要忽略。
  3. 同步是万能药:任何修改了build.gradlesettings.gradle后,都要及时同步Gradle,确保项目状态一致。
  4. 版本兼容性:Gradle和JDK有严格的版本对应关系,遇到“not compatible”提示,优先升级JDK或调整Gradle版本。
  5. 社区帮助:遇到问题不要死磕,把错误信息复制到搜索引擎,往往能找到解决方案。

🔗 写在最后

如果你也正在入门Android开发,希望这篇文章能帮你绕过这些坑。如果你有更多的经验或问题,欢迎在评论区留言交流。
如果觉得本文对你有帮助,别忘了点赞、收藏、转发,让更多人看到!

本文首发于CSDN,未经授权,禁止转载。
欢迎关注,一起学习,一起成长!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐