6

我正在使用 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 任务?

4

1 回答 1

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
}
于 2016-03-16T11:21:01.910 回答