4

Я обновил приложение Android Studio 2.2, которое по умолчанию использует Gradle Plugin v2.2.0 и намного лучше подходит для отладки. Для целей размножения я все равно должен использовать v2.1.3. Я думал о добавлении условной команды в сценарий проекта gradle, но я не уверен, как это сделать. Следующий тест работаетGradle - Добавить условный путь к классам в зависимостях buildscript

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (project.name.startsWith("X")) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
    } 
} 

Но мне нужно, чтобы это было что-то вроде

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (IS_RELEASE_VERSION) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
    } 
} 

, и я не могу понять, как это сделать. Заранее спасибо

+0

Ничего не приходит в голову, что сделало бы это возможным. Реальная проблема здесь: зачем вам использовать более старую версию для релизов? –

+0

Мы используем дополнительный плагин для наших выпусков, и он совместим только с 2.1.3 – lionscribe

+0

. Тогда вам, вероятно, придется придерживаться старой версии. Вы не можете использовать другую версию для отладки и выпуска сборок. Если бы это было о чем-то еще в вашем build.gradle - как в версии библиотеки или какой-то настройке - тогда это не проблема. Но зависимости buildscript - это буквально зависимости для самого скрипта сборки. Концепция сборки отладки и выпуска - это то, что определено сценарием сборки, и его нельзя оценить до загрузки зависимостей buildscript. –

ответ

4

Ну, я считаю, что решил, и это очень просто. Вам необходимо проверить имущество gradle.startParameter.taskNames. Вот как я его закодировал:

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     if (gradle.startParameter.taskNames.size() > 0 && gradle.startParameter.taskNames.get(0).contains("Release")) 
     { 
      classpath 'com.android.tools.build:gradle:2.1.3' 
     } 
     else 
     { 
      classpath 'com.android.tools.build:gradle:2.2.0' 
     } 
     classpath 'com.google.gms:google-services:3.0.0' 
    } 
} 

Пока это работает нормально. Если вы предпочитаете, вы можете изменить значение «Release», вариант аромата (если вы используете ароматизаторы).

+0

THX человек, очень полезно! – vlasevich

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