Как создать несколько приложений Android из одной базы кода - PullRequest
20 голосов
/ 15 ноября 2010

У меня есть база кода Android, которая использует API с настройками для получения разных данных для нескольких приложений. Все приложения используют одну и ту же кодовую базу, но с одним или двумя настройками дизайна. Так как же мне повторно использовать основную базу кода без необходимости каждый раз копировать весь проект Android?

iPhone использует несколько целей в одном проекте, что хорошо работает. Если Android не может сделать это, мне нужно скомпилировать двоичные файлы базы кода в одном проекте, а затем импортировать в каждый новый проект приложения? Если так, то как? Я использую Eclipse и являюсь промежуточным Java-разработчиком.

Любая помощь высоко ценится!

Doug

Ответы [ 5 ]

14 голосов
/ 15 ноября 2010

Ознакомьтесь с разделом «Работа с проектами библиотек» в документации по Android.Это должно быть именно то, что вы ищете: http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

10 голосов
/ 26 ноября 2013

Текущий способ решения этой проблемы, если вы используете Android Studio с Gradle, - это использование Gradle, Тип сборки + Вкус продукта

http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants

Варианты сборки

Одна из целей новой системы сборки - дать возможность создавать разные версии одного и того же приложения.

Существует два основных варианта использования:

Различные версии одного и того же приложения Например, бесплатная / демо-версия против «про» платного приложения.

Одно и то же приложение упаковано по-разному для multi-apk в Google Play Store.

Эта новая концепция призвана помочь, когда различия очень минимальны. Если ответ «Это одно и то же приложение?» - «да», то, вероятно, это тот способ, с помощью которого можно просмотреть библиотечные проекты.

4 голосов
/ 01 июля 2011

Примечание : Этот ответ в основном устарел, поскольку теперь можно создавать библиотеки .aar с ресурсами. Это все еще работает, хотя, и могут быть времена, когда переносимость .jar желательна, поэтому я оставляю это здесь.

Хороший ответ Блюмера, и вам непременно стоит взглянуть на идею Android о библиотечных проектах. Однако есть и другая альтернатива. Если у вас есть модуль, который содержит только код Java, но не содержит никаких ресурсов (изображения, макеты и т. Д.), Вы можете отдельно скомпилировать его в файл .jar и использовать полученный файл .jar в нескольких проектах приложений. Это работает так:

  • Создайте новый проект Java в Eclipse (не проект Android) и переместите туда исходный код вашего модуля.
  • Если ваш модуль ссылается на какие-либо классы из SDK, вам нужно добавить Android SDK .jar в путь к классам проекта («Проект»> «Свойства»> «Путь сборки Java»> «Библиотеки»> «Добавить JAR»).
  • Когда ваш модуль будет готов к использованию, объедините его .class файлы в .jar. Вы можете сделать это вручную или осмотреться, чтобы выяснить, как заставить Eclipse сделать это за вас.
  • Скопируйте файл .jar вашего модуля в каталог "libs" основного проекта вашего приложения.
  • Добавьте модуль .jar в путь к классам проекта (снова «Проект»> «Свойства»> «Путь сборки Java»> «Библиотеки»> «Добавить JAR»).

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

В зависимости от вашей конкретной ситуации, это может работать или не работать для вас лучше, чем стандартный механизм библиотеки Android. Но стоит рассмотреть в качестве альтернативы.

1 голос
/ 27 января 2013

Документация Android рекомендует другой подход, если не слишком много «разных API».

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

Ссылки

0 голосов
/ 15 ноября 2010

Возможно, вы захотите использовать систему контроля версий, такую ​​как Subversion (или GIT). Храните наиболее полнофункциональную версию в стволе и делайте ветки для отдельных версий, которые используют разные источники данных или требуют незначительных изменений макета и т. Д.

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