部署到 HarmonyOS
FSD_Cangjie 可交叉编译到 HarmonyOS(aarch64),在鸿蒙设备上作为原生服务运行。
交叉编译
准备 OpenHarmony 版仓颉工具链与 sysroot(来自 DevEco Studio SDK),然后:
bash
source ~/cangjie-ohos/cangjie/envsetup.sh
export CANGJIE_STDX_PATH=~/cangjie-stdx-ohos/linux_ohos_aarch64_cjnative/static/stdx
cjpm build --target aarch64-linux-ohos1
2
3
4
2
3
4
产物为 aarch64 目标二进制。
配置注意
cjpm.toml 的值中不能出现 $(如 $ORIGIN),否则会报 contains illegal characters。 需要使用 LD_LIBRARY_PATH 时,请改用包装脚本(在脚本里 export 后 exec),而不是写进 cjpm.toml。
签名
鸿蒙要求可执行二进制与所有 .so 都签名(.bc/.cjo/.a 无需):
bash
"$DEVECO/jbr/bin/java.exe" -jar "$DEVECO/sdk/default/openharmony/toolchains/lib/binary-sign-tool.jar" \
sign -selfSign 1 -inFile <文件> -outFile <文件>1
2
2
部署到设备
用 hdc 推送(示例设备:192.168.x.x:43679):
bash
hdc file send FSD_Cangjie_HarmonyOS.tar.gz /data/.../用户主目录/1
运行位置
/data/local/tmp 不允许执行 ELF(仅脚本可执行),请把程序放到用户主目录再运行。 若用 DevEco 推送,文件属主会变为 file_manager 导致无法 chmod——正确做法是把 .tar.gz 放到主目录,在设备 shell(HiShell)里解包。
运行与管理
bash
cd ~/fsd
./fsd_d.sh1
2
2
设备自带 /bin/telnet,连接系统管理口:
bash
telnet 127.0.0.1 30101
TIP
telnet 的端口参数用空格分隔(telnet 127.0.0.1 3010),不要写成 127.0.0.1:3010。