Вкратце, моя структура проекта выглядит следующим образом:
- A и B - это lib-проекты Android, где B зависит от A
- C (обычный проект Android) зависит от B
- T - тест-проект C
У меня соответственно два проекта на моем сервере jenkins, один для C и один для T , у которых есть свой собственный скрипт для сборки, использующий фактически толькокоманды android и ant.Так что нет никаких проблем со сборкой C , но я не могу получить рабочую сборку T .
«Работа» должна означать, что, в зависимости отв сценарии он либо не компилируется, либо завершается с ошибкой во время выполнения из-за некоторых отсутствующих классов, которых на самом деле не может быть, или не проходит этап дексирования из-за добавления дубликатов.
Так что все ясно, что с зависимостями что-то не так, но интересно то, что он очень хорошо работает на локальной машине с eclipse & on emulator.
Итак, вот пример кода shell-script, который на самом деле должен работать и создавать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-проектов.
У кого-нибудь есть идеи по поводу исправления этого?Заранее спасибо за помощь!