Подтвердить что ты не робот

Проект Android, ссылающийся на "обычный" проект java в eclipse, поскольку обновление sdk-инструментов 17

Поскольку последний Android файл sdk я больше не могу запускать приложения для Android из eclipse, потому что они не могут найти классы, которые у меня есть в других проектах eclipse, которые являются ссылками через "нормальный" путь сборки.

это определенно работало до. и в eclipse ошибок компиляции нет.

Может быть, теперь вы должны пометить эти проекты в качестве проектов библиотек андроидов, если на них ссылается проект андроида.

edit: кажется, что это причина, по которой она нарушена: http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

но мне все же нужно выяснить, как теперь я должен ссылаться на свои "нормальные" Java-проекты на проект приложения Android.

4b9b3361

Ответ 1

В ссылке @clamp предусмотрено следующее предложение:

Теперь контейнер будет также заполнен проектами только для Java, на которые ссылаются проекты библиотек.

Это означает, что мы можем использовать пустой проект библиотеки как проект "клей" между проектом android и обычным проектом eclipse. Просто установите его следующим образом:

android → "клей" → обычный проект

- > зависит от

Проект клей должен экспортировать обычный проект и должен быть помечен как библиотека. В проекте андроида должен быть указан только проект библиотеки.

Теперь использование обычного проекта eclipse снова работает для меня с минимальными накладными расходами проекта "Клей".

Ответ 2

Начиная с последнего обновления инструментов сборки eclipse, вы также должны указывать связанные проекты на вкладке "Заказ и экспорт" в "Путь сборки Java". Для меня эта проблема была решена. Надеюсь, что это поможет!

Ответ 3

Как уже упоминалось, Android не будет напрямую компилировать и использовать ваши файлы проектов Java. Вместо этого он принимает только предварительно скомпилированные файлы классов.

Вот мой способ обхода, который я предпочитаю, потому что мне не нужен проект "клей" только для Android-библиотек. Основная идея состоит в том, чтобы предоставить готовый JAR для Android, все еще используя исходный код библиотек во время работы в Eclipse:

  • Прежде всего убедитесь, что проекты библиотеки скомпилированы с использованием Java 6. Java 7 не будет работать, Android будет молча игнорировать эти библиотеки. Поэтому проверьте как настройки рабочего пространства (в PreferencesJavaCompiler), так и отдельные параметры проекта. Выберите 1.6 в качестве уровня соответствия компилятора.
  • Щелкните правой кнопкой мыши на своем Android-проекте → PropertiesJava Build PathProjects. Добавьте все проекты 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.