From 60f72380b49ed04734a10a99aac080f3483ee71b Mon Sep 17 00:00:00 2001 From: knize Date: Fri, 31 Mar 2017 01:53:53 +0300 Subject: Fix dokka-android to support new build tools Support getting variantManager after android build tools 2.3.0 API changes Fix for issue #140 --- runners/android-gradle-plugin/build.gradle | 2 +- .../src/main/kotlin/mainAndroid.kt | 25 ++++++++++++++++------ 2 files changed, 20 insertions(+), 7 deletions(-) (limited to 'runners/android-gradle-plugin') diff --git a/runners/android-gradle-plugin/build.gradle b/runners/android-gradle-plugin/build.gradle index e93add83..53bff935 100644 --- a/runners/android-gradle-plugin/build.gradle +++ b/runners/android-gradle-plugin/build.gradle @@ -27,7 +27,7 @@ dependencies { provided gradleApi() provided localGroovy() - provided 'com.android.tools.build:gradle:2.2.0' + provided 'com.android.tools.build:gradle:2.3.0' } task sourceJar(type: Jar) { diff --git a/runners/android-gradle-plugin/src/main/kotlin/mainAndroid.kt b/runners/android-gradle-plugin/src/main/kotlin/mainAndroid.kt index 3c1e2284..63168e7b 100644 --- a/runners/android-gradle-plugin/src/main/kotlin/mainAndroid.kt +++ b/runners/android-gradle-plugin/src/main/kotlin/mainAndroid.kt @@ -37,15 +37,28 @@ open class DokkaAndroidPlugin : Plugin { } } + + private fun getVariantManagerOld(plugin: BasePlugin): VariantManager? { + val variantManagerProperty = + plugin.javaClass.kotlin.memberProperties + .find { it.name == "variantManager" } ?: return null + variantManagerProperty.isAccessible = true + return variantManagerProperty.get(plugin) as VariantManager + } + + private fun getVariantManager(plugin: BasePlugin): VariantManager = plugin.variantManager + private fun collectClasspath(project: Project) { val plugin = (project.plugins.findPlugin("android") ?: project.plugins.findPlugin("android-library") - ?: project.plugins.findPlugin("com.android.test")) as BasePlugin - - val variantManagerProperty = plugin.javaClass.kotlin.memberProperties.find { it.name == "variantManager" }!! - variantManagerProperty.isAccessible = true - val variantManager = variantManagerProperty.get(plugin) as VariantManager - variantManager.variantDataList.flatMapTo(allVariantsClassPath) { it.variantConfiguration.compileClasspath } + ?: project.plugins.findPlugin("com.android.test") + ?: throw Exception("Android plugin not found, please use dokka-android with android or android-library plugin.")) as BasePlugin + try { + val variantManager = getVariantManagerOld(plugin) ?: getVariantManager(plugin) + variantManager.variantDataList.flatMapTo(allVariantsClassPath) { it.variantConfiguration.compileClasspath } + } catch(e: Exception) { + throw Exception("Unsupported version of android build tools, could not access variant manager.", e) + } } } -- cgit