Подобные вещи - полный кошмар - к сожалению, система сборки Android не очень хорошо их поддерживает.
Мы делаем это, имея 99% кода нашего приложения в проекте библиотеки. Затем мы создаем один проект приложения для каждой отдельной версии приложения, каждая из которых использует эту библиотеку.
Там, где нам нужны разные версии приложения, чтобы вести себя по-разному, в настоящее время мы достигаем этого, имея разные ресурсы, которые запрашиваются во время выполнения. Однако мы находимся в процессе перехода к внедрению зависимостей через RoboGuice.
Есть элементы этого, которые работают достаточно хорошо, а другие - нет. Например, необходимо дублировать файл AndroidManifest.xml, который может быть подвержен ошибкам (например, легко добавить новое действие в один манифест и забыть сделать это в других). К сожалению, это беспорядок, но наименее плохое решение, которое мы нашли.
Лично я бы настоятельно рекомендовал не использовать ветки для достижения этого эффекта. Сначала они могут хорошо работать, но быстро превратятся в кошмар обслуживания.
Одним из преимуществ использования библиотеки является то, что мы обнаружили, что она значительно упрощает тестирование. Пример того, как это настроить, см .:
http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/