Kotlin updated to v0.10.709 today, including Gradle plugin, but they didn't fixed the problem..
So, I decided to make pull request with fix for Kotlin Gradle Plugin. But Jerome's suggestion to use android.getBootClassPath() is not applicable as easy as I expected, when I used android.getBootClassPath() in KotlinPlugin.kt line 393 (see link please) <https://github.com/JetBrains/kotlin/blob/master/libraries%2Ftools%2Fkotlin-gradle-plugin%2Fsrc%2Fmain%2Fkotlin%2Forg%2Fjetbrains%2Fkotlin%2Fgradle%2Fplugin%2FKotlinPlugin.kt#L393>I got: Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence. java.lang.IllegalArgumentException: android.compileSdkVersion is missing! at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:80) at com.android.build.gradle.BasePlugin.ensureTargetSetup(BasePlugin.groovy:467) at com.android.build.gradle.BasePlugin.access$0(BasePlugin.groovy) at com.android.build.gradle.BasePlugin$_createTasks_closure9.doCall(BasePlugin.groovy:372) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:278) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016) at groovy.lang.Closure.call(Closure.java:423) at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40) at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25) at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83) at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31) at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) at com.sun.proxy.$Proxy12.afterEvaluate(Unknown Source) at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79) at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:65) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:504) at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:83) at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47) at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129) at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36) at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:47) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:35) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:24) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.StartStopIfBuildAndStop.execute(StartStopIfBuildAndStop.java:33) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:71) at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:69) at org.gradle.util.Swapper.swap(Swapper.java:38) at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:69) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:60) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:70) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:34) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.DaemonHygieneAction.execute(DaemonHygieneAction.java:39) at org.gradle.launcher.daemon.server.exec.DaemonCommandExecution.proceed(DaemonCommandExecution.java:119) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:46) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246) at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) FAILURE: Build failed with an exception. I am not Gradle Plugins expert, unfortunately, but as I understand, the KotlinPlugin.kt:393 <https://github.com/JetBrains/kotlin/blob/master/libraries%2Ftools%2Fkotlin-gradle-plugin%2Fsrc%2Fmain%2Fkotlin%2Forg%2Fjetbrains%2Fkotlin%2Fgradle%2Fplugin%2FKotlinPlugin.kt#L393> is not a good place to call android.getBootClassPath() because of gradle build lifecycle. Sorry for asking that, but if ADT team have some free time, please make pull request to Kotlin Gradle plugin with fix, developers community will be very happy. *Btw: if you would want to build Project Kotlin* -> *Use JDK 1.6*, they didn't mention it and I spent about 1 hour on figuring out the problem -> JDK 1.8. The only PR I was able to create — notice about JDK 1.6 in README <https://github.com/JetBrains/kotlin/pull/561> :D On Wednesday, February 4, 2015 at 10:43:22 PM UTC+3, Jake Wharton wrote: > > Excellent. Thanks for the clarification! > > On Wed Feb 04 2015 at 9:24:10 AM Xavier Ducrohet <[email protected] > <javascript:>> wrote: > >> That's a good question. We do have a lot of stuff in internal so these >> areas should be clear (and yet we see people going in an using them, but at >> least they should know they are on their own). >> >> The plugin classes are something that in hindsight should have been >> internal from day one. I think they weren't because I didn't expect people >> to go in and start accessing them. >> >> Based on how you apply a plugin using a name that hides the actual class >> and how the DSL hides the underlying implementation, I don't think it's >> standard practice in Gradle to access the underlying classes. >> >> Note that we do publish docs now (though it's not fully integrated in >> developer.android.com yet), and the Plugin class is not part of it. The >> doc is missing somethings and we're fixing it, but it's stuff that you see >> the current API/DSL give you access to, so you expect it to be public. The >> only way to know about the plugin class is to look at the source code and >> that should be a warning already. >> >> I think we will move all of these to internal packages for 1.1. It's >> better to break things now than later when there's an even wider adoption. >> >> >> On Tue, Feb 3, 2015 at 9:40 PM, Jake Wharton <[email protected] >> <javascript:>> wrote: >> >>> Ah, only one of our instances is using that one specifically. >>> >>> How do we differentiate what is considered public API or not? >>> >>> >>> On Tue Feb 03 2015 at 4:18:50 PM Artem Zinnatullin < >>> [email protected] <javascript:>> wrote: >>> >>>> Filed a bug on Kotlin issue tracker >>>> https://youtrack.jetbrains.com/issue/KT-6729 >>>> >>>> >>>> On Wednesday, February 4, 2015 at 2:58:08 AM UTC+3, Artem Zinnatullin >>>> wrote: >>>>> >>>>> Hello ADT team, I wanted to try Android Gradle plugin v1.1.0-rc1 >>>>> because of Unit tests support, but Kotlin Gradle >>>>> plugin 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.10.195' failing >>>>> the build because of changes in Android one: >>>>> >>>>> Execution failed for task ':app:compileDevEnvDebugKotlin'. >>>>> >>>>> > No signature of method: >>>>> > com.android.build.gradle.AppPlugin.getBootClasspath() >>>>> is applicable for argument types: () values: [] >>>>> >>>>> Here is the problem in Kotlin Gradle plugin source "link >>>>> <https://github.com/JetBrains/kotlin/blob/master/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/android/AndroidGradleWrapper.groovy#L15> >>>>> " >>>>> >>>>> As I see, BasePlugin now doesn't provide getBootClasspath any more. >>>>> >>>>> What is more correct: return method to BasePlugin or fix Kotlin plugin? >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "adt-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected] <javascript:>. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "adt-dev" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected] <javascript:>. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Xavier Ducrohet >> Android SDK Tech Lead >> Google Inc. >> http://developer.android.com | http://tools.android.com >> >> Please do not send me questions directly. Thanks! >> >> -- >> You received this message because you are subscribed to the Google Groups >> "adt-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
