在升级到 Version22 之后,Android SDK 工具的 ant 自动编译脚本出现错误,导致无法执行为 Jenkins 配置的批处理脚本,一直发送错误邮件。经过调查发现,Android SDK 工具升级后文件和目录结构发生了变化,主要包括以下内容:
- Android SDK 工具 22 之后的版本中,tools 目录中将不再包含以下两个文件:
- tools\zipalign.exe
- tools\sqlite3.exe
但是这两个文件被移动到各自的 platform-tool 和 build-tools 目录下,对应的路径如下:
- build-tools\android-xx\zipalign.exe
- platform-tools\sqlite3.exe
如果需要使用这些文件,需要手动复制到 tools 目录下,或者将其放到 PATH 变量中。
Windows 环境下的设置:
set PATH=c:\android-sdk-windows
set ANDROID_VER=android-13
set PATH=%PATH%;%ANDROID_HOME%\build-tools\%ANDROID_VER%\;
set PATH=%PATH%;%ANDROID_HOME%\platform-tools\;
Linux/MacOS 环境下的设置:
export ANDROID_HOME=/var/share/android-sdk-macosx;
export ANDROID_VER=android-13
export PATH=${PATH}:${ANDROID_HOME}/build-tools/${ANDROID_VER}/;
export PATH=${PATH}:${ANDROID_HOME}/platform-tools;
请参考原来使用的脚本:http://www.lidaren.com/archives/1328
另外,tools\lib 目录不包含以下三个与 EMMA 覆盖率相关的文件:
- tools\lib\emma.jar
- tools\lib\emma_device.jar
- tools\lib\emma_ant.jar
这导致了以下错误:
无法从资源 emma_ant.properties 中加载定义。找不到该文件。
以及
问题:无法创建任务或类型 emma
原因:名称未定义。
需要将以上三个 jar 包导入到 tools\lib 目录下,如果可能的话,建议同时放到 ant 的 lib 目录下。