Configurar los arguments del comstackdor

Estoy buscando una forma de configurar los arguments del comstackdor de Kotlin en el file build.gradle de mi proyecto de aplicación de Android.

He visto en la documentation oficial de Kotlin que es posible configurar los arguments del comstackdor para cada sabor de compilation (como debugging, lanzamiento).

Nivel de proyecto build.gradle

 buildscript { ext.kotlin_version = '1.1.51' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-rc1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } 

Nivel de aplicación build.gradle

 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 26 buildToolsVersion "26.0.2" defaultConfig { applicationId "com.myapp.myapplication" minSdkVersion 16 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } // The interesting part : configure the compileReleaseKotlin task // to include compiler arguments when building releases compileReleaseKotlin { kotlinOptions { freeCompilerArgs = [ 'Xno-param-assertions', 'Xno-call-assertions', 'Xno-receiver-assertions' ] } } dependencies { // The usual Android dependencies, omitted for brievety } 

Al build el proyecto, recibo el siguiente error:

 Could not find method compileReleaseKotlin() for arguments [build_7b4e2sfm3830f9z4br95gfme2$_run_closure2@7ed96f28] on project ':app' of type org.gradle.api.Project. 

¿ compileReleaseKotlin bloque compileReleaseKotlin mal compileReleaseKotlin o mal escrito? Android Studio me sugiere este método, sin embargo.

Después de unos días de búsqueda y experimentación, finalmente encontré una forma de configurar el comstackdor basado en la variante de compilation.

Esto es lo que funcionó para mí:

 buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' // Configure Kotlin compiler optimisations for releases kotlinOptions { freeCompilerArgs = [ 'Xno-param-assertions', 'Xno-call-assertions', 'Xno-receiver-assertions' ] } } } } 

Parece que la documentation del complemento Android de Gradle Kotlin no es correcta: mientras que dice que el comstackdor se puede configurar agregando, por ejemplo, el cierre compileReleaseKotlin para comstackciones de lanzamiento, para Android tiene que poner un bloque kotlinOptions en release , como mostrado anteriormente.

Tenga en count que para un proyecto Kotlin normal (sin Android), el bloque compileKotlin descrito en la documentation funciona como intentado.

Espero eso ayude !

  • ¿Cómo verificar si Mono está vacío?
  • Kotlin: ¿Cómo puedo usar properties delegadas en Java?
  • Error con java8 y Kotlin
  • El punto de interrupción no recibe un golpe dentro de la callback de Kotlin en Intellij
  • Cómo llenar una vista de list usando Kotlin, retroadaptación y RXjava
  • Actualizando la Vista de Reciclador y Creando Parcelables para la rotation de la pantalla (¿Cuál es el mejor curso de acción aquí?)
  • Kotlin: ¿"eso" asignable?
  • No se puede convertir a colección en kotlin
  • El receptor de difusión onReceive () no se llama
  • Cómo hacer un bucle multicondicional para kotlin
  • No se puede build el proyecto de Android después de agregar la class Realm