简介
本节介绍如何对 ESP RainMaker Home 示例应用进行基础自定义,包括更换应用图标和设置品牌主题色,以实现个性化品牌展示。
如果你已经试用过示例 ESP RainMaker Home 应用,发现其功能足以满足需求,可以使用产品图标进行重新品牌化,更改颜色主题以适配品牌色彩,并配置公司的隐私政策和产品使用条款。请确保适当遵守许可条款和条件。
前提条件
假设你已经准备好应用开发环境。请按照说明设置开发环境。以下所有参考内容均基于克隆自 GitHub 的 ESP RainMaker Home 示例应用源码仓库。
品牌自定义
可以自定义品牌图标、启动画面以及其他图片和资源。
自定义应用图标和图片
- 应用图标位于
assets/images/文件夹中,请用自定义品牌图标替换。 - 应用设备图标位于
assets/images/devices/文件夹中。 - 添加自定义品牌资源。
图标和资源文件的配置和路径在 app.json 文件中维护。
自定义启动画面
针对不同平台,启动画面资源保存在不同目录中。
可以在 app.json 文件中配置启动画面行为:
{
"expo": {
"plugins": [
[
"expo-splash-screen",
{
"image": "./assets/images/logo.png",
"imageWidth": 200,
"resizeMode": "contain",
"backgroundColor": "#ffffff"
}
]
]
}
}
应用名称和元数据自定义
可以修改 app.json 文件中的应用名称和包标识符,以自定义应用名称和其他应用元数据:
{
"expo": {
"name": "Your Custom App Name",
"slug": "your-custom-slug",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.yourcompany.yourapp"
},
"android": {
"package": "com.yourcompany.yourapp"
}
}
}
主题自定义——品牌化
用户可以基于主题品牌化的需求来自定义颜色、排版、间距和动画。
自定义品牌主题色
主题颜色在 theme/tokens.ts 文件中定义:
const themes = {
light: {
colors: {
white: "#ffffff",
black: "#2c3e50",
bluetooth: "#2c5aa0",
gray: "#7f8c8d",
lightGray: "#bdc3c7",
red: "#e74c3c",
orange: "#f39c12",
blue: "#2c5aa0",
green: "#27ae60",
yellow: "#f1c40f",
lightBlue: "rgba(44, 90, 160, .3)",
bg: "#f5f6f7",
bg1: "#e8eef7",
bg2: "#d4e0f0",
bg3: "#b0c7e3",
bg4: "rgba(44, 90, 160, 0.15)",
bg5: "#f8f9fa",
borderColor: "rgba(218, 218, 218, 0.62)",
darkBorderColor: "#cbd5e1",
primary: "#2c5aa0",
text_primary: "#1e293b",
text_primary_light: "#334155",
text_primary_dark: "#0f172a",
text_secondary: "#64748b",
text_secondary_light: "#475569",
text_secondary_dark: "#334155",
warn: "#b25b00",
error: "#b71c1c",
success: "#237804",
warnBg: "#FFF4D6",
errorBg: "#FADADA",
successBg: "#D9F7BE",
},
},
dark: {
colors: {
// 暗色主题颜色...
},
},
};
自定义排版样式
排版和间距使用 utils/styling.ts 中定义的响应式缩放函数:
import { scale, verticalScale } from "@/utils/styling";
// 排版使用响应式缩放
export const tokens = {
fontSize: {
xs: scale(12),
sm: scale(14),
_15: scale(15),
md: scale(16),
lg: scale(18),
xl: scale(22),
},
fonts: {
regular: "'Poppins-Regular', 'Avenir', Helvetica, Arial, sans-serif",
medium: "'Poppins-Medium', 'Avenir', Helvetica, Arial, sans-serif",
},
radius: {
sm: verticalScale(10),
md: verticalScale(16),
},
spacing: {
_5: scale(5),
_10: scale(10),
_15: scale(15),
_20: scale(20),
_30: scale(30),
_40: scale(40),
},
border: {
defaultWidth: 1.5,
},
};

