Skip to content

Instantly share code, notes, and snippets.

@SmartDengg
Forked from almozavr/app_build.gradle
Created September 6, 2016 06:32
Show Gist options
  • Save SmartDengg/0e2a064cbcedc321ee2aee2e15f6f07e to your computer and use it in GitHub Desktop.
Save SmartDengg/0e2a064cbcedc321ee2aee2e15f6f07e to your computer and use it in GitHub Desktop.
Workaround to bypass library's BuildConfig.DEBUG (always true, always release build type) via custom variable
// Application
apply plugin: 'android'
repositories {
mavenCentral()
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 1
versionName "1.0 alpha"
rootProject.ext.variantRelease = false //default we are in debug mode, will be overriden on task execution
}
buildTypes {
release {
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
debug {
versionNameSuffix ' dev'
}
}
}
dependencies {
// ui
compile 'com.android.support:support-v4:+'
// local jars
compile fileTree(dir: 'libs', include: ['*.jar'])
}
// Trigger build type (as soon as possible) and make some action via corresponding tasks
project.afterEvaluate {
tasks.all { task ->
if (task.name =~ /check.*Manifest/) {
if (task.name =~ /[dD]ebug/) {
task.dependsOn(onDebugTypeTriggered)
} else {
task.dependsOn(onReleaseTypeTriggered)
}
}
}
}
task onDebugTypeTriggered << {
rootProject.ext.variantRelease = false
}
task onReleaseTypeTriggered << {
rootProject.ext.variantRelease = true
}
// Library
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
}
}
// Trigger BuildConfig creation
project.afterEvaluate {
tasks.all { task ->
if (task.name =~ /generate.*BuildConfig/) {
task.dependsOn(propagateBuildConfig)
}
}
}
task propagateBuildConfig << {
project.android.buildTypes.all { type ->
type.buildConfigField "boolean", "RELEASE", isVariantRelease().toString()
}
}
def isVariantRelease() {
return rootProject.ext.variantRelease
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment