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 !

  • Kotlin: Scoping usando Object vs Class
  • JsonView en Spring + Kotlin
  • Observer onChanged nunca llamado
  • Cómo escribir Short / Int en buffer de 1 byte
  • Kotlin y la forma idiomática de escribir, 'si no nulo, más ...' en function del valor mutable
  • ¿Cómo se soluciona la initialization del campo val con el proxy Spring Security?
  • ¿Qué hace realmente la palabra key reificada en Kotlin?
  • Cómo mostrar un solo artículo seleccionado en recyclerview usando kotlin
  • ¿Cómo get nombres y valores de los parameters del método?
  • ¿Hay alguna manera de vincular una propiedad a appConfig en tornadofx?
  • ¿Por qué la llamada insegura .run () funciona bien en un valor nulo en Kotlin?