简介:这份《Android开发环境搭建实验报告》面向刚接触移动开发的初学者与高校实验课学生,聚焦从零配置开发工具链这一常见难点。报告完整记录了Java JDK、Eclipse、Android SDK与ADT的下载安装及环境变量配置过程,并延伸至HelloAndroid项目的新建、构建目标选择、AVD创建与模拟器运行调试,最后附上「Failed to fetch URL…」报错改用HTTP方式解决的排错思路,可作为实验课提交参考或自学对照清单。资源为单个pdf文档,压缩包约650KB,篇幅紧凑、步骤连贯,适合打印或随时翻阅。目前已有113人学习,便于读者在动手搭建时快速定位每步的配置细节与验证方法。
1. 从一份实验报告说起:Eclipse + ADT 时代的 Android 环境由哪几块拼起来
现在新建 Android 项目基本是 Android Studio 一条龙,但如果你手上正好有一份按 Eclipse + ADT 路线写的实验报告,或者要维护一个 2012 年前后立项的老工程,硬套新工具链反而容易卡在构建目标、SDK 版本和目录结构上。这套环境其实就四块积木:编译 Java 的 JDK、承载插件的 Eclipse、提供平台 API 与构建工具的 Android SDK、把前两者粘起来的 ADT 插件。四块拼不齐,报错往往出现在看起来完全不相干的地方——比如 SDK 没进 Path,却在 Eclipse 里报 Android 项目无法编译。下面按实际动手顺序把这四块拆开,每一处都给出验证命令,以及当年最容易翻车的几个点。
2. JDK 与 Android SDK 的路径规划、环境变量分层与安装验证
2.1 安装目录先定死,后面所有路径都从它推导
Windows 上装 JDK 最容易出的问题不是装不上,而是装到了C:\Program Files\Java\jdk1.8.0_xxx这种带空格的路径里。带空格本身不致命,但CLASSPATH、Path里拼路径时忘记加引号,命令行解析就会断在空格处,表现为javac找不到tools.jar。我的习惯是统一放到盘根目录下的短路径,比如D:\dev\jdk和D:\dev\android-sdk,版本变更时只改环境变量,不动其他配置。
Eclipse 不用安装,下载的是压缩包,解压到D:\dev\eclipse即可。这一点和实验报告里写的一致——它是绿色版,卸载等于删目录,所以别和其他 IDE 混放在同一个文件夹。
2.2 JAVA_HOME、Path、CLASSPATH 三者分工不同
很多人把三个变量混着填,结果java -version能用,javac却不行。它们的分工是这样的:
| 变量名 | 典型值 | 作用 | 不配的后果 |
|---|---|---|---|
| JAVA_HOME | D:\dev\jdk | 供其他工具反查 JDK 根目录 | Eclipse、Ant、Gradle 找不到编译器 |
| Path | %JAVA_HOME%\bin | 让 java、javac、jar 全局可调用 | 只能在 bin 目录下执行命令 |
| CLASSPATH | .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar | 指定类库搜索路径 | 编译期报 cannot find symbol |
注意CLASSPATH最前面那个点号,代表当前目录。漏掉它,javac编译当前目录下的类时会找不到自己写的源文件——这是新手最常撞的一堵墙。实验报告里让加lib和demo路径,demo目录在部分 JDK 发行版里并不存在,加了也无妨,但真正必须的是dt.jar和tools.jar。
改完环境变量,务必新开一个命令行窗口再验证,老窗口读的是旧环境块:
# 验证 JDK 是否就位,两条都要有输出 java -version javac -version # 打印生效的 classpath,确认点号和 jdk 路径都在 echo %CLASSPATH% # 直接调用绝对路径下的工具,排查 Path 是否真的生效 "%JAVA_HOME%\bin\javac" -versionLinux 或 macOS 上对应的是在~/.bashrc里写:
export JAVA_HOME=/opt/dev/jdk export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar # 让配置立即生效,避免重新登录 source ~/.bashrcexport写完后必须source一次,否则当前 shell 里还是不认。判断顺序也重要:PATH里 JDK 的 bin 要放在系统自带 java 之前,不然java -version会显示系统的旧版本。
2.3 Android SDK 的目录结构与 tools 的定位
从 SDK 官网下载的安装包解压后,会看到几个关键目录:tools(含android、ddms、emulator等命令行工具)、platform-tools(含adb、fastboot)、platforms(各 API 等级的平台 jar)、add-ons。当年实验报告只提了tools,但实际开发中platform-tools更重要,因为adb在这里。
把两个目录都塞进 Path:
# Windows 下在系统变量 Path 中追加两段(末尾要带反斜杠前的分号分隔) D:\dev\android-sdk\tools;D:\dev\android-sdk\platform-tools # 验证工具链是否全部可见 android -h adb version emulator -list-avdsandroid -h输出的是 SDK 管理器帮助,说明tools生效;adb version打印出 Android Debug Bridge 版本号,说明platform-tools生效。这两条如果只有一条能跑,就是 Path 里漏了一段。SDK 初次运行时会在tools下生成android.bat(Windows)或android(类 Unix),如果提示找不到,检查是否误删了解压后的tools\lib目录。
3. ADT 插件安装、SDK 路径绑定与 Failed to fetch URL 排错
3.1 在线站点安装和离线 zip 安装两条路
ADT 装进 Eclipse 有两种方式。在线方式是在Help → Install New Software → Add,站点名称随意,地址填 ADT 的更新站点,然后一路 Next 接受协议、重启 Eclipse。这条路依赖网络,站点证书或网络出口一变动就会失败,而且中途卡住很难判断是下载慢还是根本连不上。
更稳的是离线包:下载 ADT 的 zip,Help → Install New Software → Add → Archive,直接选中 zip 文件。离线包安装快、可重复,团队里几个人配环境时把同一个 zip 传一遍就行。装完后重启,菜单栏出现Window → Android SDK and AVD Manager,菜单里还能看 Android 图标,就说明插件挂上了。
装不上时先看两个地方:Help → About Eclipse → Installation Details里有没有 Android Development Toolkit;Help → Eclipse Marketplace里搜 ADT 是否显示已安装。两者都没有,多半是 Eclipse 版本和 ADT 不匹配,ADT 对 Eclipse 的版本相当敏感,版本错位时表现是装完无报错但菜单不出现。
3.2 把 SDK 路径绑到 Eclipse 上
插件装好只是第一步,Eclipse 还不知道 SDK 在哪。走Window → Preferences → Android,在SDK Location里选择D:\dev\android-sdk,点 OK。
# 绑定成功后,Eclipse 会在 SDK 目录下读写这些文件,可用于反向确认 ls D:/dev/android-sdk/platforms # 应列出已安装的 API 等级,如 android-10 ls D:/dev/android-sdk/platform-tools # 应包含 adb.exe / adb如果 SDK Location 填了但列表里Target Name是空的,说明 SDK 里一个平台都没装。回到 SDK 管理器勾选 API 10(对应 Android 2.3.3),安装完成后再回来,列表就会出现Android 2.3.3。
提示:Preferences 里的 SDK 路径建议用绝对路径并避免中文目录,Eclipse 插件在解析中文路径时偶发乱码导致识别不到平台。
3.3 Failed to fetch URL 的成因与处理顺序
实验报告里记的那条错误——SDK 安装时报Failed to fetch URL...——是这套环境里出现频率最高的一个。它的直接原因是 SDK 管理器拉取仓库清单或包体时,TLS 握手失败、返回的清单格式不被旧版本解析,或者网络出口把请求拦掉了。表现通常是进度条卡在Fetching然后弹出红色叉号,本地sdk/temp目录里留下半截文件。
处理顺序建议固定成这样,从代价最小的开始试:
# 1. 先看是不是缓存脏了:清掉 temp 与缓存清单后重试 rm -rf D:/dev/android-sdk/temp rm -f D:/dev/android-sdk/repository.xml # 2. 在 SDK 管理器的 Settings 里勾选 Force https://... to be fetched using http:// # 也就是把清单请求从加密端口换到明文端口,绕过握手失败 # 3. 换用命令行触发,报错信息比图形界面详细 android update sdk --no-ui --filter platform-tools,android-10 # 4. 仍然失败就确认时间和出口:系统时间偏差过大会直接导致证书校验不通过 date实验报告里给出的解法正是第 2 步:把 HTTPS 换成 HTTP。这个开关能生效的原因是旧版 SDK 管理器对自签证书和中间拦截比较敏感,走明文端口反而绕开了这层校验。代价是传输不再加密,所以它适合内部网络或一次性拉取,不适合长期作为默认配置。第 3 步的命令行方式值得单独练一下,--filter后面的包名可以从android list sdk --all的输出里抄,--no-ui让它不进交互界面,便于写进脚本批量铺环境。
3.4 装完 ADT 后必须回头做的一次校验
插件、SDK、路径三者都到位后,回到Preferences → Android,如果已安装平台出现在列表里且没有黄色警告三角,链路就是通的。这一步没做就往下一步走,后面创建项目时会看到Project has no target,然后被迫回来重查,反而更慢。另一个检查点是Window → Preferences → Android → DDMS,确认adb路径被自动填上了,没有的话手动指向platform-tools\adb.exe。
4. HelloAndroid 工程创建、AVD 建立与 DDMS 调试链路
4.1 新建工程时四个字段别随手填
File → New → Project → Android → Android Application Project,弹出的向导里有几个字段决定了工程能不能跑起来:
| 字段 | 示例值 | 说明 |
|---|---|---|
| Project name | HelloAndroid | 工程名,同时决定默认包名后缀 |
| Build Target | Android 2.3.3 / API 10 | 编译时用的平台 jar,来自已安装的 platforms |
| Min SDK Version | 8 或 9 | 允许运行的最低 API,低于它设备上直接装不上 |
| Package name | com.example.helloandroid | 应用唯一标识,发布后不可更改 |
Build Target 选得比 Min SDK 高是正常的——用高版本编译、允许低版本运行。反过来把 Min SDK 设得比 Build Target 还高,ADT 会直接拒绝。工程建好后 ADT 会自动生成src、res、AndroidManifest.xml和R.java,其中R.java是自动生成的资源索引,不要手动改,也不要提交到版本库。
# 工程目录确认:AndroidManifest.xml 和 res/ 必须同级存在 ls HelloAndroid # src res assets AndroidManifest.xml project.properties default.propertiesproject.properties里记录着target=android-10,这个值可以被android update project命令重写,是后期换编译版本的入口。
4.2 用命令行创建 AVD,比图形界面更适合复现
实验报告里是在 AVD Manager 图形界面里新建 AVD:API 10、SD 卡 2G。图形界面点几下就行,但如果要多台机器配同样的模拟器,命令行更好复现:
# 查看已有 AVD 和可用的 target 列表 android list avd android list targets # 新建一个 API 10 的 AVD,SD 卡 2G,屏幕用 HVGA android create avd -n AVD_API10 -t android-10 -c 2048M -s HVGA # 启动模拟器 emulator -avd AVD_API10参数逐个说:-n是 AVD 名称,后续emulator和adb都靠它定位;-t指定目标平台 ID,必须来自android list targets的输出,写错名称会提示 target 不可用;-c是 SD 卡镜像大小,2048M对应报告里的 2G,也可以用-c D:\avd\sdcard.img指向已有镜像;-s是屏幕分辨率,HVGA 是 320x480,模拟器启动快、占用小。首次启动冷启动可能两三分钟,卡在开机动画属于正常,别急着关。
4.3 adb 把 apk 推上去,同时在命令行看日志
模拟器起来后,Eclipse 里Run → Run As → Android Application会自动编译、安装、启动。想脱离 IDE 验证产物是否真装进去了,走 adb:
# 确认设备被识别,模拟器通常显示为 emulator-5554 adb devices # 安装工程编译出的 apk adb install -r bin/HelloAndroid.apk # 按包名启动主 Activity adb shell am start -n com.example.helloandroid/.HelloAndroidActivity # 只看本应用日志,按 tag 过滤,避免被系统日志刷屏 adb logcat -s HelloAndroid:V # 抓取完整日志到文件,事后慢慢看 adb logcat -d > hello.log-r表示覆盖安装,重复调试时省掉手动卸载;am start里的-n后面是包名加 Activity 名,写成包名/包名.Activity的形式;logcat -s是只保留指定 tag,HelloAndroid:V表示 tag 为 HelloAndroid 且级别不低于 Verbose,级别从低到高是 V、D、I、W、E、F、S。日志刷不停的时候先adb logcat -c清空缓冲,再启动应用,看到的就都是本次运行产生的。
4.4 DDMS 面板实际在看什么
把 Eclipse 视图切到 DDMS(Window → Open Perspective → DDMS),四个面板各管一段:Devices 列出连接的设备和进程,可以选中进程点Stop强杀、点Dump抓堆;LogCat 就是上面adb logcat的图形版,右键可以保存和导入;File Explorer 能直接浏览设备文件系统,/data/data/包名/下是该应用的私有目录,调试数据库和 SharedPreferences 时非常直观;Emulator Control 用于向模拟器发短信、模拟来电和注入 GPS 坐标,测电话相关逻辑时不需要真机。
注意:File Explorer 里对
/data的操作依赖 root 权限,模拟器默认可以,真机零售版通常不行,写文件前先确认目录权限,否则会看到只读报错。
5. 迁到 Android Studio 的验证方法与老工程的兼容处理
老环境搭起来是为了跑通,但真要长期改代码,还是得迁到 Android Studio。迁移本身不难,难在迁完要确认功能没变。先看目录结构差异,心里有数再动手:
| 项目 | Eclipse + ADT | Android Studio |
|---|---|---|
| 构建描述 | project.properties / build.xml | build.gradle + settings.gradle |
| 源码位置 | src/ | app/src/main/java/ |
| 资源位置 | res/ | app/src/main/res/ |
| 清单文件 | 根目录 AndroidManifest.xml | app/src/main/AndroidManifest.xml |
| 依赖方式 | libs/ 下放 jar | dependencies 块声明 |
导入时选File → New → Import Project,指向 Eclipse 工程根目录,向导会生成 Gradle 脚本。关键动作是打开生成的build.gradle,把minSdkVersion和targetSdkVersion显式写死,别依赖默认值:
android { defaultConfig { // 和老工程的 project.properties 保持一致,避免行为漂移 minSdkVersion 9 targetSdkVersion 10 } // 旧工程若用了 support 库,需在 dependencies 中显式声明版本 }导入后常见两类报错:一是R符号找不到,多半是AndroidManifest.xml里的包名和build.gradle的applicationId不一致;二是资源命名冲突,老工程里res目录下的图片名带了大写字母或短横线,新构建系统不允许,改名即可。
最后一步是验证产物。用./gradlew assembleDebug编译出 apk,再用同一套 adb 命令装到之前那个 AVD 上:
# 编译并确认输出路径 ./gradlew assembleDebug ls app/build/outputs/apk/debug/ # 装到老模拟器上跑一遍,和 Eclipse 时期行为对比 adb install -r app/build/outputs/apk/debug/app-debug.apk adb shell am start -n com.example.helloandroid/.HelloAndroidActivity adb logcat -s HelloAndroid:V装得上、起得来、日志里主流程的 tag 顺序和 Eclipse 时期一致,迁移就算验完了。如果只想改老工程的一两行又不想装完整工具链,直接用adb install加aapt dump badging app-debug.apk看包名和版本号,比开 IDE 快得多。
本文还有配套的精品资源,点击获取