Обработка основного проекта и нескольких производных от него в Android - PullRequest
1 голос
/ 22 марта 2012

Я искал вокруг SO для этого и нашел несколько вещей, но я все еще не уверен, что полностью понимаю, поэтому прошу у вас разъяснений.

Вот что мне нужно:

  • Иметь проект, который имеет определенную функцию: опросить веб-сервис, отображать результаты в разных представлениях

  • Иметь второй, третий и четвертый проекты, которые имеют точнота же функциональность, что и у первого, но только различные графические элементы, такие как изображение на заставке, значок, имя, имя пакета.

Итак, у меня есть ProjectCore с действиями и функциональностью.Project1 со значком автомобиля и изображением автомобиля для заставки.Project2 с изображением самолета и изображением самолета для заставки.Что-то вроде того.У каждого проекта есть класс с константами, такими как 'appId, appName, appServerURL "... Все вызовы веб-службы и отображение данных выполняются в Core, поскольку они одинаковы для всех проектов, только чтение производится из класса Constants.

Я думал об этом подходе

  1. Сделать ProjectCore библиотечным проектом с пакетом вроде com.domain.core и фиктивными изображениями
  2. Сделать Project1, добавить в него ссылку на ProjectCore ис пакетом, подобным com.domain.code.project1 и в папке ресурсов, поместите изображения с тем же именем, что и в базовом проекте
  3. . Сделайте Project2 по тому же принципу, что и project1

Будет ли этоподход к работе?

Спасибо.

Позднее редактирование. Я пробовал, как уже упоминалось ранее. Например, в проекте Core у меня был в drawable файл с именем splash.png.В папке для рисования Project1 и Project2 я поместил файл spash.png с другими изображениями. Это работает нормально. Запустив Project1 и Project2 на моем телефоне, я запустил каждое приложение со своим собственным изображением.о, пока все хорошо.

Тогда, поскольку у меня есть разные константы, которые мне нужно использовать в моем приложении, я пошел в проект библиотеки ядра и добавил:

public class C {
    public static String SomeConstant = "Project core!";
}

Здесь возникает проблема, янеобходимо иметь разные постоянные значения в Project1 и Project2.Потому что в базовом проекте класс находится, например, в com.domain.core.utils ... Я не могу добавить один и тот же пакет в Project1 и Project2.Как добавить классы, чтобы я мог обновлять их значения и использовать их в каждом проекте с определенными значениями?

public class C {
    public static String SomeConstant = "Project 1 constant!";
}

public class C {
    public static String SomeConstant = "Project 2 constant!";
}

Спасибо!

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Да, это должно работать нормально.Я сделал что-то немного похожее, и иногда обнаруживал, что у вас могут возникнуть обстоятельства, когда вы хотите вызвать ваш библиотечный проект к вашему прикладному проекту.В этих случаях я использовал интерфейсы / абстрактные классы, определенные в проекте библиотеки, но реализованные в проекте приложения ...

1 голос
/ 23 марта 2012

Вы хотите создать свою функциональность в проекте библиотеки, а затем сделать так, чтобы все ваши проекты Branded / OEM / 3rdParty расширялись, переопределяя изображения и строковые ресурсы, где это необходимо.

Когда вам нужно использовать «константы», вместо этого вы должны иметь одну «однократную» часть кода (например, заставку), чтобы загрузить эти строки из файлов ресурсов:

public static final String CONSTANT_ONE;

    public void onCreate() { CONSTANT_ONE = getResources().getString(R.String.CONSTANT_ONE); }

EDIT

Я не уверен в том, как будет выполняться инициализация окончательного значения на onCreate(). Если final не работает должным образом, и вы беспокоитесь об изменении переменной во время выполнения программы, сделайте переменную private (чтобы ей мог назначить только этот класс), а затем создайте функцию public static String getConstantOne().

1 голос
/ 22 марта 2012

Да. Библиотечные проекты идеально подходят для этого, особенно если отличаются только ресурсы. Я использовал именно тот подход, который вы обрисовали с успехом ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...