在 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
文件。
再次 运行 脚本,包含库依赖项并从脚本中删除错误。希望对您有所帮助!
我查看了许多与此相关的已发布问题,但似乎无法得出明确的解决方案。我正在尝试使用 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
文件。
运行 脚本,包含库依赖项并从脚本中删除错误。希望对您有所帮助!