在 Bash 脚本中将外部 Jar 文件添加到 ant 构建

Adding external Jar file to ant build in a Bash Script

我查看了许多与此相关的已发布问题,但似乎无法得出明确的解决方案。我正在尝试使用 emma 为应用程序和 robotium 作为测试单元提供代码覆盖率。外部 dropbox.jar 在 eclipse 中的构建路径中。

应用程序和测试用例 运行 在 Eclipse 中成功,但是当 运行 运行脚本时,ant 无法找到 dropbox.jar 依赖项。下面是我的脚本,后面是 ant 调用日志的一部分

#!/bin/bash
#Code Coverage Script:
#(android:command not found error)
export ANDROID_HOME=/Users/Deverick/android-skds
export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export PATH=$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:/Users/Deverick/Documents/workspace/Diary-Test/libs/dropbox-android-sdk-1.6.1:$PATH

echo $PATH
cd ~/Documents/workspace/
cd Diary
ant clean
cd ..
cd Diary-Test
ant clean
cd ..
android  update project --path ./ --name Diary --target android-16 --subprojects
cd Diary-Test
android  update test-project --main ../Diary --path ./
ant emma debug install
ant emma debug install test

日志输出:

 -code-gen:
[mergemanifest] Merging AndroidManifest files into one.
[mergemanifest] Manifest merger disabled. Using project manifest only.
     [echo] Handling aidl files...
     [aidl] No AIDL files to compile.
     [echo] ----------
     [echo] Handling RenderScript files...
     [echo] ----------
     [echo] Handling Resources...
     [aapt] Generating resource IDs...
     [echo] ----------
     [echo] Handling BuildConfig class...
[buildconfig] Generating BuildConfig class.

-pre-compile:

-compile:
    [javac] Compiling 4 source files to /Users/Deverick/Documents/workspace/Diary/bin/classes
    [javac] /Users/Deverick/Documents/workspace/Diary/src/jpf/android/diary/Diary.java:2: warning: unmappable character for encoding UTF-8
    [javac] //  Copyright ? 2012  Josep Portella Florit <hola@josep-portella.com>
    [javac]               ^
    [javac] /Users/Deverick/Documents/workspace/Diary/src/jpf/android/diary/Diary.java:39: package com.dropbox.client2 does not exist
    [javac] import com.dropbox.client2.DropboxAPI;
    [javac]                           ^
    [javac] /Users/Deverick/Documents/workspace/Diary/src/jpf/android/diary/Diary.java:40: package com.dropbox.client2.android does not exist
    [javac] import com.dropbox.client2.android.AndroidAuthSession;

我该如何将这个 .jar 路径添加到脚本中,以便将其视为依赖项?我已经看到一些对 $CLASSPATH 的引用。大多数与此相关的问题都使用 build.xml 文件来添加依赖项,但是脚本每次都会清除 build.xml。非常感谢任何澄清!

这是 ant 联机帮助页的摘录。希望这有帮助。

-lib <path>
              specifies a path to search for jars and classes

所以只是为了向社区报告,我找到了我的问题的解决方案,也许是一些开发人员使用 ant 编译 android applications with external .jars 的问题。

确保您的 jar 文件立即位于您的 libs 文件夹中,而不是位于 libs 的某个子文件夹中。似乎 ant 不会 递归搜索 libs 的子文件夹以查找 .jar 文件。

再次

运行 脚本,包含库依赖项并从脚本中删除错误。希望对您有所帮助!