Проект библиотеки Android Eclipse и разрешение типа проекта библиотеки для конкретных файлов конфигурации проекта - PullRequest
1 голос
/ 29 сентября 2011

У меня есть несколько проектов для Android, которые используют один из моих библиотечных проектов. Я хочу, чтобы код библиотеки зависел от определенных классов конфигурации, которые по-разному определяются в проектах, которые зависят от него. Чтобы проекты, не относящиеся к lib, не сообщали об ошибках в обозревателе проектов Eclipse, это означает предоставление определений классов в каждом проекте с одинаковым полным путем.

Итак, структура выглядит так

Tablet_Project:

определяет com.mycompany.config.ClientPrefs.java

Phone_Project:

определяет com.mycompany.config.ClientPrefs.java

Lib_Project:

зависит от, но не определяет com.mycompany.config.ClientPrefs.java

Как только это будет сделано, проекты не показывают ошибок в обозревателе проектов Eclipse, но библиотека имеет красный «X», указывающий, что она может разрешить ссылку ClientPrefs - что я и ожидал, поскольку вы все равно не можете скомпилировать библиотеку не похоже на большое дело.

Проблема: Проект телефона компилируется и работает нормально, но проект планшета сообщает, что перед запуском необходимо исправить ошибку, даже если в проводнике рабочей области нет индикаторов «X».

Вопрос: Действительно ли такой подход к настройке допустим в этих проектах или тот факт, что телефонный проект работает просто случайно?

Редактировать Вот самый простой пример, который я могу придумать: enter image description here

ProjectA и ProjectB зависят от ProjectLib как проекта библиотеки Android. Как показано здесь, Util.java в ProjectLib не может разрешить отсутствующую ссылку в Config.java, но, похоже, это не имеет значения для A и B, так как они, кажется, решают эту проблему для ProjectLib и, таким образом, и собирают, и запускают. Кто-нибудь еще использовал этот подход к конфигурации?

Причина, по которой я спрашиваю, состоит в том, что у меня гораздо больший набор проектов, и один из них больше не будет собираться (в Eclipse), предположительно, поскольку в его lib-проекте есть ошибки. Сборка с помощью Ant из командной строки всегда работает, и это заставляет меня думать, что проект библиотеки втягивается в зависимый проект независимо от его границы Eclipse.

1 Ответ

0 голосов
/ 28 марта 2012

Раньше было возможно создать один и тот же класс Config в ProjectA и ProjectB и исключить класс Config из проекта lib.

Но теперь проект библиотеки включен как jar, и невозможноисключить класс из jar в eclipse.

Мое временное решение иметь класс config util, который возвращает правильный Config, мне нужно менять его каждый раз при сборке другого проекта.

public class Config {

    private static MyConfig config;

    public static MyConfig getConfig() {
        if (config == null) {
            config = new MyConfig();
        }
        return config;
    }
// ...
// CONSTANTS 
// ...
}
...