From 3aab5e36ab41a091f5273450806de5df468b150b Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Mon, 14 Dec 2015 22:31:41 +0400 Subject: [PATCH] Update AndroidBuilder to 2.0.0-alpha3. --- kobalt/src/Build.kt | 2 +- .../kobalt/plugin/android/AndroidPlugin.kt | 2 +- .../beust/kobalt/plugin/android/AppInfo.kt | 4 ++-- .../plugin/android/KobaltResourceMerger.kt | 20 +++++++++++-------- 4 files changed, 16 insertions(+), 12 deletions(-) diff --git a/kobalt/src/Build.kt b/kobalt/src/Build.kt index 71ed0ac1..eca4cd55 100644 --- a/kobalt/src/Build.kt +++ b/kobalt/src/Build.kt @@ -71,7 +71,7 @@ val kobalt = kotlinProject(wrapper) { "org.jetbrains.dokka:dokka-fatjar:0.9.3", "org.jetbrains.kotlinx:kotlinx.dom:0.0.4", - "com.android.tools.build:builder:1.5.0", + "com.android.tools.build:builder:2.0.0-alpha3", "com.beust:jcommander:1.48", "com.squareup.okhttp:okhttp:2.5.0", diff --git a/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt index ac653701..c2d9797c 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/android/AndroidPlugin.kt @@ -479,7 +479,7 @@ public class AndroidPlugin @Inject constructor(val javaCompiler: JavaCompiler, override fun tasksFor(context: KobaltContext): List = taskContributor.dynamicTasks } -class DefaultConfig(var minSdkVersion: String? = null, +class DefaultConfig(var minSdkVersion: Int? = null, val maxSdkVersion: String? = null, var targetSdkVersion: String? = null, var versionCode: Int? = null, diff --git a/src/main/kotlin/com/beust/kobalt/plugin/android/AppInfo.kt b/src/main/kotlin/com/beust/kobalt/plugin/android/AppInfo.kt index 30144a33..342f512b 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/android/AppInfo.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/android/AppInfo.kt @@ -17,8 +17,8 @@ class AppInfo(val androidManifest: File, val config: AndroidConfig) { val versionName : String get() = config.defaultConfig.versionName ?: versionCode.toString() - val minSdkVersion: String? - get() = config.defaultConfig.minSdkVersion ?: AndroidManifest.getMinSdkVersion(abstractManifest)?.toString() + val minSdkVersion: Int + get() = config.defaultConfig.minSdkVersion ?: (AndroidManifest.getMinSdkVersion(abstractManifest) as Int) val maxSdkVersion: Int? get() = config.defaultConfig.maxSdkVersion?.toInt() diff --git a/src/main/kotlin/com/beust/kobalt/plugin/android/KobaltResourceMerger.kt b/src/main/kotlin/com/beust/kobalt/plugin/android/KobaltResourceMerger.kt index a73cfc85..0fd1b15b 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/android/KobaltResourceMerger.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/android/KobaltResourceMerger.kt @@ -11,6 +11,7 @@ import com.android.builder.model.SyncIssue import com.android.builder.sdk.DefaultSdkLoader import com.android.builder.sdk.SdkLoader import com.android.ide.common.blame.Message +import com.android.ide.common.internal.ExecutorSingleton import com.android.ide.common.process.* import com.android.ide.common.res2.* import com.android.manifmerger.ManifestMerger2 @@ -92,13 +93,13 @@ class KobaltResourceMerger { // // Manifests // - processManifests(project, variant, androidBuilder, config) + val appInfo = processManifests(project, variant, androidBuilder, config) // // Resources // KobaltProcessOutputHandler().let { - processResources(project, variant, androidBuilder, aarDependencies, logger, it) + processResources(project, variant, androidBuilder, aarDependencies, logger, it, appInfo.minSdkVersion) mergeResources(project, variant, androidBuilder, aarDependencies, rDirectory, it) } } @@ -166,7 +167,9 @@ class KobaltResourceMerger { } private fun processManifests(project: Project, variant: Variant, androidBuilder: AndroidBuilder, - config: AndroidConfig) { + config: AndroidConfig): AppInfo { + val mainManifest = File("src/main/AndroidManifest.xml") + val appInfo = AppInfo(mainManifest, config) logWrap(2, " Processing manifests...", "done") { val manifestOverlays = variant.allDirectories(project).map { File("src/$it/AndroidManifest.xml") @@ -177,13 +180,11 @@ class KobaltResourceMerger { val outManifest = AndroidFiles.mergedManifest(project, variant) val outAaptSafeManifestLocation = KFiles.joinDir(project.directory, project.buildDirectory, "generatedSafeAapt") val reportFile = File(KFiles.joinDir(project.directory, project.buildDirectory, "manifest-merger-report.txt")) - val mainManifest = File("src/main/AndroidManifest.xml") - val appInfo = AppInfo(mainManifest, config) androidBuilder.mergeManifests(mainManifest, manifestOverlays, libraries, null /* package override */, appInfo.versionCode, appInfo.versionName, - appInfo.minSdkVersion, + appInfo.minSdkVersion.toString(), appInfo.targetSdkVersion, appInfo.maxSdkVersion, outManifest, @@ -193,15 +194,17 @@ class KobaltResourceMerger { emptyMap() /* placeHolders */, reportFile) } + return appInfo } private fun processResources(project: Project, variant: Variant, androidBuilder: AndroidBuilder, - aarDependencies: List, logger: ILogger, processOutputHandler: KobaltProcessOutputHandler) { + aarDependencies: List, logger: ILogger, processOutputHandler: KobaltProcessOutputHandler, + minSdk: Int) { logWrap(2, " Processing resources...", "done") { val layout = ProjectLayout() val preprocessor = NoOpResourcePreprocessor() val outputDir = AndroidFiles.mergedResources(project, variant) - val resourceMerger = ResourceMerger() + val resourceMerger = ResourceMerger(minSdk) val fullVariantDir = File(variant.toCamelcaseDir()) val srcList = listOf("main", variant.productFlavor.name, variant.buildType.name, fullVariantDir.path) .map { "src" + File.separator + it } @@ -226,6 +229,7 @@ class KobaltResourceMerger { layout.mergeBlame, preprocessor) resourceMerger.mergeData(writer, true) + ExecutorSingleton.getExecutor().shutdown() } }