Библиотека Android: ресурсы объединяются, код не

Я пытаюсь настроить приложение Android с зависимостью проекта библиотеки Android в Eclipse. Я настроил проект под названием AnTest и проект библиотеки под названием AnLib. Я обеспечил ссылку на AnLib в свойствах проекта AnTest. Теперь я пытаюсь обратиться к некоторому коду библиотеки (статический открытый метод) от AnTest. Eclipse бросает "com.anlib. Привет не может быть разрешен к типу".

И не то, чтобы ссылка свисает - я вижу ресурсы, правильно объединенные. Но из AnTest, единственный класс в пакете com.anlib является "R".

Что я делаю неправильно? Некоторый очень простой шаг должен отсутствовать...

Править: Я добавил AnLib к пути/Проектам сборки Java в свойствах проекта AnTest. Теперь это компилирует, но выполнение выдает исключение NoClassDefFoundError...

5
задан Seva Alekseyev 18 June 2010 в 21:45
поделиться

2 ответа

Внимательно просмотрев примеры проектов (TicTacToe), я заметил кое-что в classpath. Это связанная папка с исходниками библиотеки. Свойства проекта приложения, путь сборки Java, в разделе "Source" нажмите "Link source", укажите путь к библиотеке\src.

В конце концов, нет никакой магии.

EDIT: библиотеки NDK (JNI-based, native) тоже не подхватываются по умолчанию. Нужно создать связанную папку "libs" с соответствующими библиотеками в проекте библиотеки.

EDIT2: поведение нативных библиотек, похоже, зависит от версии ADT и/или Eclipse. Также активы не объединяются, но этот последний пункт действительно документирован.

EDIT3: в последних инструментах Android библиотеки больше не реализуются как связанные источники. Пожалуйста, не учитывайте этот ответ; в то время он был верен и актуален, но теперь это не так.

5
ответ дан 14 December 2019 в 18:58
поделиться

У меня есть эта установка, но без ресурсов в "библиотечном" проекте. Мой основной проект - это 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>

Я не помню, чтобы при настройке делал что-то особенное, кроме этого.

0
ответ дан 14 December 2019 в 18:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: