2016-03-11 1 views
3

Я использую TeamCity для создания версии приложения и загрузки его в HockeyApp. Я хочу включить proguard только по определенному вкусу, и когда вы строите на teamcity и загружаете на HockeyApp, возможно ли это? Сейчас я определил переменную в Gradle файле:Включить proguard во вкусе

def runProguard = false 

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

if (project.hasProperty('teamcity') && runProguard.toBoolean()) { 
    minifyEnabled true 
    } else { 
    minifyEnabled false 
} 

, но он не работает на TeamCity и У меня есть версия без proguard на HockeyApp. Как это исправить? Это другой способ сделать это, например, задание градиента с включенной проградой?

+0

Запускаете ли вы сборку отладки или выпуска, и у вас есть второй фрагмент в 'buildTypes {...}' закрытии или внутри одного из 'debug {...}' или 'release {...}'? Насколько я знаю, вы можете просто вызвать 'minifyEnabled' непосредственно в виде сборки. –

+0

да, этот оператор if находится в debug buildType – falsetto

+0

вы можете отбросить полный файл градимента, чтобы он лучше понимал –

ответ

4

Вы должны сделать что-то вроде этого, чтобы достичь того, чего вы хотите:

android { 

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

productFlavors { 
    pro { 
     applicationId = 'com.example.app.pro' 
    } 

    free { 
     applicationId = 'com.example.app.free' 
    } 
} 

Также вы можете установить некоторые переменные окружения в TeamCity и проверить, если сборка происходит на КЕ или это на локальной машине:

if (!System.getenv("CI")) { 
    //do something on local machine 
} else { 
    // do something on ci server 
}