2015-11-29 5 views
2
android { 
    final String analyticsJSON = "lite" 
    compileSdkVersion 23 
    buildToolsVersion "23.0.2" 

    defaultConfig { 
     applicationId "com.ralok.apps" 
     minSdkVersion 10 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 

    productFlavors { 
     findlostandroidphone { 
      versionCode 1 
      versionName 'v1.0' 
      applicationId 'com.ralok.apps.findlostandroidphone' 
     } 
     findlostandroidphonepro { 
      versionCode 1 
      versionName 'v1.0' 
      applicationId 'com.ralok.apps.findlostandroidphonepro' 
     } 
     if (analyticsJSON.equals("lite")) { 
      println "--> FLPLite JSON copied!" 
      copy { 
       from 'src/findlostandroidphone/' 
       include 'google-services.json' 
       into '.' 
      } 
     } else { 
      println "--> FLPPro JSON copied!" 
      copy { 
       from 'src/findlostandroidphonepro/' 
       include 'google-services.json' 
       into '.' 
      } 
     } 
    } 

    signingConfigs { 
     lite_release { 
      keyAlias 'ASDFGHJKL' 
      keyPassword 'ASDFGHJKL' 
      storeFile file('ASDFGHJKL.jks') 
      storePassword 'ASDFGHJKL' 
     } 
     pro_release { 
      keyAlias 'POIUYTREWQ' 
      keyPassword 'POIUYTREWQ' 
      storeFile file('POIUYTREWQ.jks') 
      storePassword 'POIUYTREWQ' 
     } 
    } 

    buildTypes { 
     debug { 
      minifyEnabled false 
      debuggable true 
     } 
     release { 
      minifyEnabled true 
      shrinkResources true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

Каждый раз, когда я должен вручную изменить окончательную Строку analyticsJSON = «облегченными/про», так что если копии цикла правильного файл в формате JSON корневой каталог. В любом случае я могу автоматизировать это и всегда иметь правильный productFlavour в analyticsJSON String вместо меня, изменяя значение вручную каждый раз, когда я переключаюсь между productFlavors. Мой грубоват плохой, и я попытался, но не смог этого добиться.Различать между productFlavors в Android app.gradle файла во время процесса сборки

+1

Помогает ли http://stackoverflow.com/questions/17697154/gradle-android-plugin-add-custom-flavor-attribute help? –

ответ

0

Наконец решение для обработки различных вкусов реализована в версии com.google.gms: Google-сервисы: 2.0.0-alpha3

https://developers.google.com/android/guides/google-services-plugin#adding_the_json_file https://github.com/googlesamples/google-services/issues/54

Другим альтернативным решением является на

How do i keep different configurations for my android app with GCM 3.0

1

Вам не нужно различать систему сборки, она сделает это за вас. Просто поместите файлы в правильный путь для каждого аромата сборки. Например.

Для findlostandroidphone введите google-services.json в следующее место.

src/findlostandroidphone/google-services.json сборка файла будет автоматически скопирована в конечном месте для этого продукта. То же самое для версии pro.

То, что вы сейчас имеете, будет выполнено на этапе конфигурации. который, вероятно, работает ... для одного типа сборки. Если вы хотите создать оба типа одновременно, переместите файлы и полностью удалите final String analyticsJSON = "lite". Затем во время этапа выполнения град скопирует файл и выполнит сборку с правильным файлом для этого productFlavor.

+0

Без условной проверки последний, похоже, переопределяет прежний скопированный файл в корневой папке проекта. Я имею в виду, что первый findlostandroidphone-флейвор копирует файл JSON в корневую папку, а затем файл перезаписывается файлом JSON от findlostandroidphonepro в корне. Если я беру сборку findlostandroidphone, то я все равно получаю файл findlostandroidphonepro JSON. Мне нужно как-то условно проверить. Не знаю, какая переменная будет иметь эту информацию для меня, чтобы проверить ее. – LokiDroid

+0

Если я помещаю соответствующие файлы JSON в разные варианты, он копирует файл JSON в сборку, но мне нужно это в корневой папке пакета. Вот почему у меня есть приведенный ниже код copy { от 'src/findlostandroidphonepro /' Включает 'google-services.json' в '.' } – LokiDroid