android proguard kotlin

android - Cómo usar Kotlin con Proguard



(4)

En Kotlin 1.0.2 EAP Proguard se quita cuando las asignaciones para enumeraciones, por lo que tengo que mantenerlos explícitamente, por lo que

-keepclassmembers class **$WhenMappings { <fields>; }

es suficiente para la ofuscación correcta. Aunque si desea algunas mejoras de rendimiento, también puede agregar

-assumenosideeffects class kotlin.jvm.internal.Intrinsics { static void checkParameterIsNotNull(java.lang.Object, java.lang.String); }

Estoy tratando de agregar Kotlin a mi proyecto y necesito usar Proguard. ¿Qué reglas debo agregar para proteger a Kotlin?

Gracias


No necesitas hacer nada especial. Kotlin trabaja con ProGuard recién sacado de la caja. Pero puede enfrentar algunos errores extraños al procesar su aplicación con ProGuard. En este caso solo agrega

-dontwarn kotlin.**

Además, si desea deshacerse de los controles nulos en tiempo de ejecución, puede usar la siguiente regla:

-assumenosideeffects class kotlin.jvm.internal.Intrinsics { static void checkParameterIsNotNull(java.lang.Object, java.lang.String); }


Puede configurar su archivo build.gradle para la implementación de proguard. Puede ser a nivel de módulo o a nivel de proyecto.

buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' } }

La configuración que se muestra es para el nivel de depuración, pero puede escribir sus propios sabores de compilación como se muestra a continuación dentro de buildTypes:

myproductionbuild{ minifyEnabled true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.txt'' }

Para obtener más información, haga clic aquí http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Running-ProGuard


-keep class kotlin.** { *; } -keep class kotlin.Metadata { *; } -dontwarn kotlin.** -keepclassmembers class **$WhenMappings { <fields>; } -keepclassmembers class kotlin.Metadata { public <methods>; } -assumenosideeffects class kotlin.jvm.internal.Intrinsics { static void checkParameterIsNotNull(java.lang.Object, java.lang.String); }

construir gradle:

apply plugin: ''com.android.application'' apply plugin: ''kotlin-android'' apply plugin: ''kotlin-android-extensions''

https://kotlinlang.org/docs/tutorials/kotlin-android.html