Gus
07/12/2021, 2:58 PMjava.nio.file.FileSystems
, which breaks on Android 5-8 but works in newer versions. This line in `ApplicationEngineEnvironmentReloading` is the culprit, but I don't think that class should be used in production, right? So how can I disable that behaviour, so that that class won't be loaded? I'm not running the server in development mode, so it shouldn't be trying to reload the server.Aleksei Tirman [JB]
07/13/2021, 9:11 AMval server = embeddedServer(CIO, port = 8082, watchPaths = emptyList()) {
routing {
get("/") {}
}
}
Gus
07/13/2021, 9:13 AMINFO ktor.application - Autoreload is disabled because the development mode is off.
java.nio.file.FileSystems
must be executed anyway regardless of development modeAleksei Tirman [JB]
07/13/2021, 9:16 AMwatchPatterns.isEmpty()
before usage of watcher
.Gus
07/13/2021, 9:17 AMjava.lang.NoSuchMethodError: No virtual method getParameterCount()I in class Ljava/lang/reflect/Constructor; or its super classes (declaration of 'java.lang.reflect.Constructor' appears in /system/framework/core-libart.jar)
FATAL EXCEPTION: main
Process: tech.relaycorp.gateway, PID: 6740
java.lang.NoSuchMethodError: No virtual method getParameterCount()I in class Ljava/lang/reflect/Constructor; or its super classes (declaration of 'java.lang.reflect.Constructor' appears in /system/framework/core-libart.jar)
at io.ktor.server.engine.internal.CallableUtilsKt.executeModuleFunction(CallableUtils.kt:43)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$launchModuleByName$1.invoke(ApplicationEngineEnvironmentReloading.kt:317)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$launchModuleByName$1.invoke(ApplicationEngineEnvironmentReloading.kt:316)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartupFor(ApplicationEngineEnvironmentReloading.kt:341)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.launchModuleByName(ApplicationEngineEnvironmentReloading.kt:316)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.access$launchModuleByName(ApplicationEngineEnvironmentReloading.kt:30)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:304)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading$instantiateAndConfigureApplication$1.invoke(ApplicationEngineEnvironmentReloading.kt:295)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.avoidingDoubleStartup(ApplicationEngineEnvironmentReloading.kt:323)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.instantiateAndConfigureApplication(ApplicationEngineEnvironmentReloading.kt:295)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.createApplication(ApplicationEngineEnvironmentReloading.kt:136)
at io.ktor.server.engine.ApplicationEngineEnvironmentReloading.start(ApplicationEngineEnvironmentReloading.kt:268)
at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:174)
at tech.relaycorp.gateway.pdc.local.PDCServer$start$2.invokeSuspend(PDCServer.kt:41)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
The server continues to work on Android 8+.Aleksei Tirman [JB]
07/13/2021, 9:44 AMGus
07/13/2021, 12:14 PMio.ktor.server.engine.internal.CallableUtilsKt.executeModuleFunction(CallableUtils.kt:43)
Aleksei Tirman [JB]
07/13/2021, 1:09 PMgetParameterCount
method was added in Android API 26.Gus
07/13/2021, 1:36 PM