在味道中启用proguard

时间:2016-03-11 10:44:39

标签: android gradle android-gradle teamcity hockeyapp

我正在使用TeamCity构建应用程序版本并将其上传到HockeyApp。我想仅针对特定风格启用proguard,当构建在teamcity上并在HockeyApp上传时,是否可能?现在我在gradle文件中定义了变量:

def runProguard = false

并将我的风格设置为false或true,然后在构建类型中设置:

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

但它不适用于teamcity,我在HockeyApp上没有proguard的版本。怎么解决?这是另一种方法吗,例如使用启用的proguard定义gradle任务?

1 个答案:

答案 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中设置一些环境变量,并检查构建是在ci上还是在本地计算机上进行:

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