
简介这份《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_HOMED:\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.batWindows或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 的 zipHelp → Install New Software → Add → Archive直接选中 zip 文件。离线包安装快、可重复团队里几个人配环境时把同一个 zip 传一遍就行。装完后重启菜单栏出现Window → Android SDK and AVD Manager菜单里还能看 Android 图标就说明插件挂上了。装不上时先看两个地方Help → About Eclipse → Installation Details里有没有 Android Development ToolkitHelp → 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 nameHelloAndroid工程名同时决定默认包名后缀Build TargetAndroid 2.3.3 / API 10编译时用的平台 jar来自已安装的 platformsMin SDK Version8 或 9允许运行的最低 API低于它设备上直接装不上Package namecom.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里记录着targetandroid-10这个值可以被android update project命令重写是后期换编译版本的入口。4.2 用命令行创建 AVD比图形界面更适合复现实验报告里是在 AVD Manager 图形界面里新建 AVDAPI 10、SD 卡 2G。图形界面点几下就行但如果要多台机器配同样的模拟器命令行更好复现# 查看已有 AVD 和可用的 target 列表 android list avd android list targets # 新建一个 API 10 的 AVDSD 卡 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是只保留指定 tagHelloAndroid:V表示 tag 为 HelloAndroid 且级别不低于 Verbose级别从低到高是 V、D、I、W、E、F、S。日志刷不停的时候先adb logcat -c清空缓冲再启动应用看到的就都是本次运行产生的。4.4 DDMS 面板实际在看什么把 Eclipse 视图切到 DDMSWindow → 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 ADTAndroid Studio构建描述project.properties / build.xmlbuild.gradle settings.gradle源码位置src/app/src/main/java/资源位置res/app/src/main/res/清单文件根目录 AndroidManifest.xmlapp/src/main/AndroidManifest.xml依赖方式libs/ 下放 jardependencies 块声明导入时选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 快得多。本文还有配套的精品资源点击获取