1.8 KiB
1.8 KiB
tags, aliases, date, time, description
| tags | aliases | date | time | description |
|---|---|---|---|---|
| 2024-06-05 | 19:06:00 |
Ktor是由Kotlin提供的一個framwork。 要在Android使用Ktor,需要在build.gradle加入以下的dependency:
implementation "io.ktor:ktor:1.2.5"
implementation "io.ktor:ktor-server-netty:1.2.5"
implementation "io.ktor:ktor-gson:1.2.5"
在packagingOptions裡,也需要加入以下的設定來必面編譯問題Ktor#^68d958 :
packagingOptions {
exclude 'META-INF/*'
}
在AndroidManifest.xml中,記得加入internet的權限:
<uses-permission android:name="android.permission.INTERNET"/>
然後就是HTTP Server的code了:
embeddedServer(Netty, 8080) {
install(ContentNegotiation) {
gson {}
}
routing {
get("/") {
call.respond(mapOf("message" to "Hello world"))
}
}
}.start(wait=true)
但是這段code會block,所以需要一個thread把它包起來:
Thread {
httpEngine = embeddedServer(Netty, 8080) {
install(ContentNegotiation) {
gson {}
}
routing {
get("/") {
call.respond(mapOf("message" to "Hello world"))
}
get("/say/{something}") {
call.respond(mapOf("message" to "You say: " + call.parameters["something"]))
activity?.findViewById<TextView>(R.id.textView)?.text = "You say: " + call.parameters["something"]
}
}
}.start(wait = false)
}.start()
參考來源
- 如果沒有這一段會產生如下錯誤 ^68d958
13 files found with path 'META-INF/INDEX.LIST'.
Adding a packagingOptions block may help, please refer to
https://developer.android.com/reference/tools/gradle-api/7.4/com/android/build/api/dsl/ResourcesPackagingOptions
for more information