2015-02-24 2 views
0

Мы разрабатываем некоторые модули и используем один и тот же класс соединителя. Mow мы используем при статических данных. вызовы на сервер различаются между приложением и между разработкой/производством.Получить данные от градиента во время выполнения

У меня есть несколько вопросов:

  1. есть можно получить данные из Gradle во время выполнения?

  2. Возможно ли сгенерировать/установить данные с переменной в моих классах, когда град строит модуль (используя типы сборки) и gradle.properties?

ответ

0

Я думаю, что productFlavors это именно то, что вы хотите:

Чтобы использовать их, вы должны добавить к вам build.gradle в модуле код ниже:

android{ 
    ... 
    productFlavors { 
     test1 { 
      applicationId "your.package.application.test1" 
     } 
     test2 { 

     } 
    } 
    ... 
} 

После то вам нужно создать папку в папке src с тем же именем, что и варианты сборки: например, для test1 вам необходимо создать папку test1.

В следующем шаге вы должны добавить res папку для test1 папку и, например, добавить values/strings.xml

Для проверки вы можете добавить:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_name">Your app 2</string> 
</resources> 

Теперь, когда вы выбираете test1 сборки вариант вашего приложение будет иметь имя «Ваше приложение 2»

Для изменения вариантов сборки вам необходимо использовать задачи или вы можете установить его на вид ниже:

enter image description here

+0

в случае, если он хочет только материал, который отличается от dev/debug и release, создает вкусы продукта, являются излишними. – Dodge

+0

Насколько я знаю, вы можете настроить 'buildConfigField' также в productFlavors. Для меня productFlavors дает больше возможностей. Вот почему я предлагаю это. :) –

+0

уверен, что вы можете. но цель продукта состоит в том, чтобы предоставить различные версии приложения, например. бесплатно против платного или playstore против amazon, а не разработки против выпуска. в то время как мое предложение ('buildConfigField' в' buildTypes' имеет больше смысла в этом конкретном случае) – Dodge

4

вы также можете использовать buildConfigField в вашем build.gradle

buildTypes { 
    release { 
     // ... 

     buildConfigField "boolean", "CHROMECAST", "false" 
     buildConfigField "boolean", "NOTIFICATION_COVER", "false" 
     buildConfigField "String", "API_URL", "\"https://your/production/url/\"" 
    } 
    debug { 
     // ... 

     buildConfigField "boolean", "CHROMECAST", "false" 
     buildConfigField "boolean", "NOTIFICATION_COVER", "true" 
     buildConfigField "String", "API_URL", "\"https://your/development/url\"" 
    } 
} 

в код приложения вы можете получить доступ к этим переменным с помощью, например, BuildConfig.CHROMECAST или BuildConfig.API_URL

Для ресурсов вы можете создать определенные ресурсы для своей отладочной сборки в src/debug/res, например. значок специального приложения или переопределить имя приложения.

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