Skip to content

Commit 01ecb6f

Browse files
author
Vlad Eremia
committed
AGP 4.1.0 support
1 parent 8e70c29 commit 01ecb6f

File tree

5 files changed

+29
-29
lines changed

5 files changed

+29
-29
lines changed

android-gradle-aspectj/src/main/kotlin/com/archinamon/AndroidConfig.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ internal class AndroidConfig(val project: Project, val scope: ConfigScope) {
2424

2525
val extAndroid: BaseExtension
2626
val isLibraryPlugin: Boolean
27-
val plugin: BasePlugin
27+
val plugin: BasePlugin<*, *>
2828

2929
init {
3030
when {
@@ -55,7 +55,7 @@ internal class AndroidConfig(val project: Project, val scope: ConfigScope) {
5555

5656
@Suppress("UNCHECKED_CAST")
5757
fun getBootClasspath(): List<File> {
58-
return extAndroid.bootClasspath ?: plugin::class.java.getMethod("getRuntimeJarList").invoke(plugin) as List<File>
58+
return extAndroid.bootClasspath
5959
}
6060

6161
fun aspectj(): AspectJExtension {

android-gradle-aspectj/src/main/kotlin/com/archinamon/api/transform/AspectJTransform.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.archinamon.api.transform
22

33
import com.android.build.api.transform.*
4+
import com.android.build.api.variant.impl.VariantPropertiesImpl
45
import com.android.build.gradle.internal.pipeline.TransformInvocationBuilder
56
import com.android.build.gradle.internal.pipeline.TransformManager
6-
import com.android.build.gradle.internal.pipeline.TransformTask
77
import com.android.build.gradle.internal.variant.BaseVariantData
88
import com.android.utils.FileUtils
99
import com.archinamon.AndroidConfig
@@ -52,8 +52,8 @@ internal abstract class AspectJTransform(val project: Project, private val polic
5252
return this
5353
}
5454

55-
private fun <T: BaseVariantData> setupVariant(variantData: T) {
56-
val javaTask = getJavaTask(variantData)
55+
private fun <T: BaseVariantData> setupVariant(variantData: Pair<T, VariantPropertiesImpl>) {
56+
val javaTask = getJavaTask(variantData.first)
5757
getAjSourceAndExcludeFromJavac(project, variantData)
5858
aspectJWeaver.encoding = javaTask.options.encoding
5959
aspectJWeaver.sourceCompatibility = config.aspectj().java.toString()
@@ -169,8 +169,8 @@ internal abstract class AspectJTransform(val project: Project, private val polic
169169
}
170170
}
171171

172-
val classpathFiles = aspectJWeaver.classPath.filter { it.isDirectory && it.list().isNotEmpty() }
173-
val inpathFiles = aspectJWeaver.inPath.filter { it.isDirectory && it.list().isNotEmpty() }
172+
val classpathFiles = aspectJWeaver.classPath.filter { it.isDirectory && !it.list().isNullOrEmpty() }
173+
val inpathFiles = aspectJWeaver.inPath.filter { it.isDirectory && !it.list().isNullOrEmpty() }
174174
if (inpathFiles.isEmpty() || classpathFiles.isEmpty()) {
175175
logNoAugmentation()
176176
return

android-gradle-aspectj/src/main/kotlin/com/archinamon/plugin/PluginSetup.kt

+11-9
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,15 @@ private fun prepareVariant(config: AndroidConfig) {
5050

5151
// applies srcSet 'aspectj' for each build variant
5252
getVariantDataList(config.plugin).forEach { variant ->
53-
val props = variant.publicVariantPropertiesApi
53+
val props = variant.second
5454
props.productFlavors.forEach { applier(it.second) }
5555
applier(props.buildType ?: props.flavorName)
5656
}
5757
}
5858

5959
private fun configureCompiler(project: Project, config: AndroidConfig) {
6060
getVariantDataList(config.plugin).forEach variantScanner@ { variant ->
61-
val variantName = variant.name.capitalize()
61+
val variantName = variant.second.name.capitalize()
6262

6363
// do not configure compiler task for non-test variants in ConfigScope.JUNIT
6464
if (config.scope == ConfigScope.JUNIT && variantName.contains("androidtest", true))
@@ -68,21 +68,21 @@ private fun configureCompiler(project: Project, config: AndroidConfig) {
6868
val ajc = AspectJCompileTask.Builder(project)
6969
.plugin(project.plugins.getPlugin(config))
7070
.config(project.extensions.getByType(AspectJExtension::class.java))
71-
.compiler(getJavaTask(variant))
72-
.variant(variant.name)
71+
.compiler(getJavaTask(variant.first))
72+
.variant(variant.second.name)
7373
.name(taskName)
7474

75-
val variantTypeClass: Class<*> = variant.type::class.java
75+
val variantTypeClass: Class<*> = variant.second.variantType::class.java
7676
val variantAnalyticsType: Any? = when {
7777
variantTypeClass.fields.any { it.name == "mAnalyticsVariantType" } ->
78-
variantTypeClass.getField("mAnalyticsVariantType").get(variant.type)
78+
variantTypeClass.getField("mAnalyticsVariantType").get(variant.second.variantType)
7979
variantTypeClass.fields.any { it.name == "analyticsVariantType" } ->
80-
variantTypeClass.getField("analyticsVariantType").get(variant.type)
80+
variantTypeClass.getField("analyticsVariantType").get(variant.second.variantType)
8181
variantTypeClass.enumConstants?.isNotEmpty() == true ->
8282
variantTypeClass.enumConstants[5] // suspect to find UNIT_TEST
8383
?.javaClass
8484
?.getMethod("getAnalyticsVariantType")
85-
?.invoke(variant.type)
85+
?.invoke(variant.second.variantType)
8686
else -> null
8787
}
8888

@@ -121,5 +121,7 @@ private inline fun <reified T> PluginContainer.getPlugin(config: AndroidConfig):
121121
}
122122

123123
private inline fun <reified T> Project.whenEvaluated(noinline fn: Project.() -> T) {
124-
if (state.executed) fn() else afterEvaluate(fn::invoke)
124+
if (state.executed) fn() else afterEvaluate {
125+
fn.invoke(this)
126+
}
125127
}

android-gradle-aspectj/src/main/kotlin/com/archinamon/utils/VariantUtils.kt

+8-10
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.archinamon.utils
22

3+
import com.android.build.api.variant.impl.VariantPropertiesImpl
34
import com.android.build.gradle.internal.plugins.BasePlugin
45
import com.android.build.gradle.internal.scope.TaskContainer
5-
import com.android.build.gradle.internal.scope.VariantScope
66
import com.android.build.gradle.internal.variant.BaseVariantData
77
import org.gradle.api.Project
88
import org.gradle.api.file.FileCollection
@@ -50,9 +50,9 @@ fun getJavaTask(baseVariantData: BaseVariantData): JavaCompile {
5050
return baseVariantData.taskContainer.javacTask.get()
5151
}
5252

53-
fun getAjSourceAndExcludeFromJavac(project: Project, variantData: BaseVariantData): FileCollection {
54-
val javaTask = getJavaTask(variantData)
55-
val props = variantData.publicVariantPropertiesApi
53+
fun getAjSourceAndExcludeFromJavac(project: Project, variantData: Pair<BaseVariantData, VariantPropertiesImpl>): FileCollection {
54+
val javaTask = getJavaTask(variantData.first)
55+
val props = variantData.second
5656

5757
val flavors: List<String>? = props.productFlavors.map { flavor -> flavor.second }
5858
val srcSet = mutableListOf("main", props.buildType ?: props.flavorName)
@@ -97,12 +97,10 @@ fun findSourcesForVariant(project: Project, variantName: String, language: Strin
9797
return LinkedHashSet(possibleDirs)
9898
}
9999

100-
fun getVariantDataList(plugin: BasePlugin): List<BaseVariantData> {
101-
return getVariantScopes(plugin).map(VariantScope::getVariantData)
102-
}
103-
104-
fun getVariantScopes(plugin: BasePlugin): List<VariantScope> {
105-
return plugin.variantManager.variantScopes
100+
fun getVariantDataList(plugin: BasePlugin<*, *>): List<Pair<BaseVariantData, VariantPropertiesImpl>> {
101+
return plugin.variantManager.mainComponents.map {
102+
it.properties.variantData to it.properties
103+
}
106104
}
107105

108106
internal infix fun <E> MutableCollection<in E>.shl(elem: E): MutableCollection<in E> {

gradle.properties

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
aspectjPluginGroup=com.archinamon
2-
aspectjPluginVersion=4.1.0
2+
aspectjPluginVersion=4.3.0
33

4-
androidGradleVersion=4.0.0
4+
androidGradleVersion=4.1.0
55
aspectjVersion=1.9.4
6-
kotlinVersion=1.3.71
6+
kotlinVersion=1.4.10
77
org.gradle.jvmargs=-Xms256m -Xmx256m -Dfile.encoding=UTF-8

0 commit comments

Comments
 (0)