Android/鸿蒙应用的资源配置技巧

HarmonyOS NEXT的发布是一道分界线,它将脱离安卓架构,成为真正独立的操作系统,也被称为"纯血鸿蒙"。

目前已有多家头部企业正加速鸿蒙原生应用开发,包括支付宝、美团、京东、钉钉、小红书、新浪、网易等,覆盖便捷生活、出行文旅、金融便利、社交资讯、生产力工具、影音娱乐、游戏等领域,鸿蒙原生应用版图已基本成形。

对于我们开发者而言,也许是又一次技术升级。随着纯血鸿蒙的横空出世,国内厂商适配鸿蒙的热情空前高涨。

今天遇到个有趣的问题,特此记录一下。

相信大家对于Android项目 中的颜色资源并不陌生,如下图所示:

而鸿蒙项目中的颜色资源是以这种方式存在的,如下图所示:

如果从项目中手动处理这些资源,那将是费时费力还不讨好。

这就需要用脚本来处理。

shell 复制代码
#!/bin/bash

# 设置输入和输出文件
INPUT_FILE="/Users/XXX/src/main/res/values/colors.xml"
OUTPUT_FILE="colors.json"

# 开始生成 JSON
echo '{"color": [' > "$OUTPUT_FILE"

# 解析 XML 文件并生成 JSON
xmllint --xpath "//color" "$INPUT_FILE" | while read -r line; do
    # 提取 name 和 value
    name=$(echo "$line" | sed -n 's/.*name="\([^"]*\)".*/\1/p')
    value=$(echo "$line" | sed -n 's/.*>\(.*\)<.*/\1/p')

    # 添加到 JSON 数组
    echo "  {\"name\": \"$name\", \"value\": \"$value\"}," >> "$OUTPUT_FILE"
done

# 移除最后一个逗号
sed -i '' -e '$ s/,$//' "$OUTPUT_FILE"

# 结束 JSON 数组
echo "]}" >> "$OUTPUT_FILE"

echo "转换完成,输出文件为 $OUTPUT_FILE"

机智的你发现字符串也一样可以这样做,只需对上述脚本做些许改动即可。


shell 复制代码
#!/bin/bash

# 设置输入和输出文件
INPUT_FILE="/Users/XXX/src/main/res/values/strings.xml"
OUTPUT_FILE="strings.json"

# 开始生成 JSON
echo '{"string": [' > "$OUTPUT_FILE"

# 解析 XML 文件并生成 JSON
xmllint --xpath "//string" "$INPUT_FILE" | while read -r line; do
    # 提取 name 和 value
    name=$(echo "$line" | sed -n 's/.*name="\([^"]*\)".*/\1/p')
    value=$(echo "$line" | sed -n 's/.*>\(.*\)<.*/\1/p')

    # 添加到 JSON 数组
    echo "  {\"name\": \"$name\", \"value\": \"$value\"}," >> "$OUTPUT_FILE"
done

# 移除最后一个逗号
sed -i '' -e '$ s/,$//' "$OUTPUT_FILE"

# 结束 JSON 数组
echo "]}" >> "$OUTPUT_FILE"

echo "转换完成,输出文件为 $OUTPUT_FILE"

这样我们就轻松地完成了从Android到鸿蒙的资源迁移。

接下来就是正常的业务开发啦。

相关推荐
dancing9991 小时前
Android Studio中Gradle 7.0上下项目配置及镜像修改
android·ide·android studio
Huang兄2 小时前
#跟着若城学鸿蒙# 鸿蒙-卡证识别
harmonyos
EQ-雪梨蛋花汤2 小时前
【Part 2安卓原生360°VR播放器开发实战】第四节|安卓VR播放器性能优化与设备适配
android·性能优化·vr
每次的天空3 小时前
Android学习总结之kotlin篇(二)
android·学习·kotlin
刘洋浪子3 小时前
Android Studio中Gradle中Task列表显示不全解决方案
android·ide·android studio
橙子199110163 小时前
Kotlin 中 infix 关键字的原理和使用场景
android·开发语言·kotlin
后端码匠9 小时前
MySQL 8.0安装(压缩包方式)
android·mysql·adb
梓仁沐白11 小时前
Android清单文件
android
SuperHeroWu711 小时前
【HarmonyOS 5】鸿蒙碰一碰分享功能开发指南
华为·harmonyos·应用·分享·碰一碰
lqj_本人13 小时前
鸿蒙OS&UniApp 制作动态加载的瀑布流布局#三方框架 #Uniapp
uni-app·harmonyos