Я пытаюсь настроить приложение Android с зависимостью проекта библиотеки Android в Eclipse. Я настроил проект под названием AnTest и проект библиотеки под названием AnLib. Я обеспечил ссылку на AnLib в свойствах проекта AnTest. Теперь я пытаюсь обратиться к некоторому коду библиотеки (статический открытый метод) от AnTest. Eclipse бросает "com.anlib. Привет не может быть разрешен к типу".
И не то, чтобы ссылка свисает - я вижу ресурсы, правильно объединенные. Но из AnTest, единственный класс в пакете com.anlib является "R".
Что я делаю неправильно? Некоторый очень простой шаг должен отсутствовать...
Править: Я добавил AnLib к пути/Проектам сборки Java в свойствах проекта AnTest. Теперь это компилирует, но выполнение выдает исключение NoClassDefFoundError...
Внимательно просмотрев примеры проектов (TicTacToe), я заметил кое-что в classpath. Это связанная папка с исходниками библиотеки. Свойства проекта приложения, путь сборки Java, в разделе "Source" нажмите "Link source", укажите путь к библиотеке\src.
В конце концов, нет никакой магии.
EDIT: библиотеки NDK (JNI-based, native) тоже не подхватываются по умолчанию. Нужно создать связанную папку "libs" с соответствующими библиотеками в проекте библиотеки.
EDIT2: поведение нативных библиотек, похоже, зависит от версии ADT и/или Eclipse. Также активы не объединяются, но этот последний пункт действительно документирован.
EDIT3: в последних инструментах Android библиотеки больше не реализуются как связанные источники. Пожалуйста, не учитывайте этот ответ; в то время он был верен и актуален, но теперь это не так.
У меня есть эта установка, но без ресурсов в "библиотечном" проекте. Мой основной проект - это Android-проект, но «библиотечный» - это просто стандартный Java-проект. Кажется, это хорошо работает.
В путь сборки (вкладка «Проекты») для основного проекта Android я добавил проект библиотеки.
Файл .project проекта библиотеки выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DataExchange</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
</natures>
</projectDescription>
Файл .project проекта Android выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Project</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.android.ide.eclipse.adt.ApkBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
Я не помню, чтобы при настройке делал что-то особенное, кроме этого.