2013-03-06 3 views
7

Я хотел бы иметь возможность создавать и устанавливать несколько версий моего приложения (одновременно), ориентируясь на различные среды, такие как разработка, постановка и, конечно же, Production.Различные сборки Android для разных сред

Название пакета в AndroidManifest.xml, по-видимому, является основным препятствием здесь, поскольку оно уникально идентифицирует приложение. Я думал, что можно будет просто переключаться между com.mydomain.prod, com.mydomain.staging и com.mydomain.dev или какой-то аналогичной конвенцией, но до сих пор мне не повезло с конструкцией пакетов, которая работает для этого подхода.

Какую стратегию я могу использовать, чтобы сделать это с минимальной болью?

+0

Поле пакета в AndroidManif est.xml - это уникальный идентификатор, используемый Google Play, и не должен быть таким же, как ваша структура исходного пакета java. – yorkw

+0

Это не может быть правдой, не так ли? Если я его изменю, папка gen изменится, и я получу тонну ошибок «R не могут быть решены с переменной». Есть ли способ избежать этого? –

+0

Документы: имя пакета служит уникальным идентификатором приложения. Это также имя по умолчанию для прикладного процесса (см. Атрибут процесса процесса ) и аффинность задачи по умолчанию для активности (см. Атрибут taskAffinity элемента ). –

ответ

0

Я предлагаю вам использовать инструмент 'ant' build, специально предназначенный для задачи 'regexp', который может использоваться для замены текста в определенных файлах (т.е. заменить имя пакета приложения в файле манифеста в соответствии с правильной целью сборки) , Вы также можете определить файл свойств differnet для каждого целевого объекта сборки (например, «build_development.properties», чтобы сохранить все параметры, необходимые для создания вашего продукта для разработки env.) ... надеюсь, что это полезно ..

4

С помощью Gradle вы можете указать различные «ароматы» вашего приложения. Это делается в вашем build.gradle:

android { 
    // … 

    defaultConfig { 
     // … 
    } 

    productFlavors { 
     prod 
      applicationId "com.mydomain.prod" 
     } 

     staging { 
      applicationId "com.mydomain.staging" 
     } 

     dev { 
      applicationId "com.mydomain.dev" 
      versionCode 2 
     } 
    } 
} 

Каждое свойство аромата унаследовано от defaultConfig.

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

app/ 
|-- src/ 
    |-- main/ 
    |-- prod/ 
    |-- staging/ 
    |-- dev/ 

Эти ссылки могут быть полезны:

Смежные вопросы