Android Extensions: Initial IC support (KT-14125)

This commit is contained in:
Yan Zhulanow
2017-09-28 21:35:37 +03:00
parent 1b5b9f1fbb
commit fed5bddde2
2 changed files with 19 additions and 2 deletions
@@ -176,6 +176,10 @@ class IncrementalJvmCompilerRunner(
is ChangesEither.Unknown -> return CompilationMode.Rebuild { "Could not get changes for java files" } is ChangesEither.Unknown -> return CompilationMode.Rebuild { "Could not get changes for java files" }
} }
if ((changedFiles.modified + changedFiles.removed).any { it.extension.toLowerCase() == "xml" }) {
return CompilationMode.Rebuild { "XML resource files were changed" }
}
markDirtyBy(affectedJavaSymbols) markDirtyBy(affectedJavaSymbols)
markDirtyBy(classpathChanges.lookupSymbols) markDirtyBy(classpathChanges.lookupSymbols)
markDirtyBy(classpathChanges.fqNames) markDirtyBy(classpathChanges.fqNames)
@@ -99,7 +99,7 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
val androidExtensionsExtension = project.extensions.getByType(AndroidExtensionsExtension::class.java) val androidExtensionsExtension = project.extensions.getByType(AndroidExtensionsExtension::class.java)
if (androidExtensionsExtension.isExperimental) { if (androidExtensionsExtension.isExperimental) {
return applyExperimental(androidExtension, androidExtensionsExtension, return applyExperimental(kotlinCompile, androidExtension, androidExtensionsExtension,
project, variantData, androidProjectHandler) project, variantData, androidProjectHandler)
} }
@@ -119,6 +119,7 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
fun addVariant(sourceSet: AndroidSourceSet) { fun addVariant(sourceSet: AndroidSourceSet) {
pluginOptions += SubpluginOption("variant", sourceSet.name + ';' + pluginOptions += SubpluginOption("variant", sourceSet.name + ';' +
sourceSet.res.srcDirs.joinToString(";") { it.absolutePath }) sourceSet.res.srcDirs.joinToString(";") { it.absolutePath })
kotlinCompile.source(project.files(getLayoutDirectories(sourceSet.res.srcDirs)))
} }
addVariant(mainSourceSet) addVariant(mainSourceSet)
@@ -131,7 +132,16 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
return pluginOptions return pluginOptions
} }
private fun getLayoutDirectories(resDirectories: Collection<File>): List<File> {
fun isLayoutDirectory(file: File) = file.name == "layout" || file.name.startsWith("layout-")
return resDirectories.flatMap { resDir ->
(resDir.listFiles(::isLayoutDirectory)).asList()
}
}
private fun applyExperimental( private fun applyExperimental(
kotlinCompile: KotlinCompile,
androidExtension: BaseExtension, androidExtension: BaseExtension,
androidExtensionsExtension: AndroidExtensionsExtension, androidExtensionsExtension: AndroidExtensionsExtension,
project: Project, project: Project,
@@ -144,7 +154,8 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
val pluginOptions = arrayListOf<SubpluginOption>() val pluginOptions = arrayListOf<SubpluginOption>()
pluginOptions += SubpluginOption("experimental", "true") pluginOptions += SubpluginOption("experimental", "true")
pluginOptions += SubpluginOption("defaultCacheImplementation", androidExtensionsExtension.defaultCacheImplementation.optionName) pluginOptions += SubpluginOption("defaultCacheImplementation",
androidExtensionsExtension.defaultCacheImplementation.optionName)
val mainSourceSet = androidExtension.sourceSets.getByName("main") val mainSourceSet = androidExtension.sourceSets.getByName("main")
pluginOptions += SubpluginOption("package", getApplicationPackage(project, mainSourceSet)) pluginOptions += SubpluginOption("package", getApplicationPackage(project, mainSourceSet))
@@ -155,6 +166,8 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
append(';') append(';')
resDirectories.joinTo(this, separator = ";") { it.canonicalPath } resDirectories.joinTo(this, separator = ";") { it.canonicalPath }
}) })
kotlinCompile.source(project.files(getLayoutDirectories(resDirectories)))
} }
fun addSourceSetAsVariant(name: String) { fun addSourceSetAsVariant(name: String) {