From 9b011abf7a3dbfd9d8b5d853ad560f949cd29037 Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Thu, 10 Dec 2015 03:09:33 +0300 Subject: [PATCH] applicationId fixes and support for androidIdSuffix. --- src/main/kotlin/com/beust/kobalt/Variant.kt | 21 +++++++++++++++---- .../kotlin/com/beust/kobalt/api/Project.kt | 2 ++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/main/kotlin/com/beust/kobalt/Variant.kt b/src/main/kotlin/com/beust/kobalt/Variant.kt index fe5a5442..6c0ffff7 100644 --- a/src/main/kotlin/com/beust/kobalt/Variant.kt +++ b/src/main/kotlin/com/beust/kobalt/Variant.kt @@ -3,6 +3,7 @@ package com.beust.kobalt import com.beust.kobalt.api.* import com.beust.kobalt.misc.KFiles import com.beust.kobalt.misc.log +import com.beust.kobalt.plugin.android.AndroidConfig import com.beust.kobalt.plugin.android.AndroidPlugin import java.io.File @@ -122,23 +123,35 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, return result } + fun applicationId(androidConfig: AndroidConfig?): String? { + val mainId = productFlavor.applicationId ?: androidConfig?.applicationId + val result = + if (mainId != null) { + mainId + (buildType.applicationIdSuffix ?: "") + } else { + null + } + + return result + } + /** * Generate BuildConfig.java if requested. Also look up if any BuildConfig is defined on the current build type, * product flavor or main project, and use them to generate any additional field (in that order to * respect the priorities). Return the generated file if it was generated, null otherwise. */ fun maybeGenerateBuildConfig(project: Project, context: KobaltContext) : File? { - val buildConfigs = findBuildConfigs(project, context.variant) + val buildConfigs = findBuildConfigs(project, this) if (buildConfigs.size > 0) { val androidConfig = (Kobalt.findPlugin(AndroidPlugin.PLUGIN_NAME) as AndroidPlugin) .configurationFor(project) - val pkg = androidConfig?.applicationId ?: project.packageName ?: project.group + val pkg = applicationId(androidConfig) ?: project.packageName ?: project.group ?: throw KobaltException( "packageName needs to be defined on the project in order to generate BuildConfig") - val code = project.projectInfo.generateBuildConfig(project, context, pkg, context.variant, buildConfigs) - val result = KFiles.makeDir(KFiles.generatedSourceDir(project, context.variant, "buildConfig")) + val code = project.projectInfo.generateBuildConfig(project, context, pkg, this, buildConfigs) + val result = KFiles.makeDir(KFiles.generatedSourceDir(project, this, "buildConfig")) // Make sure the generatedSourceDirectory doesn't contain the project.directory since // that directory will be added when trying to find recursively all the sources in it generatedSourceDirectory = File(result.relativeTo(File(project.directory))) diff --git a/src/main/kotlin/com/beust/kobalt/api/Project.kt b/src/main/kotlin/com/beust/kobalt/api/Project.kt index 1cf16a00..43996ed3 100644 --- a/src/main/kotlin/com/beust/kobalt/api/Project.kt +++ b/src/main/kotlin/com/beust/kobalt/api/Project.kt @@ -181,6 +181,7 @@ interface IBuildConfig { } class ProductFlavorConfig(val name: String) : IBuildConfig { + var applicationId: String? = null override var buildConfig : BuildConfig? = BuildConfig() } @@ -192,6 +193,7 @@ fun Project.productFlavor(name: String, init: ProductFlavorConfig.() -> Unit) = class BuildTypeConfig(val project: Project?, val name: String) : IBuildConfig { var minifyEnabled = false + var applicationIdSuffix: String? = null var proguardFile: String? = null fun getDefaultProguardFile(name: String) : String {