Ktor WebSocket 不支持 Android 土耳其语言环境?
Ktor WebSocket cannot support Android Turkish locale?
Ktor WebSocket 似乎不支持 Android 土耳其语言环境。
下面的代码在土耳其语言环境之外运行良好。当我将设备区域设置更改为土耳其语时崩溃(我检查了 28 个区域设置,包括阿拉伯语)
即使我在各种设备(SS smart phone,基于 AOSP8 的自定义设备)上对其进行了测试,但它也无法正常工作,只有不同的崩溃位置。
你能告诉我怎么做吗?
class MainActivity : AppCompatActivity() {
private fun startServer() {
embeddedServer(Netty, port = 8080) {
install(io.ktor.websocket.WebSockets) {
}
routing {
webSocket("/language") {
incoming.consumeEach { frame ->
when (frame) {
is Frame.Text -> println("######################### ${frame.readText()}")
}
}
}
}
}.start()
}
private val client = HttpClient(CIO) {
install(io.ktor.client.features.websocket.WebSockets)
}
private fun connectLocalhost() {
CoroutineScope(Dispatchers.IO).launch {
try {
client.ws(host = "localhost", port = 8080, path = "/language") {
send(Frame.Text("My name is Hello World"))
incoming.consumeEach { frame ->
when (frame) {
is Frame.Text -> println(frame.readText())
}
}
}
} catch (e:Throwable) {
println(e.message)
println("------------------------- ${e.message}")
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startServer()
connectLocalhost()
}
}
Ktor 被这样使用
ext.kotlin_version = "1.3.72"
ext.ktor_version = '1.2.5'
maven {url "https://dl.bintray.com/kotlin/ktor"}
implementation "io.ktor:ktor-websockets:$ktor_version"
implementation "io.ktor:ktor-server-netty:1.2.5"
implementation "ch.qos.logback:logback-classic:1.2.3"
implementation "io.ktor:ktor-client-websockets:$ktor_version"
implementation "io.ktor:ktor-client-cio:$ktor_version"
implementation "io.ktor:ktor-client-js:$ktor_version"
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
这是 SS Smart 的日志 Phone
04/07 13:40:34: Launching 'app' on samsung SM-G960N.
$ adb shell am start -n "com.example.myapplication/com.example.myapplication.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 25078 on device 'samsung-sm_g960n-22d1af5612037ece'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
E/Zygote: isWhitelistProcess - Process is Whitelisted
E/Zygote: accessInfo : 1
I/SELinux: SELinux: seapp_context_lookup: seinfo=untrusted, level=s0:c3,c257,c512,c768, pkgname=com.example.myapplication
I/e.myapplicatio: Late-enabling -Xcheck:jni
D/ConnectivityManager_URSP: Ursp sIsUrsp=false, sIsCheckUrsp=false, uid=10259
D/Proxy: urspP is null: 10259
D/libEGL: loaded /vendor/lib64/egl/libGLES_mali.so
W/e.myapplicatio: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
W/e.myapplicatio: Accessing hidden field Landroid/view/WindowInsets;->CONSUMED:Landroid/view/WindowInsets; (light greylist, reflection)
W/e.myapplicatio: Accessing hidden method Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; (light greylist, linking)
W/e.myapplicatio: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
W/e.myapplicatio: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
I/System.out: 13:40:39.302 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework
E/e.myapplicatio: No implementation found for int io.netty.channel.kqueue.Native.sizeofKEvent() (tried Java_io_netty_channel_kqueue_Native_sizeofKEvent and Java_io_netty_channel_kqueue_Native_sizeofKEvent__)
No implementation found for int io.netty.channel.epoll.Native.offsetofEpollData() (tried Java_io_netty_channel_epoll_Native_offsetofEpollData and Java_io_netty_channel_epoll_Native_offsetofEpollData__)
I/System.out: 13:40:39.316 [main] DEBUG io.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false
13:40:39.317 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Platform: Android
I/System.out: 13:40:39.318 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Java version: 6
I/System.out: 13:40:39.318 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Platform: Android
W/e.myapplicatio: Accessing hidden field Lsun/misc/Unsafe;->theUnsafe:Lsun/misc/Unsafe; (light greylist, reflection)
I/System.out: 13:40:39.319 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
I/System.out: 13:40:39.322 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: unavailable
I/System.out: java.lang.NoSuchMethodException: sun.misc.Unsafe.copyMemory [class java.lang.Object, long, class java.lang.Object, long, long]
at java.lang.Class.getMethod(Class.java:2069)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at io.netty.util.internal.PlatformDependent0.run(PlatformDependent0.java:132)
at java.security.AccessController.doPrivileged(AccessController.java:43)
at io.netty.util.internal.PlatformDependent0.<clinit>(PlatformDependent0.java:128)
at io.netty.util.internal.PlatformDependent0.isAndroid(PlatformDependent0.java:810)
at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:214)
at io.netty.util.internal.PlatformDependent.<clinit>(PlatformDependent.java:82)
at io.netty.util.internal.PlatformDependent.normalizedArch(PlatformDependent.java:1270)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:183)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
I/System.out: at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.327 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.DirectByteBuffer.<init>(long, int): unavailable
I/System.out: 13:40:39.328 [main] DEBUG io.netty.util.internal.PlatformDependent - sun.misc.Unsafe: unavailable (Android)
I/System.out: 13:40:39.329 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.tmpdir: /data/user/0/com.example.myapplication/cache (java.io.tmpdir)
I/System.out: 13:40:39.331 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.maxDirectMemory: -1 bytes
13:40:39.332 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1
I/System.out: 13:40:39.332 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: true
13:40:39.333 [main] INFO io.netty.util.internal.PlatformDependent - Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system instability.
I/System.out: 13:40:39.336 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - -Dio.netty.native.workdir: /data/user/0/com.example.myapplication/cache (io.netty.tmpdir)
I/System.out: 13:40:39.337 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - -Dio.netty.native.deleteLibAfterLoading: true
13:40:39.337 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - -Dio.netty.native.tryPatchShadedId: true
I/System.out: 13:40:39.338 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'netty_transport_native_epoll_aarch_64', trying other loading mechanism.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll_aarch_64.so"
I/System.out: at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at io.netty.util.internal.NativeLibraryLoader.run(NativeLibraryLoader.java:369)
at java.security.AccessController.doPrivileged(AccessController.java:43)
at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:361)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:339)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:186)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
I/System.out: at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.342 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - netty_transport_native_epoll_aarch_64 cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir: /data/user/0/com.example.myapplication/cache
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll_aarch_64.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:349)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:186)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
I/System.out: at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.348 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'netty_transport_native_epoll', trying other loading mechanism.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
I/System.out: at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at io.netty.util.internal.NativeLibraryLoader.run(NativeLibraryLoader.java:369)
at java.security.AccessController.doPrivileged(AccessController.java:43)
at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:361)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:339)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:189)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.351 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - netty_transport_native_epoll cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir: /data/user/0/com.example.myapplication/cache
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:349)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:189)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
I/System.out: at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.358 [main] DEBUG io.netty.channel.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 16
I/System.out: 13:40:39.368 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
I/System.out: 13:40:39.369 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
I/System.out: 13:40:39.373 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false
13:40:39.374 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512
I/System.out: 13:40:39.376 [main] DEBUG io.netty.util.internal.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: unavailable
I/System.out: 13:40:39.390 [main] INFO ktor.application - No ktor.deployment.watch patterns specified, automatic reload is not active
I/System.out: 13:40:39.409 [main] INFO ktor.application - Responding at http://0.0.0.0:8080
D/TcpOptimizer: TcpOptimizer-ON
I/System.out: 13:40:39.419 [main] DEBUG io.netty.channel.DefaultChannelId - Could not invoke ManagementFactory.getRuntimeMXBean().getName(); Android?
java.lang.ClassNotFoundException: java.lang.management.ManagementFactory
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at io.netty.channel.DefaultChannelId.defaultProcessId(DefaultChannelId.java:114)
at io.netty.channel.DefaultChannelId.<clinit>(DefaultChannelId.java:77)
at io.netty.channel.DefaultChannelId.newInstance(DefaultChannelId.java:55)
at io.netty.channel.AbstractChannel.newId(AbstractChannel.java:100)
at io.netty.channel.AbstractChannel.<init>(AbstractChannel.java:72)
at io.netty.channel.nio.AbstractNioChannel.<init>(AbstractNioChannel.java:80)
at io.netty.channel.nio.AbstractNioMessageChannel.<init>(AbstractNioMessageChannel.java:42)
at io.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:88)
at io.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:74)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
I/System.out: at io.netty.channel.ReflectiveChannelFactory.newChannel(ReflectiveChannelFactory.java:44)
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:309)
at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:271)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:267)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:252)
at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:129)
at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:26)
at io.ktor.server.engine.ApplicationEngine$DefaultImpls.start$default(ApplicationEngine.kt:56)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:41)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.lang.management.ManagementFactory" on path: DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
通过升级ktor版本到1.3.2以上解决
Ktor WebSocket 似乎不支持 Android 土耳其语言环境。 下面的代码在土耳其语言环境之外运行良好。当我将设备区域设置更改为土耳其语时崩溃(我检查了 28 个区域设置,包括阿拉伯语) 即使我在各种设备(SS smart phone,基于 AOSP8 的自定义设备)上对其进行了测试,但它也无法正常工作,只有不同的崩溃位置。
你能告诉我怎么做吗?
class MainActivity : AppCompatActivity() {
private fun startServer() {
embeddedServer(Netty, port = 8080) {
install(io.ktor.websocket.WebSockets) {
}
routing {
webSocket("/language") {
incoming.consumeEach { frame ->
when (frame) {
is Frame.Text -> println("######################### ${frame.readText()}")
}
}
}
}
}.start()
}
private val client = HttpClient(CIO) {
install(io.ktor.client.features.websocket.WebSockets)
}
private fun connectLocalhost() {
CoroutineScope(Dispatchers.IO).launch {
try {
client.ws(host = "localhost", port = 8080, path = "/language") {
send(Frame.Text("My name is Hello World"))
incoming.consumeEach { frame ->
when (frame) {
is Frame.Text -> println(frame.readText())
}
}
}
} catch (e:Throwable) {
println(e.message)
println("------------------------- ${e.message}")
}
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
startServer()
connectLocalhost()
}
}
Ktor 被这样使用
ext.kotlin_version = "1.3.72"
ext.ktor_version = '1.2.5'
maven {url "https://dl.bintray.com/kotlin/ktor"}
implementation "io.ktor:ktor-websockets:$ktor_version"
implementation "io.ktor:ktor-server-netty:1.2.5"
implementation "ch.qos.logback:logback-classic:1.2.3"
implementation "io.ktor:ktor-client-websockets:$ktor_version"
implementation "io.ktor:ktor-client-cio:$ktor_version"
implementation "io.ktor:ktor-client-js:$ktor_version"
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
这是 SS Smart 的日志 Phone
04/07 13:40:34: Launching 'app' on samsung SM-G960N.
$ adb shell am start -n "com.example.myapplication/com.example.myapplication.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Connected to process 25078 on device 'samsung-sm_g960n-22d1af5612037ece'.
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
E/Zygote: isWhitelistProcess - Process is Whitelisted
E/Zygote: accessInfo : 1
I/SELinux: SELinux: seapp_context_lookup: seinfo=untrusted, level=s0:c3,c257,c512,c768, pkgname=com.example.myapplication
I/e.myapplicatio: Late-enabling -Xcheck:jni
D/ConnectivityManager_URSP: Ursp sIsUrsp=false, sIsCheckUrsp=false, uid=10259
D/Proxy: urspP is null: 10259
D/libEGL: loaded /vendor/lib64/egl/libGLES_mali.so
W/e.myapplicatio: Accessing hidden method Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->left:I (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->right:I (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->top:I (light greylist, linking)
Accessing hidden field Landroid/graphics/Insets;->bottom:I (light greylist, linking)
W/e.myapplicatio: Accessing hidden field Landroid/view/WindowInsets;->CONSUMED:Landroid/view/WindowInsets; (light greylist, reflection)
W/e.myapplicatio: Accessing hidden method Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; (light greylist, linking)
W/e.myapplicatio: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (light greylist, reflection)
W/e.myapplicatio: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (light greylist, reflection)
I/System.out: 13:40:39.302 [main] DEBUG io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework
E/e.myapplicatio: No implementation found for int io.netty.channel.kqueue.Native.sizeofKEvent() (tried Java_io_netty_channel_kqueue_Native_sizeofKEvent and Java_io_netty_channel_kqueue_Native_sizeofKEvent__)
No implementation found for int io.netty.channel.epoll.Native.offsetofEpollData() (tried Java_io_netty_channel_epoll_Native_offsetofEpollData and Java_io_netty_channel_epoll_Native_offsetofEpollData__)
I/System.out: 13:40:39.316 [main] DEBUG io.netty.util.internal.PlatformDependent0 - -Dio.netty.noUnsafe: false
13:40:39.317 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Platform: Android
I/System.out: 13:40:39.318 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Java version: 6
I/System.out: 13:40:39.318 [main] DEBUG io.netty.util.internal.PlatformDependent0 - Platform: Android
W/e.myapplicatio: Accessing hidden field Lsun/misc/Unsafe;->theUnsafe:Lsun/misc/Unsafe; (light greylist, reflection)
I/System.out: 13:40:39.319 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
I/System.out: 13:40:39.322 [main] DEBUG io.netty.util.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: unavailable
I/System.out: java.lang.NoSuchMethodException: sun.misc.Unsafe.copyMemory [class java.lang.Object, long, class java.lang.Object, long, long]
at java.lang.Class.getMethod(Class.java:2069)
at java.lang.Class.getDeclaredMethod(Class.java:2047)
at io.netty.util.internal.PlatformDependent0.run(PlatformDependent0.java:132)
at java.security.AccessController.doPrivileged(AccessController.java:43)
at io.netty.util.internal.PlatformDependent0.<clinit>(PlatformDependent0.java:128)
at io.netty.util.internal.PlatformDependent0.isAndroid(PlatformDependent0.java:810)
at io.netty.util.internal.PlatformDependent.isAndroid(PlatformDependent.java:214)
at io.netty.util.internal.PlatformDependent.<clinit>(PlatformDependent.java:82)
at io.netty.util.internal.PlatformDependent.normalizedArch(PlatformDependent.java:1270)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:183)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
I/System.out: at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.327 [main] DEBUG io.netty.util.internal.PlatformDependent0 - java.nio.DirectByteBuffer.<init>(long, int): unavailable
I/System.out: 13:40:39.328 [main] DEBUG io.netty.util.internal.PlatformDependent - sun.misc.Unsafe: unavailable (Android)
I/System.out: 13:40:39.329 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.tmpdir: /data/user/0/com.example.myapplication/cache (java.io.tmpdir)
I/System.out: 13:40:39.331 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.maxDirectMemory: -1 bytes
13:40:39.332 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.uninitializedArrayAllocationThreshold: -1
I/System.out: 13:40:39.332 [main] DEBUG io.netty.util.internal.PlatformDependent - -Dio.netty.noPreferDirect: true
13:40:39.333 [main] INFO io.netty.util.internal.PlatformDependent - Your platform does not provide complete low-level API for accessing direct buffers reliably. Unless explicitly requested, heap buffer will always be preferred to avoid potential system instability.
I/System.out: 13:40:39.336 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - -Dio.netty.native.workdir: /data/user/0/com.example.myapplication/cache (io.netty.tmpdir)
I/System.out: 13:40:39.337 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - -Dio.netty.native.deleteLibAfterLoading: true
13:40:39.337 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - -Dio.netty.native.tryPatchShadedId: true
I/System.out: 13:40:39.338 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'netty_transport_native_epoll_aarch_64', trying other loading mechanism.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll_aarch_64.so"
I/System.out: at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at io.netty.util.internal.NativeLibraryLoader.run(NativeLibraryLoader.java:369)
at java.security.AccessController.doPrivileged(AccessController.java:43)
at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:361)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:339)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:186)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
I/System.out: at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.342 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - netty_transport_native_epoll_aarch_64 cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir: /data/user/0/com.example.myapplication/cache
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll_aarch_64.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:349)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:186)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
I/System.out: at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.348 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - Unable to load the library 'netty_transport_native_epoll', trying other loading mechanism.
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
I/System.out: at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at io.netty.util.internal.NativeLibraryLoader.run(NativeLibraryLoader.java:369)
at java.security.AccessController.doPrivileged(AccessController.java:43)
at io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:361)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:339)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:189)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.351 [main] DEBUG io.netty.util.internal.NativeLibraryLoader - netty_transport_native_epoll cannot be loaded from java.library.path, now trying export to -Dio.netty.native.workdir: /data/user/0/com.example.myapplication/cache
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]] couldn't find "libnetty_transport_native_epoll.so"
at java.lang.Runtime.loadLibrary0(Runtime.java:1012)
at java.lang.System.loadLibrary(System.java:1669)
at io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:349)
at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
at io.netty.channel.epoll.Native.loadNativeLibrary(Native.java:189)
at io.netty.channel.epoll.Native.<clinit>(Native.java:57)
at io.netty.channel.epoll.Native.newEpollCreate(Native.java:89)
at io.netty.channel.epoll.Epoll.<clinit>(Epoll.java:38)
at io.netty.channel.epoll.Epoll.isAvailable(Epoll.java:68)
at io.ktor.server.netty.EventLoopGroupProxy$Companion.create(NettyApplicationEngine.kt:186)
at io.ktor.server.netty.NettyApplicationEngine.<init>(NettyApplicationEngine.kt:74)
at io.ktor.server.netty.Netty.create(Embedded.kt:14)
I/System.out: at io.ktor.server.netty.Netty.create(Embedded.kt:12)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:79)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:67)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer(EmbeddedServer.kt:36)
at io.ktor.server.engine.EmbeddedServerKt.embeddedServer$default(EmbeddedServer.kt:34)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:29)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
I/System.out: 13:40:39.358 [main] DEBUG io.netty.channel.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 16
I/System.out: 13:40:39.368 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.initialSize: 1024
I/System.out: 13:40:39.369 [main] DEBUG io.netty.util.internal.InternalThreadLocalMap - -Dio.netty.threadLocalMap.stringBuilder.maxSize: 4096
I/System.out: 13:40:39.373 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false
13:40:39.374 [main] DEBUG io.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512
I/System.out: 13:40:39.376 [main] DEBUG io.netty.util.internal.PlatformDependent - org.jctools-core.MpscChunkedArrayQueue: unavailable
I/System.out: 13:40:39.390 [main] INFO ktor.application - No ktor.deployment.watch patterns specified, automatic reload is not active
I/System.out: 13:40:39.409 [main] INFO ktor.application - Responding at http://0.0.0.0:8080
D/TcpOptimizer: TcpOptimizer-ON
I/System.out: 13:40:39.419 [main] DEBUG io.netty.channel.DefaultChannelId - Could not invoke ManagementFactory.getRuntimeMXBean().getName(); Android?
java.lang.ClassNotFoundException: java.lang.management.ManagementFactory
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at io.netty.channel.DefaultChannelId.defaultProcessId(DefaultChannelId.java:114)
at io.netty.channel.DefaultChannelId.<clinit>(DefaultChannelId.java:77)
at io.netty.channel.DefaultChannelId.newInstance(DefaultChannelId.java:55)
at io.netty.channel.AbstractChannel.newId(AbstractChannel.java:100)
at io.netty.channel.AbstractChannel.<init>(AbstractChannel.java:72)
at io.netty.channel.nio.AbstractNioChannel.<init>(AbstractNioChannel.java:80)
at io.netty.channel.nio.AbstractNioMessageChannel.<init>(AbstractNioMessageChannel.java:42)
at io.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:88)
at io.netty.channel.socket.nio.NioServerSocketChannel.<init>(NioServerSocketChannel.java:74)
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
I/System.out: at io.netty.channel.ReflectiveChannelFactory.newChannel(ReflectiveChannelFactory.java:44)
at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:309)
at io.netty.bootstrap.AbstractBootstrap.doBind(AbstractBootstrap.java:271)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:267)
at io.netty.bootstrap.AbstractBootstrap.bind(AbstractBootstrap.java:252)
at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:129)
at io.ktor.server.netty.NettyApplicationEngine.start(NettyApplicationEngine.kt:26)
at io.ktor.server.engine.ApplicationEngine$DefaultImpls.start$default(ApplicationEngine.kt:56)
at com.example.myapplication.MainActivity.startServer(MainActivity.kt:41)
at com.example.myapplication.MainActivity.onCreate(MainActivity.kt:69)
at android.app.Activity.performCreate(Activity.java:7326)
at android.app.Activity.performCreate(Activity.java:7317)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3235)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:6986)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.lang.management.ManagementFactory" on path: DexPathList[[zip file "/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.myapplication-usrP3X4x8loS0kKwhhCp0A==/lib/arm64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
通过升级ktor版本到1.3.2以上解决