1
+ package org.jetbrains.kotlin.gradle.plugin
2
+
3
+ import com.android.build.gradle.*
4
+ import com.android.build.gradle.api.BaseVariant
5
+ import com.android.build.gradle.api.SourceKind
6
+ import com.android.build.gradle.api.TestVariant
7
+ import com.android.build.gradle.api.UnitTestVariant
8
+ import com.android.builder.model.SourceProvider
9
+ import org.gradle.api.Project
10
+ import org.gradle.api.tasks.compile.AbstractCompile
11
+ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
12
+ import java.io.File
13
+
14
+ @Suppress(" unused" )
15
+ class Android25ProjectHandler (kotlinConfigurationTools : KotlinConfigurationTools )
16
+ : AbstractAndroidProjectHandler <BaseVariant >(kotlinConfigurationTools) {
17
+
18
+ override fun forEachVariant (project : Project , action : (BaseVariant ) -> Unit ) {
19
+ project.plugins.all { plugin ->
20
+ val androidExtension = project.extensions.getByName(" android" )
21
+ var testedExtension: TestedExtension ? = null
22
+ when (plugin.javaClass) {
23
+ AppPlugin ::class .java -> {
24
+ (androidExtension as AppExtension ).applicationVariants.all(action)
25
+ testedExtension = androidExtension
26
+ }
27
+ LibraryPlugin ::class .java -> {
28
+ (androidExtension as LibraryExtension ).libraryVariants.all(action)
29
+ testedExtension = androidExtension
30
+ }
31
+ TestPlugin ::class .java -> {
32
+ (androidExtension as TestExtension ).applicationVariants.all(action)
33
+ }
34
+ }
35
+ testedExtension?.apply {
36
+ testVariants.all(action)
37
+ unitTestVariants.all(action)
38
+ }
39
+ }
40
+ }
41
+
42
+ override fun getSourceProviders (variantData : BaseVariant ): Iterable <SourceProvider > =
43
+ variantData.sourceSets
44
+
45
+ override fun getAllJavaSources (variantData : BaseVariant ): Iterable <File > =
46
+ variantData.getSourceFolders(SourceKind .JAVA ).map { it.dir }
47
+
48
+ override fun getVariantName (variant : BaseVariant ): String = variant.name
49
+
50
+ override fun checkVariant (variant : BaseVariant ) = Unit
51
+
52
+ override fun getTestedVariantData (variantData : BaseVariant ): BaseVariant ? = when (variantData) {
53
+ is TestVariant -> variantData.testedVariant
54
+ is UnitTestVariant -> variantData.testedVariant as ? BaseVariant
55
+ else -> null
56
+ }
57
+
58
+ override fun getJavaTask (variantData : BaseVariant ): AbstractCompile ? =
59
+ @Suppress(" DEPRECATION" ) // There is always a Java compile task -- the deprecation was for Jack
60
+ variantData.javaCompile
61
+
62
+ override fun addJavaSourceDirectoryToVariantModel (variantData : BaseVariant , javaSourceDirectory : File ) =
63
+ variantData.addJavaSourceFoldersToModel(javaSourceDirectory)
64
+
65
+ override fun configureMultiProjectIc (project : Project ,
66
+ variantData : BaseVariant ,
67
+ javaTask : AbstractCompile ,
68
+ kotlinTask : KotlinCompile ,
69
+ kotlinAfterJavaTask : KotlinCompile ? ) {
70
+ // todo: No easy solution because of the absence of the output information in library modules
71
+ // Though it is affordable not to implement this for the first previews, because the impact is tolerable
72
+ // to some degree -- the dependent projects will rebuild non-incrementally when a library project changes
73
+ }
74
+ }
0 commit comments