Проект Android, ссылающийся на "обычный" проект java в eclipse, поскольку обновление sdk-инструментов 17
Поскольку последний Android файл sdk я больше не могу запускать приложения для Android из eclipse, потому что они не могут найти классы, которые у меня есть в других проектах eclipse, которые являются ссылками через "нормальный" путь сборки.
это определенно работало до. и в eclipse ошибок компиляции нет.
Может быть, теперь вы должны пометить эти проекты в качестве проектов библиотек андроидов, если на них ссылается проект андроида.
edit: кажется, что это причина, по которой она нарушена:
http://tools.android.com/recent/dealingwithdependenciesinandroidprojects
но мне все же нужно выяснить, как теперь я должен ссылаться на свои "нормальные" Java-проекты на проект приложения Android.
Ответы
Ответ 1
В ссылке @clamp предусмотрено следующее предложение:
Теперь контейнер будет также заполнен проектами только для Java, на которые ссылаются проекты библиотек.
Это означает, что мы можем использовать пустой проект библиотеки как проект "клей" между проектом android и обычным проектом eclipse. Просто установите его следующим образом:
android → "клей" → обычный проект
- > зависит от
Проект клей должен экспортировать обычный проект и должен быть помечен как библиотека. В проекте андроида должен быть указан только проект библиотеки.
Теперь использование обычного проекта eclipse снова работает для меня с минимальными накладными расходами проекта "Клей".
Ответ 2
Начиная с последнего обновления инструментов сборки eclipse, вы также должны указывать связанные проекты на вкладке "Заказ и экспорт" в "Путь сборки Java". Для меня эта проблема была решена. Надеюсь, что это поможет!
Ответ 3
Как уже упоминалось, Android не будет напрямую компилировать и использовать ваши файлы проектов Java. Вместо этого он принимает только предварительно скомпилированные файлы классов.
Вот мой способ обхода, который я предпочитаю, потому что мне не нужен проект "клей" только для Android-библиотек. Основная идея состоит в том, чтобы предоставить готовый JAR для Android, все еще используя исходный код библиотек во время работы в Eclipse:
- Прежде всего убедитесь, что проекты библиотеки скомпилированы с использованием Java 6. Java 7 не будет работать, Android будет молча игнорировать эти библиотеки. Поэтому проверьте как настройки рабочего пространства (в
Preferences
→ Java
→ Compiler
), так и отдельные параметры проекта. Выберите 1.6 в качестве уровня соответствия компилятора.
- Щелкните правой кнопкой мыши на своем Android-проекте →
Properties
→ Java Build Path
→ Projects
. Добавьте все проекты Java, которые вы хотите использовать в своем проекте Android.
- Теперь Eclipse знает классы (но еще не окончательную сборку Android), поэтому ошибки сборки разрешаются, и переход в класс приводит непосредственно к исходному исходному файлу вашего Java-проекта.
- Добавьте ant buildscript в каталог вашего Android-проекта. Этот buildscript создаст JAR, содержащий все .class файлы ваших проектов, в подкаталог
libs
(и это шаг, который позволяет Android узнать ваши файлы .class!). Ниже приведен код.
- Теперь, и всегда, когда проекты Java изменились, перестройте JAR файл, выполнив buildscript. Это также может быть автоматизировано, например, "Хотите, чтобы проект java проекта eclipse запускал файлы сборки ant
Вот код:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project default="create_jar" name="Create Jar with classes from Java projects">
<target name="create_jar">
<jar destfile="libs/java-projects.jar">
<!-- "bin" is the class output folder -->
<fileset dir="path/to/first/java/project/bin"/>
<fileset dir="path/to/second/java/project/bin"/>
<fileset dir="path/to/last/java/project/bin"/>
</jar>
</target>
Ответ 4
Я добавил конструктор проекта ant, который копирует файлы классов из зависимого проекта. Файл ant находится в проекте android и копирует файлы классов из указанного проекта. Здесь ant:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonsCopy" default="copy" basedir=".">
<target name="copy">
<copy todir="bin/classes">
<fileset dir="../Commons/bin" includes="**/*.class">
</fileset>
</copy>
</target>
</project>
2 вещи для запоминания:
- Найдите способ копирования файлов jar, которые использует проект java, на который ссылается, или просто поместите их прямо в папку с файлами Android.
- Связанный проект должен быть скомпилирован с уровнем соответствия 1.6.
Ответ 5
Вы можете определить два проекта (один Android, один ванильный Java) и обратиться к другим исходным файлам проекта, используя команду mklink в Windows, чтобы создать соединение с каталогом или жесткую ссылку файла. Я не знаю эквивалента Linux, но должен быть один. Если вы редактируете исходный файл из одного проекта, другой проект будет не синхронизирован, и вам просто нужно его обновить. Таким образом, вам не нужно возиться с банками или процессом сборки Eclipse.