Co drugi bieg naszego android app, mamy awarię, która mówiAndroid Kotlin: java.lang.NoClassDefFoundError: Nie rozdzielczość: <KotlinObject>
java.lang.NoClassDefFoundError: Failed resolution of: Lin/blahapp/xxx/BlahUtil
BlahUtil jest obiektem Kotlin z @JvmStatic adnotacji w to. Te statyczne metody nazywam reszta aplikacji na Androida (All in java).
Używamy multidex 1.0.1.
Jestem na Androidzie 2.1.2 studiu, używając JDK 7.
Istotne Gradle configs:
compileSdkVersion 23
buildToolsVersion "23.0.3"
defaultConfig {
minSdkVersion 16
targetSdkVersion 23
}
dexOptions {
incremental true
dexInProcess true
javaMaxHeapSize "10g"
preDexLibraries true
}
buildscript {
ext.kotlin_version = '1.0.3'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin-android'
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
}
Ślad:
at in.blahapp.xxx.OurActivity
at android.app.Activity.performCreate(Activity.java:6251)
at ndroid.app.Instrumentation.callActivityOnCreate
at android.app.ActivityThread.performLaunchActivity
at android.app.ActivityThread.handleLaunchActivity
at android.app.ActivityThread.-wrap11
at android.app.ActivityThread$H.handleMessage
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassNotFoundException: Didn't find class "in.blahapp.xxx.BlahUtil" on path: DexPathList[[dex file ....
Czy to się zawsze zdarza, czy tylko w co drugiej kompilacji (lub, w innym wariancie, tylko przy pierwszym czystym kompilacji)? – AndroidEx
Zwykle nigdy nie dzieje się przy pierwszym uruchomieniu, które następuje po czystej kompilacji. awarie podczas drugiego uruchomienia po wprowadzeniu pewnych zmian i ponownym uruchomieniu. Działa trzeci bieg. jeśli ponownie wprowadzę zmianę, nastąpi awaria następnego razu. następnie pracuje w biegu po tym ..... i tak dalej. – letronje
To brzmi jak [ten błąd] (https://youtrack.jetbrains.com/issue/KT-10733). Miałem inny wariant tego błędu, gdy klasa Kotlin nie została znaleziona (= usunięta) na pierwszej czystej kompilacji, ale pojawiła się na drugiej przyrostowej kompilacji. Zostało to również omówione na trackerze google, a wynik był taki, że musimy poczekać na wydanie android gradle plugin 2.3. Ten problem uniemożliwił mi wprowadzenie w moim zespole Kotlina i, niestety, nie mam żadnych zaleceń, którymi mógłbym się z tobą podzielić. – AndroidEx