【发布时间】:2012-04-02 13:14:29
【问题描述】:
简单总结一下,我的项目结构如下:
- A 和 B 是 android lib-projects,其中 B 依赖于 A
- C(普通的android项目)依赖于B
- T 是 C
我的 jenkins 服务器上有相应的两个项目,一个用于 C,一个用于 T,它们有自己的构建脚本,实际上只使用 android 和 ant 命令.所以C的build没有问题,但是我无法得到T的work build。
“工作”应该意味着,根据脚本,它要么不编译,要么在运行时失败,因为缺少一些类,实际上不可能,或者没有通过 dexing 阶段,因为添加重复项。
所以很明显,依赖项有问题,但有趣的是它在本地机器上运行得非常好用 eclipse & 在模拟器上。
所以这里有一个示例 shell 脚本代码,它实际上应该可以工作并创建一个 apk 文件:
cd project-test
android update test-project -m ../projectC -p .
ant clean debug
不幸的是,这会导致来自 B 的一些类(我也将要测试)无法从 java 编译器中找到,并且我总是会收到如下错误:
...
[javac] Compiling 14 source files to /home/mehmed/git/project/test-project/bin/classes
[javac] SomeActivityTest.java:8: package com.mydomain.portal.android.project.activity does not exist
[javac] import com.mydomain.portal.android.project.activity.SomeClass1;
[javac] ^
[javac] SomeActivityTest.java:9: package com.mydomain.portal.android.project.data does not exist
[javac] import com.mydomain.portal.android.project.data.SomeClass2;
[javac] ^
[javac] SomeActivityTest.java:10: package com.project.portal.android.project.util does not exist
[javac] import com.mydomain.portal.android.project.util.SomeClass3;
[javac] ^
...
我确实尝试了几乎所有可能的方法来解决这个问题,甚至手动编辑 project.properties 文件并同时包含 B 或 B 和 C 作为 lib-像这样的项目:
cd project-test
android update test-project -m ../projectC -p .
echo "android.library.reference.1=../projectB" >> project.properties
# or even also projectA:
echo "android.library.reference.2=../projectA" >> project.properties
ant clean debug
这一次由于从 lib-projects 中重复添加类而导致 dexing 错误。
有人对解决此问题有任何想法吗?提前感谢您的帮助!
【问题讨论】:
标签: android unit-testing ant build-automation android-library