简介面向需要在无网络或受限网络环境中搭建 Android 开发平台的 Eclipse 用户这是一份 ADT 21.1.0 离线安装包可解决在线安装插件超时、源不可用等问题。压缩包共18个文件主体为15个 jar 插件覆盖 ADT 核心编辑器、DDMS 设备调试、NDK 集成、Traceview/HierarchyViewer 性能分析等模块配套 site.xml 描述插件依赖另含少量 xsl/css 文件辅助更新站点展示整体体积仅12.94MB便于分发与本地部署。安装后即可在 Eclipse 中创建 Android 工程、可视化编辑 XML 布局、配置 AVD 模拟器并联动 SDK Manager 管理多版本 SDK使无网的开发环境也能获得完整 Android 编码与调试能力。已有1038人学习/下载包内目录结构清晰适合离线教学机房、企业内网或网络受限的开发者直接使用。1. Eclipse ADT 离线包这玩意儿还有人装但每次装都有一半人翻车说出来你可能不信直到现在还有人在问 Eclipse 安装 ADT 的事而且问的大多是离线包。ADT 是 Eclipse 上负责 Android 开发的插件集合装上它之后你才能在 Eclipse 里新建 Android 工程、跑模拟器、看日志。在线装要拉一堆依赖内网环境基本走不通离线包就是为了这个场景准备的。你手里攥着一个 adt.zip 不知道怎么喂给 Eclipse这篇文章就是干这个用的。新手能照步骤走完熟手可以跳过流程直接捡后半段的版本匹配逻辑和坑位。2. 装 ADT 之前把 Java、Eclipse、SDK 之间的版本账先算清楚2.1 插件机制决定了离线包怎么工作ADT 不是独立软件它是一组打包好的 Eclipse 插件。Eclipse 自身是一个插件化平台启动时扫描自身目录下的 features 和 plugins 两个文件夹把里面的 jar 按声明加载进来。你在 Eclipse 里看到的菜单、透视图、对话框本质上都是插件提供的功能。离线包 zip 内部就是这样一套结构——某个特定版本的 ADT 插件归档。Eclipse 的 Update Manager 支持从本地 zip 读取更新站点内容这就是“Archive”安装方式的原理。在线安装时 Eclipse 会去开发者维护的远程更新站点下载插件和依赖离线安装时你把远程站点换成本地 zipEclipse 把 zip 里的 features 和 plugins 直接拷进安装目录。搞懂这个机制有几个直接好处第一你清楚地知道“离线”只是省掉了网络下载这一步插件照样要注册进 Eclipse 的 configuration 才生效第二你会意识到离线包必须包含完整的 features 和 plugins 目录结构否则 Update Manager 解析不到任何东西第三你也能预见到如果本机 Eclipse 的版本兼容性不支持这个 ADT 版本离线包再完整也装不进去。后面所有排查最终都指向这三点。2.2 版本账Eclipse、Java、ADT 三者互相牵制这是整个安装流程里最容易翻车的一环也是所有“按教程操作但就是失败”的根源。Eclipse 本身是 Java 程序启动需要 JVM因此 JDK 版本决定了 Eclipse 能不能正常启动Eclipse 版本决定了插件所能调用的扩展点是否被完整保留ADT 则在设计时锁定了对 Eclipse 版本的最低要求。三者的关系是单向依赖JDK 撑起 EclipseEclipse 撑起 ADT。对于维护老项目的人我的建议是先确认手里的 JDK 是哪一代。如果你的 Eclipse 还是 3.x or 4.x 早期版本别用太新的 JDK很多老版本 Eclipse 在新 JDK 上会直接报 Unable to load 或干脆连启动器都弹不出来。我一般会先把 Java 环境检查一步放在最前面花三十秒确认能省掉后面两小时的玄学排错。# 第一步确认 Java 是否可用、版本是否符合预期 java -version # 第二步确认 JAVA_HOME 是否指向正确的 JDK 路径 echo $JAVA_HOME # 第三步用指定 JDK 启动 Eclipse排除系统环境变量干扰 # 如果 Eclipse 本身能起来说明 JDK 不是瓶颈 /path/to/eclipse/eclipse -data /tmp/ws_check第一条命令输出里能看到 JVM 的构建版本如果显示的是很新的版本号而你的 Eclipse 又是十年前的老版本这里就要警觉。第二条命令确认环境变量指向的是完整的 JDK 目录而不是瘦身过的 JRE——Eclipse 安装插件时需要编译工具某些操作会调用 JDK 的 jar 和 javac只有 JRE 的话后续会踩坑。第三条命令指定一个临时工作区启动目的是把“Eclipse 自身能不能跑”和“工作区配置是否损坏”这两个变量拆开。参数-data指定 workspace 路径如果你平时打不开 Eclipse先用这条命令排除工作区锁定的问题。2.3 先套一个“能跑的最小组合”再想升级的事这里说的最小组合指的是“JDK Eclipse ADT 离线包 SDK 基础工具”这一整套而不是单独某个插件。我接触过的很多翻车案例都是开发者手里有一个旧的 Eclipse、一个从同事那拷来的 adt.zip、一套网上随便下的 SDK然后就开始装装不上就怀疑人品。正确的打开方式是把 Eclipse 和 ADT 当作一个整体看待。拿到离线包之后先打开包内的说明文档或 XML 元数据看看它要求的 Eclipse 版本范围。如果包内没有文档就先用 Help - About Eclipse 看当前 Eclipse 的版本号再和 ADT 包内 features 目录下的 feature.xml 做比对。feature.xml 里通常写明了依赖项。# 查看离线包内 features 目录结构 unzip -l adt.zip | grep features | head -20 # 解压后查看某个 feature 的元数据以包含 android 的 feature 为例 unzip -o adt.zip -d /tmp/adt_extract grep -A 5 requires /tmp/adt_extract/features/*.xml | head -40第一条命令的作用是确认离线包里有 features 目录这是 Update Manager 能否识别的前提。第二条命令把包内容释放到临时目录再通过 grep 看元数据里记录的依赖条件。如果你在元数据里看到类似“Eclipse 版本最低为某个早期 4.x”的声明就说明当前 Eclipse 满足要求可以继续安装。这段操作不复杂但它能帮你把“为什么装不上”从人品问题变成可查的版本问题。3. 离线安装 ADT 的标准流程把 zip 喂给 Eclipse 的 Update Manager3.1 先把离线包内容验一遍别等报错才后悔很多人拿到 adt.zip 的第一反应是直接打开 Eclipse 开始装我强烈不建议。至少花两分钟验证 zip 的完整性和内部结构。损坏的 zip 在解压到一半时才会报错那时候 Eclipse 已经往 configuration 目录里写了一半内容留下一个半残的插件状态再装就要先清注册信息反而多花时间。我曾经收到过一个从某论坛下载的“ADT 离线包”解压一看里面根本没有 features 目录只有一堆散落的 jar。这种包就算强行安装Eclipse 也无法把它识别为插件更新站点。所以第一步永远是先看 zip 内部结构。# 检查 zip 完整性并查看是否包含 plugins/features 目录 unzip -t adt.zip # 查看顶层目录结构确认 features 和 plugins 两个目录存在 unzip -l adt.zip | awk {print $4} | cut -d/ -f1 | sort -u | grep -E features|pluginsunzip -t会逐个文件计算校验值如果 zip 在拷贝或下载过程中损坏这一步就会暴露。第二段命令的作用是提取 zip 内每个文件的顶层目录名然后去重排序最后过滤出 features 和 plugins。看到这两个目录同时出现才说明这个包是标准的 Eclipse 插件归档。如果只有 plugins 没有 features也不是绝对不能装但你需要走手动部署插件的路径后面我会在避坑章里展开说。3.2 用 Install New Software 安装离线包关键在取消勾选那个网络选项确认离线包没问题之后正式安装步骤其实很短但有一个坑位百分之八十的人会踩安装向导默认勾选了联网搜索依赖的选项。离线环境下这个选项会导致 Eclipse 卡在 “Contacting software sites” 界面挂机半小时没反应甚至直接报网络连接超时。正确操作是打开 Eclipse 后进入 Help - Install New Software点右上角的 Add 按钮弹窗里 Name 随便填一个自己能认出来的名字Location 选择 Archive然后选中你的 adt.zip。随后会出现一个可展开的条目里面通常包含若干个子项。在开始安装前关掉 “Contact all update sites during install to find required software” 这个勾选。这一步非常关键——它会阻止 Eclipse 在安装过程中访问任何远程更新站点。# 安装前给 Eclipse 目录做一个备份以便随时回滚 cp -r /path/to/eclipse /path/to/eclipse_bak_$(date %Y%m%d) # 如果 zip 和 Eclipse 在不同磁盘先拷贝到本机目录再安装 cp adt.zip /tmp/adt_install/adt.zip备份是用cp -r直接复制整个 Eclipse 安装目录时间戳拼在目录名里方便识别。拷贝离线包到本地临时目录也是我形成习惯的一步因为某些网络盘上的 zip 解压到一半会被权限卡住本地磁盘能省掉这一层问题。如果后续安装出错要回滚把原来的备份目录改回 eclipse 即可整个过程不超过两分钟。安装进度条走完后ECLIPSE 会提示重启。这一步别跳过也别忘了在重启后确认插件真的加载了。因为某些情况下 Update Manager 只是把 jar 拷贝到位插件注册信息还没写入全局配置重启是强制触发配置刷新。3.3 重启后确认插件已加载别急着新建项目重启后第一步打开 Window - PreferencesWindows/Linux或 Eclipse 偏好设置看左侧列表里是否出现 Android 这一项。如果出现了说明 ADT 的主插件已经注册到当前 Eclipse 配置里。如果连 Android 项都看不到先别急着重复安装那多半是第 5 章里说的版本匹配或配置写入问题。也可以用命令行直接检查插件目录里的产物。安装成功之后Eclipse 的 plugins 目录下应该多出一批以 com.android 开头的 jar 文件。这一步能帮你区分“插件没装上”和“插件装上但没生效”这两种完全不同的情况。# 查看 plugins 目录下与 android 相关的 jar 是否已经落盘 ls /path/to/eclipse/plugins | grep -i android # 查看 configuration 目录是否生成了对应 bundle 信息 ls /path/to/eclipse/configuration/org.eclipse.equinox.simpleconfigurator/第一条命令的过滤条件grep -i android会匹配 com.android.ide.eclipse.adt、com.android.ddms 等插件文件。只要这些 jar 存在说明文件层面的安装已经完成。第二条命令查的是 Equinox 框架的简单配置器目录里面生成的 bundles.info 记录着哪些插件会在启动时被加载。如果 plugins 目录里有 jar但 bundles.info 里没有对应条目说明插件没有注册进启动列表Eclipse 不会加载它。这种情况我建议直接重装而不是手动改 bundles.info——手改容易把启动列表搞坏代价得不偿失。4. 装完只是开始SDK 路径绑定与 AVD 模拟器的离线适配4.1 在 Eclipse 里绑定 Android SDK填错一步后面全是玄学ADT 插件装好不等于能开发它还要知道 Android SDK 放在哪里。这个路径在 Window - Preferences - Android - SDK Location 里配置。很多人随手把 NDK 路径或者 SDK 里的某个子目录填进去Eclipse 会直接报错或者在 Android 面板里显示一堆问号。SDK Location 要填的是 SDK 根目录也就是包含 platforms、platform-tools、build-tools 这些子目录的上一层。判断标准很简单看目录下有没有platform-tools/adb这个文件。有 adb 的那一层才是 SDK 根目录再往下任何一层都不对。# 确认 SDK 根目录位置查找 adb 可执行文件 find /path/to/android-sdk -name adb -type f 2/dev/null # 如果只装了 platform-tools检查版本是否匹配 ADT 预期 cd /path/to/android-sdk/platform-tools ./adb version第一条命令的作用是从 SDK 目录往下找 adb 文件找到的位置就是 platform-tools 子目录它的上一级才是 SDK Location 该填的路径。第二条命令用 adb version 输出当前 adb 工具的版本。如果输出提示版本过老Eclipse 里的 DDMS 会连不上真机或模拟器表现是 Devices 视图一片空白。这个问题和 ADT 插件安装无关但排查时很容易被误认为是插件坏了实际上只是 SDK 工具链版本不配套。4.2 创建 AVD 模拟器系统镜像也是离线的坎选错 platform 直接黑匣子ADT 装好、SDK 路径关联好后你还需要一个 Android 虚拟设备AVD才能真正跑起应用。创建 AVD 的入口在 Window - AVD Manager也可以用命令行创建。这里有一个离线环境里非常容易踩的坑创建 AVD 需要系统镜像system image而很多离线包只带了 SDK 平台文件没带镜像。没有镜像的情况下AVD 创建界面会直接提示某个 target 不可用或者创建成功了一启动就黑屏。如果你手里的离线资源不完整我的建议是先看现有的 platform 有哪些再决定创建哪个 API 级别的 AVD。别上来就挑最新的系统版本老 ADT 配合过新的 platform启动模拟器时会因为硬件加速参数不匹配而闪退。# 列出当前 SDK 已安装的可用 target android list targets # 基于某个已安装的 target 创建 AVD android create avd -n legacy_test -t android-XX # 启动模拟器并关闭音频与快照减少启动阶段的不确定因素 emulator -avd legacy_test -no-snapshot -no-audio -no-boot-anim第一条命令会打印出已安装的 platform 和对应 API 级别你要对照看系统镜像是否存在。第二条命令里-n指定 AVD 名称-t必须匹配第一步列出的某个 target id。如果这里填了一个 SDK 里不存在的 API 级别命令会直接报错并列出可用列表所以这步并不会进入黑匣子状态。第三条命令中的-no-snapshot强制每次冷启动-no-audio去掉音频子系统-no-boot-anim关掉开机动画这三个参数能明显降低老机器的启动负载。如果启动还是失败看控制台输出重点找和 HAXM/KVM 相关的错误那多半是硬件加速没装而不是系统镜像的问题。4.3 第一次跑 HelloWorld用真机兜底模拟器太看人品离线环境下的第一个测试项目我个人强烈建议不要从模拟器开始。模拟器涉及系统镜像、硬件加速、显卡驱动、音频子系统任何一个环节有兼容问题都会表现为黑屏或卡死而且日志信息对新手极不友好。相比之下真机调试的链路短得多插上 USB、开启 USB 调试、adb 识别设备、Eclipse 直接部署中间的变量只有驱动和端口。# 检查真机是否被 adb 正确识别 adb devices # 确认设备号后在设备上安装一个测试 apk 验证链路 adb install path/to/your/apkadb devices的输出里如果出现一行设备序列号且状态为device说明设备已被识别。常见的问题是状态为unauthorized表示手机上没确认调试授权解决方法是看手机屏幕弹窗点允许。adb install这步不是必须的但用它验证一下链路比直接依赖 Eclipse 的部署功能更容易定位问题——如果命令行装包成功说明 SDK 工具链没问题如果命令行装都失败就别花时间调 Eclipse 的部署配置了问题大概率在驱动或 USB 模式上。5. 避坑与排查离线安装 ADT 最常见的五个翻车现场5.1 现象点 Add 后列表空白zip 内容没被解析选好离线包点 Add 确认后安装对话框里应该出现一个可展开的条目。如果列表直接空白没有任何可勾选的项首要怀疑对象就是 zip 的目录结构不对。前面提过Update Manager 识别插件归档靠的是 features 目录如果包的根目录不是标准结构Eclipse 读到的就是一个“没有内容的更新站点”。原因通常有两个一是这个 zip 根本不是插件归档而是某个人把一堆散文件打包在一起二是 zip 的根目录里还有一层嵌套文件夹Update Manager 默认从根目录开始扫描看不到嵌套层里的 features。解决方式也很直接用前面unzip -l的检查方法确认结构如果是嵌套结构解压后重新从内层目录打成标准 zip 再试。我见过最离谱的一个包是把整个 eclipse 安装目录打包了这种包喂给 Update Manager 自然会读不到更新站点信息因为它的 features 目录结构被埋在二级路径里。5.2 现象安装过程报错提示缺少依赖或 Requirements 检查不通过安装到一半弹出一个对话框列出某个名字说“it could not be found”或版本范围不满足这是典型的版本兼容问题。ADT 的某个版本只支持特定范围的 Eclipse老 Eclipse 装新 ADT、新 Eclipse 装老 ADT都会在依赖检查阶段被拦下。处理思路只有一个让两边版本对上。如果你必须用旧 Eclipse就去拿旧版 ADT 离线包如果你手里的离线包是新的那就换新 Eclipse。不存在绕过依赖检查的通用解法强行跳过依赖安装会导致 Eclipse 启动时缺类。判断方法是看报错对话框里的名字如果是 org.eclipse.ui 或 org.eclipse.core.runtime那是在跟 Eclipse 平台自身要依赖如果是其他第三方插件名那说明你缺的东西是某个前置插件这个离线包里带头带全了需要另外找。5.3 现象Eclipse 重启后 Preferences 里没有 Android插件根本没装上安装过程全程无报错进度条也跳完了重启后 Android 偏好设置却不存在。这时先别急着重新安装先用命令行查 plugin jar 是否真的落盘了。如果 jar 存在说明文件已经进目录了问题出在配置注册上。这种“装上了但没生效”的情况多数是 Eclipse 的 configuration 目录写入被中断或权限受限。某些安全软件会把插件 jar 当作外部程序拦截写入。解决方式是关闭拦截软件重新执行安装或者手动清理 configuration 目录下的缓存文件文件名通常是 org.eclipse.update 开头重启后让 Eclipse 重新扫描插件目录。清理计划缓存不会删除已装插件顶多让 Eclipse 下次启动时重新扫描一遍属于安全操作。5.4 现象SDK 路径填了但每次启动都报 SDK 找不到Preferences 里填的路径绝对存在但 Eclipse 每次启动都弹“SDK location not found”或者干脆自动清空了配置。这个现象乍一看很玄学其实是路径字符串里的特殊字符在作怪。老版本的 Eclipse 和 ADT 对路径解析依赖系统属性一旦路径里有空格比如“Program Files (x86)”或者某个中文文件夹名配置写入后 Eclipse 读出来的是被截断的路径于是判定目录不存在。解决方法是把 SDK 放到一个纯英文、无空格的路径下比如C:\Android\sdk或/opt/android-sdk。改完路径后关掉 Eclipse手动编辑工作区里的.metadata/.plugins/org.eclipse.core.runtime/.settings/com.android.ide.eclipse.adt.prefs文件确认里面的 sdk.dir 变量指向新路径。这一步属于“后悔药”操作能手动修正配置记录避免在启动时反复弹窗。5.5 现象模拟器启动黑屏或闪退控制台报 swt 或 GTK 相关错误模拟器能启动但窗口一片黑或者闪一下直接消失控制台里时不时冒出 GTK、SWT 相关字样。这在新版 Linux 64 位环境里特别常见。老版本 Android 模拟器是 32 位程序64 位系统缺了 32 位兼容库图形界面起不来。解决方式是按平台补装兼容库。Debian/Ubuntu 系系统上需要的是 libgtk2.0-0:i386 和 libstdc6:i386 这一组 32 位库CentOS/RHEL 系则要装 glibc.i686 和 libX11.i686。装完之后模拟器窗口才能正常渲染。这一步属于环境修补不算 ADT 本身的问题但排查路径很容易走偏——你会以为是 AVD 配置错了或者系统镜像坏了实际上只是缺两个底层库文件。# Debian/Ubuntu 系统补装 32 位兼容库 sudo apt-get install libgtk2.0-0:i386 libstdc6:i386这条命令安装的是旧模拟器运行所需的图形库和 C 标准库。参数里的:i386表示安装 32 位架构版本这是关键所在——只装 64 位库不解决问题。如果你的发行版提示找不到 libgtk2.0-0 包可能需要先开启多架构支持sudo dpkg --add-architecture i386然后再装。6. 把老环境焊死做一套可复用的 ADT 绿色工作区离线安装 ADT 成功之后最该做的不是马上建项目而是把整套环境做成“绿色可迁移”的状态。原因很简单老环境依赖太多SDK 路径、JDK 路径、插件配置哪怕错一个细节下次换机器全得重来一遍。我的做法是把 Eclipse 安装目录、JDK、SDK 和 workspace 放进同一个总目录下然后用一个启动脚本固定所有路径。这样整套环境可以整体拷贝到另一台内网机器双击脚本就能用不污染系统环境变量也不需要重新走一遍安装流程。#!/bin/bash # 便携启动器固定 JDK 和工作区不依赖系统环境变量 ECLIPSE_HOME$(dirname $0) JDK_HOME$ECLIPSE_HOME/jdk WORKSPACE$ECLIPSE_HOME/workspace # -vm 指定 Java 可执行文件-data 指定工作区路径 $ECLIPSE_HOME/eclipse -vm $JDK_HOME/bin/java \ -data $WORKSPACE \ $脚本里的$(dirname $0)会动态取当前脚本所在目录保证目录结构搬家后仍然有效。-vm参数强制 Eclipse 使用随环境携带的 JDK不读取系统 JAVA_HOME这就避免了目标机器全局环境变量干扰。-data指定工作区在绿色目录内部以后备份或迁移时整个文件夹拷走就是一次完整的备份。参数$透传命令行参数比如你可以加上-clean强制清理插件缓存后再启动用于换机器后第一次启动的场景。我第一次搭这个绿色工作区的时候也被插件缺失坑过一次把整个目录拷到另一台机器后Eclipse 虽然能启动但 Android 相关的菜单灰掉了。后来检查发现是新机器上缺了 SDK 某个子目录里的文件而我只拷贝了 Eclipse 部分。从那以后每次迁移我都强制走一遍完整校验先确认 SDK 根目录有 platform-tools再启动 Eclipse 看 Preferences 里的 Android 项是否正常最后跑一次真机部署。这套流程听起来繁琐但确实把老环境维护从“翻车频繁”变成了“基本一次过”。希望帮到你。本文还有配套的精品资源点击获取