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

Android - несколько файлов .apk из одной базы кода

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

NOw, я хочу создать единую базу кода, из которой я могу создать несколько файлов .apk для 3 приложений.

Я попытался создать 3 разных пакета для папки src для 3 приложений. Но я не знаю, как установить папку res для этих приложений.

Нужны указатели на создание единой базы кода, из которой мы можем создать несколько файлов .apk, которые содержат только соответствующие папки src и res.

4b9b3361

Ответ 1

  • Используйте Проект библиотеки Android, содержащий весь ваш общий код.
  • Создайте отдельные проекты Android, которые ссылаются на проект библиотеки (вам нужно будет скопировать манифест в каждый из них и убедиться, что все компоненты объявлены с полным именем пакета Java).
  • Поместите любые ресурсы, специфичные для каждого приложения (чертежи, цвета и т.д.) в отдельные папки ресурса проекта, и они будут переопределять аналогично названные ресурсы в проекте библиотеки во время сборки.

Ответ 2

Я думаю, что лучший вариант - использовать ant, вам нужно добавить цель ant для каждой сборки и изменить папку ресурса. если вы используете сгенерированный файл build.xml, папка res определяется так: <property name="resource.absolute.dir" location="res" />, чтобы вы могли переопределить этот

Ответ 3

Не можете ли вы поместить весь свой общий код в проект библиотеки, а затем просто ссылаться на этот проект из каждого из трех уникальных проектов, каждый из которых содержит соответствующие ресурсы.

Обновление: этот ответ теперь устарел при использовании системы сборки Gradle.

Ответ 4

Почему бы вам не использовать одно приложение, которое выполняет три разные вещи на основе значений SharedPreferences, заданных пользователем, или из контекста во время установки. Если вы действительно хотите разделиться, вы можете иметь три разных действия, и вы решаете, какой из них запускаться из тихой основной операции, которая перенаправляется на любой из них.

Альтернативой является наличие уникальной активности, которая динамически раздувается из трех разных макетов в onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (...custom check for layout... equals(layout1)) {
        setContentView(R.layout.main_layout1);
    } else if (... equals(layout2)) {
        setContentView(R.layout.main_layout2);
    } else if (... equals(layout3)) {
        setContentView(R.layout.main_layout3);
    } else {
        throw new IllegalStateException("Unknown layout!");
    }
    ... your onCreate stuff....
}

Это упростит обслуживание кода (только один источник кода для изменения, только один список версий и набор изменений для поддержки)

Проверьте здесь: Как использовать SharedPreferences в Android для хранения, извлечения и редактирования значений

Ответ 5

Я бы предложил использовать Gradle flavors.

Кажется, что все основы очень хорошо объясняются. Я только что закончил конвертировать в Gradle сегодня, и он отлично работает. Значки пользовательских приложений, имена и строки и т.д.

Как поясняется на веб-сайте, часть цели этого дизайна заключалась в том, чтобы сделать его более динамичным и более легко позволять создавать несколько APK с использованием, по сути, одного и того же кода, что похоже на то, что вы делаете.

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