Skip to content

Commit a94ee1b

Browse files
authored
Create README.md
0 parents  commit a94ee1b

File tree

1 file changed

+122
-0
lines changed

1 file changed

+122
-0
lines changed

README.md

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
# Kotlin-OHOS
2+
Kotlin native support for OpenHarmony OS and HarmonyOS
3+
4+
HarmonyOS Beta1刚出的时候,抽了一点时间适配了HarmonyOS的native target,没什么时间继续搞太多,抛砖引玉啦。
5+
仓库有点多,源代码还要整理下
6+
7+
### Kotlin
8+
- [x] Kotlin OHOS KN/Target
9+
- [x] konan-cli
10+
- [x] kotlin-compiler
11+
- [x] kotlin-gradle-plugin
12+
13+
### dependencies
14+
- [x] stdlib
15+
- [x] multiplatform
16+
- [x] kotlinx.coroutines
17+
- [x] kotlinx.serialization
18+
- [x] kotlinx-serialization-core
19+
- [x] kotlinx-serialization-bom
20+
- [x] kotlinx-serialization-bom
21+
- [x] kotlinx-serialization-hocon
22+
- [x] kotlinx-serialization-json
23+
- [x] kotlinx-serialization-json-io
24+
- [x] kotlinx-serialization-properties
25+
- [x] kotlinx-serialization-protobuf
26+
- [ ] kotlinx-serialization-json-okio
27+
- [x] kotlinx-datetime
28+
- [x] kotlinx-atomicfu
29+
- [x] kotlinx-io
30+
- [x] kotlinx-io-core
31+
- [x] kotlinx-io-bytestring
32+
- [x] binary-compatibility-validator
33+
34+
### platform libs
35+
- [x] posix
36+
- [x] log
37+
- [x] napi
38+
- [x] zlib
39+
- [ ] gles
40+
- [ ] sles
41+
- [ ] ar
42+
- [ ] xengine
43+
- [ ] graphics_game_sdk
44+
- [ ] RemoteCommunicationKit
45+
46+
### 食用方法
47+
目前prebuilt的都是基于HarmonyOS Beta1的command-line-tools进行编译的,在beta1上测试了一切正常,其他版本自行尝试。
48+
宿主机是M系列的电脑,x86 mac和windows/linux暂时没加支持,支持也简单,就是没时间
49+
50+
1. 去官网下载command-line-tools工具,或者已经下了DevEco-Studio也可以,将HarmonyOS的SDK的路径映射到`~/.konan/`目录下,没有这个目录就创建,最终的目录像这样
51+
`/Users/用户名/.konan/HarmonyOS-NEXT-DB1`
52+
53+
2. 解压`kotlin-native-prebuilt-macos-aarch64-2.1.255-SNAPSHOT.tar.gz`文件到`~/.konan/`目录下,最终的目录像这样
54+
`/Users/用户名/.konan/kotlin-native-prebuilt-macos-aarch64-2.1.255-SNAPSHOT`
55+
56+
4. 新建KMP Library工程,在`settings.gradle`仓库添加本地仓库地址,解压repo仓库,比如解压到Download文件夹了,那么就是
57+
58+
```
59+
pluginManagement {
60+
repositories {
61+
maven {
62+
url = uri("/Users/用户名/Downloads/repo")
63+
}
64+
mavenLocal()
65+
google()
66+
gradlePluginPortal()
67+
mavenCentral()
68+
}
69+
}
70+
71+
dependencyResolutionManagement {
72+
repositories {
73+
maven {
74+
url = uri("/Users/用户名/Downloads/repo")
75+
}
76+
mavenLocal()
77+
google()
78+
mavenCentral()
79+
}
80+
}
81+
```
82+
83+
3. 修改依赖版本,改成本地的snapshot版本
84+
```
85+
[versions]
86+
kotlin = "2.1.255-SNAPSHOT"
87+
kotlinxCoroutinesCore = "1.9.0-RC.2-SNAPSHOT"
88+
kotlinxDatetime = "0.6.1-SNAPSHOT"
89+
kotlinxIo = "0.6.0-SNAPSHOT"
90+
kotlinxSerialization = "1.7.3-SNAPSHOT"
91+
atomicfu = "0.25.0-SNAPSHOT"`
92+
93+
[libraries]
94+
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinxCoroutinesCore" }
95+
kotlinx-io-core = { module = "org.jetbrains.kotlinx:kotlinx-io-core", version.ref = "kotlinxIo" }
96+
kotlinx-io-bytestring = { module = "org.jetbrains.kotlinx:kotlinx-io-bytestring", version.ref = "kotlinxIo" }
97+
kotlinx-datetime = { module = "org.jetbrains.kotlinx:kotlinx-datetime", version.ref = "kotlinxDatetime" }
98+
kotlinx-serialization-core = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerialization" }
99+
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
100+
kotlin-atomicfu = { module = "org.jetbrains.kotlinx:atomicfu", version.ref = "atomicfu" }
101+
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
102+
```
103+
104+
4. shared模块build.gradle中添加harmonyOS target,如
105+
```
106+
harmonyOSArm64 {
107+
binaries.sharedLib {
108+
baseName = "hellokt"
109+
}
110+
}
111+
```
112+
113+
5. 在gradle task里构建,或者命令:
114+
```
115+
./gradlew shared:linkHarmonyOSArm64
116+
```
117+
Build成功的话,在shared/build/bin/harmonyOSArm64目录下会出现so文件和.h文件,可以在arkts中通过npai直接调用
118+
119+
注意,由于kotlin cinterop的要求,宿主机需要安装aarch64的Azul Zulu JDK8,详细可以去kotlin官方仓库查看
120+
121+
### 编译第三方库
122+
。。。

0 commit comments

Comments
 (0)