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 !

  • XML a / desde Java / Kotlin, multiplataforma
  • Descargando e instalando un APK usando voley
  • ¿Cuál es la manera idiomática de Kotlin de adquirir un Logger?
  • ¿Cómo configurar la versión de Kotlin en Android Studio?
  • ¿Comportamiento incorrecto de Maybe <List <T >> en Room?
  • Kotlin: ¿parameters de function enviados pero no ejecutados?
  • ¿Cómo hacer que kotlintest trabaje con Spring?
  • Error: no puede acceder a NotNull
  • suprimir una advertencia de variable no utilizada
  • Kotlin IllegalAccessError con + = y - = para la interfaz delegada
  • ¿Cómo dividir una cadena con un set de delimitadores y encontrar qué delimitador era? Kotlin