从Eclipse到Android Studio:新项目创建、AVD模拟器与Lint检查全流程实战

发布时间:2026/10/11 3:52:48
从Eclipse到Android Studio:新项目创建、AVD模拟器与Lint检查全流程实战 简介Android Studio 是 Google 官方推出的 Android 应用开发 IDE这份 PDF 教程面向初学 Android 开发的读者系统讲解从环境安装、创建 HelloWorld 项目到虚拟设备调试的完整流程。资源为单个 PDF 文档大小 2.81MB便于离线阅读与按章节检索。教程从 JDK 6 及以上版本的环境要求入手分 Windows 与 OS X 说明安装步骤再以 HelloWorld 为例逐步演示项目命名、模块与包名设置、SDK 版本与主题选择、空白 Activity 的创建及布局和导航类型配置同时解释模块是可独立编译、运行、测试和调试的功能单元包名通常遵循反向域名规则。内容还覆盖 Android Virtual Device 的创建与启动、实时布局预览、代码编辑器、Gradle 集成、Layout Editor、调试工具等核心功能可帮助初学者快速上手并避开常见配置坑。目前已有 995 人学习下载适合准备入门 Android 开发、希望系统了解 Android Studio 工作流程的学习者。1. 从 Eclipse 迁到 Android Studio这次安装不只是换个 IDE说到 Android 开发环境Android Studio 面世的时间其实不算长但它已经是目前 Android 开发绕不开的 IDE。它基于 IntelliJ IDEA——后者本身也是一套相当出色的 Android 开发环境。对刚接触 Android 的开发者来说Android Studio 解决了两个最头疼的问题一个是 Eclipse 那套 ADT 插件生态的碎片化另一个是模拟器配置、布局调试、代码检查这些操作散落在不同工具里得自己拼装。这篇笔记就从一个新项目的创建开始带你走一遍分区、模块、AVD、实时布局、模板和 Lint 的完整链路把每一步的功能边界和坑位都标清楚。适合刚转过来的新手也适合想把手头 Eclipse 项目迁过来但还没动手的人。2. 项目创建与工程骨架模块和包名的设置逻辑先想清楚2.1 创建 HelloWorld 项目那些默认值到底该不该改安装完 Android Studio、首次启动后欢迎界面会给出四个入口New Project、Import Project、Open Project、Check out from Version Control。如果是把 Eclipse 里的现有项目迁过来选 Import Project 就行——Android Studio 会负责生成必要的配置文件不需要手动补 Gradle 脚本。但这次我们从零开始直接选 New Project。进入新项目向导后需要填的内容包括应用名称、模块名称、包名、项目保存位置、最低 SDK 版本、推荐 SDK 版本、编译 SDK 版本、主题以及是否创建 Activity、是否自定义启动图标。这里最容易忽略的是包名和模块名的关系。默认情况下Android Studio 会把包名的最后一个字段设为模块名比如包名com.tuts.helloworld模块名就是helloworld。如果打算以后上架或接第三方 SDK包名最好按反向域名规则一次写对因为应用签名和包名是绑定的后期改包名要动的地方非常多。下面的操作流程是创建项目时的常见做法。在欢迎界面点击 New Project然后按向导配置应用名称HelloWorld 模块名称helloworld 包名com.tuts.helloworld 最低 SDKAPI 19Android 4.4 编译 SDKAPI 27Android 8.0 主题AppTheme 创建 Activity勾选 创建自定义图标取消参数说明最低 SDK 决定了应用能跑在哪些旧设备上编译 SDK 则决定你编译时能用哪些 API。两者差距太大会带来兼容性适配问题差距太小又没法用新的系统特性。一般建议最低 SDK 覆盖你要支持的设备区间编译 SDK 用当前稳定版本即可。取消自定义图标可以少走一步资源生成的流程对纯演示项目来说更省事。2.2 模块、包名和 Gradle 的关系一次搞懂编译单元模块这个概念对从 Eclipse 转过来的人尤其陌生。模块是 IntelliJ IDEA 里的一个独立功能单元可以单独编译、运行、测试和调试里面包含源代码、编译脚本和资源。Android Studio 的项目结构是 project 包 module一个 project 可以有多个 module比如 app 模块是主工程、library 模块是依赖库。创建完项目后打开工程根目录下的settings.gradle能看到模块声明。默认的 app 模块对应的 Gradle 配置文件是app/build.gradle。这里有一个常见的理解误区模块名不等于包名模块名是物理目录名包名是逻辑命名空间。修改模块名会影响目录和构建产物路径修改包名影响的是 Java 源码的 package 声明和 manifest 里的 package 属性。实际写代码时我一般会这样做// app/build.gradle 关键片段 android { compileSdkVersion 27 defaultConfig { applicationId com.tuts.helloworld minSdkVersion 19 targetSdkVersion 27 versionCode 1 versionName 1.0 } }参数说明applicationId是最终生成 APK 的应用 ID它和包名可以不同但从零创建项目时两者保持一致最省心。minSdkVersion和targetSdkVersion直接影响系统的兼容行为比如 Android 6.0 以上的运行时权限、Android 8.0 以上的通知渠道都需要 targetSdk 达到对应版本才会触发新的行为模式。Gradle 里改这些值的优先级高于 IDE 界面里的设置所以如果发现界面设置没生效直接改这个文件最可靠。2.3 工程目录结构资源、清单和 Java 源码的分工Android Studio 的项目面板默认是 Android 视图不是磁盘视图。Android 视图把src/main/java、src/main/res和src/main/AndroidManifest.xml做了逻辑分组新手常犯的错是在磁盘视图里找 android 视图下的目录结果一脸懵。各目录职责是固定的java 目录放 Kotlin 或 Java 源码res 目录放布局、图片、字符串、颜色等资源manifest 文件声明应用的组件、权限和入口。这些内容在创建模板时会被一起生成但搞清楚它们的分工对后面排查问题很有帮助。比如新 Activity 创建后如果没在 manifest 里注册运行时会在启动瞬间直接崩溃报找不到 Activity 的错。3. Android 虚拟设备用 AVD 把多种机型一次性跑起来3.1 AVD Manager 创建模拟器CPU 架构和系统镜像的选型区别Android 虚拟设备简称 AVD是一套模拟器配置方案。它允许设定与实际情况相符的 Android 设备型号在多种设备平台上运行并测试应用。创建 AVD 的首选方式是 Tools 菜单里的 Android AVD Manager。AVD 管理器中的配置项主要有设备型号比如 Pixel 系列、Nexus 系列、系统镜像API 级别、ABI 类型、存储空间、屏幕尺寸。这里最大的坑是 ABI 选择。x86 镜像在 Windows 和 Linux 上速度快但只能在支持硬件加速的机器上跑armeabi-v7a 镜像兼容性好但启动极慢。现在的 Android Studio 默认会推荐 x86_64 镜像配合 Intel HAXM 或 Windows Hypervisor Platform 加速。如果装完 AVD 后发现模拟器启动非常卡先检查系统镜像的 ABI 是不是选成了 ARM 类型。创建 AVD 时我一般这样配置设备定义Pixel 2 系统镜像API 27 (x86_64) 存储2GB 内部存储 启动选项启用硬件键盘参数说明Pixel 2 的屏幕密度能覆盖大多数现代应用的 UI 适配需求API 27 的 x86_64 镜像在支持硬件加速的环境下冷启动时间能控制在 10 到 20 秒以内。如果只是测试布局不建议开多套不同 API 级别的 AVD等真正遇到兼容性问题再补不迟。3.2 启动模拟器与部署应用Run 菜单背后的完整流程创建完 AVD 后在 AVD Manager 列表里选中目标设备点击 Start 启动。模拟器启动完成后在 Run 菜单中选择 Run helloworldAndroid Studio 会依次执行Gradle 编译、APK 打包、安装到模拟器、启动 Activity。如果之前没启动任何 AVDAndroid Studio 会弹出设备选择窗口可以在这里选择已有模拟器或启动新的模拟器。命令行方式创建 AVD 是另一种做法适合只想快速起一个测试环境的情况avdmanager create avd -n test_avd -k system-images;android-27;google_apis;x86_64 -d pixel_2参数说明-n指定 AVD 名称-k指定系统镜像的完整标识-d指定设备定义。这里的 system-images 路径要和 SDK Manager 里实际下载的镜像一致如果路径写错会直接报错。命令行创建的好处是便于批量配置多套测试环境缺点是没法以可视化方式调整硬件参数所以我一般只在 CI 环境里用它。3.3 模拟器驻留内存与多设备切换的实践模拟器默认会占用大量内存启动后查看任务管理器qemu 进程吃 2GB 内存是常态。如果电脑内存只有 8GB同时开两个 AVD 基本就会卡到鼠标漂移。我一般保持只启动一个 AVD并关闭不必要的后台服务。另一个实践是冷启动和快启动的区别快启动保存了系统状态、恢复速度快但有时会出现系统时间异常或应用状态不干净的问题。排障时建议用冷启动选 Cold Boot 模式。关于多设备切换AVD Manager 里可以创建多个不同 API 级别的 AVD但每次切换都要重新部署应用。更高效的做法是先检查应用对不同屏幕密度和 API 的兼容性确认有问题后再针对性创建低版本 AVD 做专项验证而不是一开始就全套设备铺开。4. 实时布局与富布局编辑器可视化界面设计的两层用法4.1 实时布局XML 改动即时预览不必每次跑模拟器实时布局功能的定位是省时间。双击 XML 布局文件在编辑区下方选 Text 标签右侧选 Preview 标签Layout 文件里的任何改动都会直接反映到预览窗口。不用把应用部署到模拟器就能看到界面长什么样。Preview 面板顶部有几个下拉菜单它们的功能容易被人忽略。第一个菜单用来切换不同的显示模式比如纵向视图和横向视图——把纵向视图调好切到横向视图Android Studio 会自动创建对应的layout-land目录和文件第二个菜单切换设备尺寸比如从 Pixel 2 切到 Nexus 5第三个菜单调整设备朝向第四个菜单可以访问 Activity 或布局使用的个别 Fragment 片段再往右可以切换 UI 模式的语言用来预览不同语言下文本是否溢出最右边的菜单切换 API 版本。我在调整布局时最常用的是多设备预览模式可以同时用一个布局文件预览多个屏幕尺寸的效果。这样能快速发现极端尺寸下控件的挤压问题比如按钮被拉伸变形、文字被截断。但实时布局预览终归是静态渲染像 RecyclerView 滑动效果、动画、运行时数据填充这类动态内容它是看不到的。所以实时布局适合验证静态 UI动态交互还是要上模拟器或者真机。4.2 富布局编辑器拖拽组件和约束布局的基本操作富布局编辑器支持从面板直接拖拽组件到布局中也支持在多屏幕配置中同时查看多种布局的显示效果。使用方式是在项目中浏览到 res 下的 layout 文件夹右键点击 layout 文件夹选择 New Layout resource file输入名称并指定 root 元素点击 OK 后 Android Studio 会在编辑器里自动打开该布局。常见做法是 root 元素选择 ConstraintLayout因为它可以用约束关系来定义组件位置比 LinearLayout 的嵌套更扁平渲染性能也好一些。例如放置一个 Button 和一个 TextView可以通过约束让它们水平和垂直居中androidx.constraintlayout.widget.ConstraintLayout android:layout_widthmatch_parent android:layout_heightmatch_parent Button android:idid/btn_login android:layout_widthwrap_content android:layout_heightwrap_content android:text登录 app:layout_constraintBottom_toBottomOfparent app:layout_constraintEnd_toEndOfparent app:layout_constraintStart_toStartOfparent app:layout_constraintTop_toTopOfparent / /androidx.constraintlayout.widget.ConstraintLayout逻辑说明这里用了四条约束把按钮固定在父布局的水平和垂直中心layout_constraintBottom_toBottomOf等属性指定的是按钮边缘与目标组件边缘的锚定关系。约束布局的核心是每个组件至少要有横向和纵向各一条约束如果只加了一条或两条组件会偏到屏幕一侧甚至消失这是新手最容易踩的坑。参数说明wrap_content让按钮宽度按文字内容自适应layout_constraintStart_toStartOf和layout_constraintEnd_toEndOf组合实现水平居中Top_toTopOf和Bottom_toBottomOf组合实现垂直居中。想让组件之间有间距时用layout_margin系列属性但注意约束和 margin 的关系是往外推的方向要对才能生效。4.3 模板从 Blank Activity 到 Login Activity 的创建链路Android Studio 提供多种模板能自动创建 Activity 以及必要的 XML 文件。创建方式是在项目浏览器中右键点击包名选择 New Activity然后从模板列表中选择类型。模板包括 Blank Activity、Fullscreen Activity、Tabbed Activity 等同时还可以从菜单选择 Image Asset用向导生成应用图标。以 Login Activity 模板为例。选择该模板进入向导后需要设置 Activity 名称、Layout Name、标题等。默认情况下会勾选 Include Google sign in 选项——对这个演示项目来说用不到所以取消勾选。还有个选项是设置 Hierarchical Parent它决定按设备后退键时返回哪个界面可以把路径上的父页面填进去留空则不带返回层级。点击 Finish 之后Android Studio 会创建出 Activity 类和对应的 layout 文件。模板省去了手写基础代码的过程但生成的文件里往往包含一些用不到的依赖和布局元素。比如 Login Activity 模板会带入设计好的输入框、按钮、进度条等内容如果不加清理就直接用会让布局显得臃肿。我一般会把模板生成的布局作为起点删除不需要的组件和样式只保留核心结构。5. 避坑手册模板、Manifest 与 Lint 工具的高频翻车现场5.1 现象新创建的 LoginActivity 无法被启动原因创建完模板 Activity 后新 Activity 默认不会自动注册为启动入口AndroidManifest.xml 里主入口的 intent-filter 仍然指向原来的 MainActivity。更隐蔽的是模板生成时可能带了对某个不存在的类或库的引用比如 Google 登录相关的依赖没被移除编译时不报错运行时就挂。解决先在 Android Studio 的 Build Clean Project 执行一次清理然后确认 Manifest 中只保留需要的 Activity 节点。以下是一个将 LoginActivity 设为主入口的标准写法application android:allowBackuptrue android:icondrawable/ic_launcher android:labelstring/app_name android:themestyle/AppTheme activity android:namecom.tuts.helloworld.LoginActivity android:labelstring/app_name intent-filter action android:nameandroid.intent.action.MAIN / category android:nameandroid.intent.category.LAUNCHER / /intent-filter /activity /application参数说明android.intent.action.MAIN声明该 Activity 是应用入口android.intent.category.LAUNCHER声明它会出现在桌面的启动图标中。如果入口 Activity 没有这两项配置APK 能装上但是点击图标没有任何响应。5.2 现象Lint 工具检查完报了一堆看不懂的警告原因Android Lint 是静态分析工具会对项目源代码做全量检查检测潜在漏洞和编译器注意不到的代码问题。但它也包含一些代码风格类和性能建议类检查项比如布局层级过深、未使用的资源、硬编码字符串等。这些警告在模板和手写代码混合的工程里尤其多不处理不影响运行但会影响构建输出的信号可读性。解决把 Lint 的检查范围调整为当前改动内容而不是整个项目。操作方法Analyze Inspect Code 选择 Custom Scope只选择改动过的文件或目录。如果某些警告确认可以不处理在lint.xml中配置忽略。以下是一个示例配置lint issue idHardcodedText severityignore / /lint参数说明issue id对应 Lint 的检查项 IDHardcodedText是硬编码字符串检查severity可以设为ignore、warning或error。注意不要一上来就全局忽略一类检查等看清楚每条警告的含义再做决定否则容易把真正的问题一起忽略掉。5.3 现象模拟器启动后应用安装速度特别慢原因Android Studio 每次运行应用都会走一次 Gradle 构建构建过程中会重新打包资源和 APK 签名。如果工程里有较多资源文件加上模拟器的磁盘读写性能本来就不如物理机安装速度就会非常慢。另外一个原因是模拟器开启了快照保存恢复时也会拖慢整体响应。解决先把模拟器的 Cold Boot 模式关掉并在 Run 配置里启用 Instant Run 相关的增量构建。更直接的做法是使用 Debug 构建变体它的构建时间和安装体积都比 Release 小得多。另外定期执行 Build Clean Project清理掉无用的增量构建缓存效果也比较明显。5.4 现象从 Eclipse 导入项目后源码目录是空的原因Eclipse 项目的目录结构和 Android Studio 不同导入时如果原来的 src 目录不是标准路径Android Studio 可能无法识别源码目录。另一个常见原因是原项目里依赖的第三方 jar 包路径是绝对路径迁移后找不到文件导致构建失败。解决导入时选择 Import Project (Eclipse ADT, Gradle, etc.) 而不是 Open Project。如果是源码目录识别问题在模块的 build.gradle 里手动配置 sourceSetsandroid { sourceSets { main { manifest.srcFile src/main/AndroidManifest.xml java.srcDirs [src] res.srcDirs [res] } } }参数说明java.srcDirs指定 Java 源码所在的目录可以配置多个res.srcDirs指定资源目录。其实正确走一遍导入向导Android Studio 会把这些配置自动处理好。手动配置只适用于向导失败后的补救场景。5.5 现象Lint 检查出重复图片或重复编译内容但不影响运行原因Lint 能检测到应用中是否有重复的图片或编译内容。这通常发生在多个模块同时引用同一份资源或者同一张图片在不同分辨率目录下重复放置比如 drawable-hdpi 和 drawable-xhdpi 里都放了一张内容完全相同但尺寸不一致的图。解决这类警告建议处理因为重复资源会让 APK 体积变大。删除多余的副本用drawable/统一目录或把图片移到mipmap/目录下。如果图片量很大考虑用 WebP 格式替代 PNG体积能缩减一半以上。6. 从新工程到可运行 App把验证链路当成开发习惯做一个新项目我的习惯是拿到模板后的第一件事不是写业务代码而是先把“能不能跑”验证一遍。这套验证链路包括检查 Manifest 的入口是否正确、确认 AVD 能正常启动、跑一次空模板的 Run 流程、跑一遍 Lint 检查全量问题。只有这四步都通了才开始往里面填业务代码。这样做的好处是可以把环境问题、配置问题和业务代码问题隔离开不至于一上来就面对十几个报错却分不清根源。验证链路的具体操作如下打开 project 结构确认模块名称和包名启动 AVD确认系统镜像正常加载在 Run 菜单选择 Run 并观察 Gradle 构建日志运行 Lint 检查并在底部面板逐条查看问题分布最后手动修改布局中的一个 TextView 文本确认实时布局预览能即时刷新。进阶配置方面有几个参数值得关注。第一个是签名配置Debug 构建默认使用 debug 签名上线前必须配置正式签名。可以在 app 模块的 build.gradle 中加入android { signingConfigs { release { storeFile file(release.keystore) storePassword your-store-password keyAlias your-key-alias keyPassword your-key-password } } buildTypes { release { signingConfig signingConfigs.release minifyEnabled true shrinkResources true } } }参数说明storeFile指定 keystore 文件路径storePassword和keyPassword分别对应 keystore 和 key 的密码minifyEnabled true开启代码混淆shrinkResources true在混淆基础上去除未使用资源。注意混淆规则文件要在proguard-rules.pro里配置否则第三方库里的反射类会被混淆掉导致运行时崩溃。第二个是主题配置。模板默认的 AppTheme 是 Material 主题的浅色变体。如果想指定应用全局样式可以在values/styles.xml里覆盖style nameAppTheme parentTheme.AppCompat.Light.DarkActionBar item namecolorPrimarycolor/colorPrimary/item item namecolorPrimaryDarkcolor/colorPrimaryDark/item item namecolorAccentcolor/colorAccent/item /style参数说明colorPrimary是工具栏、状态栏的主要颜色colorPrimaryDark是状态栏颜色colorAccent控制按钮、链接等控件的强调色。这里的颜色值需要在res/values/colors.xml里预先定义否则编译会直接报资源找不到。第三点是 API 版本适配。低版本设备上不支持新 API所以在代码里做版本判断是必须的。常见做法是在调用新 API 前判断 SDK 版本比如运行时权限请求需要判断 API 23 及以上通知渠道设置需要判断 API 26 及以上。把这些判断封装到工具类里避免散落在各 Activity 中。几个方向值得继续深入把项目从 Eclipse 迁移过来后跑通完整链路用模板快速搭出登录、主页、设置三个基本页面在模拟器里完成多分辨率适配验证把 Lint 检查纳入提交前的固定动作可以在 Git 提交钩子里跑一遍./gradlew lint。从那以后我每次新建工程都强制先走一遍验证链路再开始写第一行业务代码。就是这样一步步把 Android Studio 从“编辑器”变成“开发工作台”希望帮到你。本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询