这几天小米手环特别火,感谢大佬的小程序上传工具,让我可以好好折腾这个设备,在ZeppOS官网找到相关开发教程和资源后,顺便把手环的固件做了一下逆向,发现其有一套算是较为完整的QuickJS环境(下图是固件中系统初始化时加载的js模块)。
因为开发比较简单,开发环境可以在其官网上找到,所以在这介绍一下如何开发
先附上相关链接
ZeppOS API开发文档
做手环的仿真开发首先需要安装模拟器(下载地址),模拟器基于qeum实现(在折腾的过程中发现其貌似存在一个letter Shell,但是我没能成功交互)
![1657869279652.png 1657869279652.png](https://www.bandbbs.cn/data/attachments/13/13469-e4c999005113738c9198f96f6beac96b.jpg?hash=5MmZAFETc4)
详细安装步骤参照:官网安装教程,安装完成后运行效果如下(记得用管理员身份运行)
![1657869453389.png 1657869453389.png](https://www.bandbbs.cn/data/attachments/13/13470-d3f31fd70a874f9249a343a32dff9cae.jpg?hash=0_Mf1wqHT5)
在整个开发环境的搭建中,模拟器是必须安装的,后期模拟仿真会通过访问本机的127.0.0.1:7650端口进行操作,因为其是必要的仿真环境,随后就可以对编程环境进行配置,官方提供了两种方式进行开发,一种是在线Studio(其实就是浏览器版本的Visual Studio)(在线Studio教程),另一种是本地编译环境zeus(zeus安装教程),详细安装过程就参照官网给的进行配置即可
在线Studio使用很简单,打开Studio网址
![1657869914610.png 1657869914610.png](https://www.bandbbs.cn/data/attachments/13/13472-1e20bd3164e50c1dca2ea5e6e92ff137.jpg?hash=HiC9MWTlDB)
选择创建项目,填写项目名称,选择Hello World例子,点击Create
![1657869941382.png 1657869941382.png](https://www.bandbbs.cn/data/attachments/13/13473-3f76a3870bcdd80dd93d530414c596dd.jpg?hash=P3ajhwvN2A)
创建完成后会看到如图所示的目录结构
![1657870043484.png 1657870043484.png](https://www.bandbbs.cn/data/attachments/13/13474-57c2e3113492bd9fde6dcb2029aa66e8.jpg?hash=V8LjETSSvZ)
其中pages目录下就是APP每个页面的代码,settings和app-side小米手环7无法使用,不用管就行(Zepp官方开发的时候允许让部分代码在手机上跑,也就是setting和app-side,用来当手环和外界的桥梁,反正我是这么理解的,但是要用这个需要Zepp这个app的开发者模式,小米手环7用的Zepp Life是阉割版,没这功能)
此时我们尝试仿真代码,首先启动simulator(模拟器)
![1657870268667.png 1657870268667.png](https://www.bandbbs.cn/data/attachments/13/13475-630604aa53a46f94fdab4a0380aa53ca.jpg?hash=YwYEqlOkb5)
点击Simulator
![1657870294640.png 1657870294640.png](https://www.bandbbs.cn/data/attachments/13/13477-9e03e0a13de3e8442740c82969ed5675.jpg?hash=ngPgoT3j6E)
此时就会出现如下页面
![1657870375653.png 1657870375653.png](https://www.bandbbs.cn/data/attachments/13/13478-57442ea3050355eb9f264db5a53b508c.jpg?hash=V0QuowUDVe)
此时回到在线Studio,点击红圈
![1657870426589.png 1657870426589.png](https://www.bandbbs.cn/data/attachments/13/13479-8e2960b4707944411304b73d8825678b.jpg?hash=jilgtHB5RE)
变绿证明已连接上模拟器(这边建议用Chrome,有时候火狐的CORS策略会影响连接)
![1657870467196.png 1657870467196.png](https://www.bandbbs.cn/data/attachments/13/13480-f6153d115c7904c6309dff25bef33cbb.jpg?hash=9hU9EVx5BM)
此时点击绿三角,窗口右下角提示
![1657870524200.png 1657870524200.png](https://www.bandbbs.cn/data/attachments/13/13481-fb746d92f0d172e35f81f2ebe2925d65.jpg?hash=-3RtkvDRcu)
并且模拟器的App中出现
![1657870544237.png 1657870544237.png](https://www.bandbbs.cn/data/attachments/13/13482-7786d673187faaede82c274101fa706a.jpg?hash=d4bWcxh_qu)
此时回到qeum,鼠标点击屏幕(焦点移动到qemu中),按HOME键(这里我卡了将近一天,一直不知道HOME键唤起菜单,之前一直以为自己的环境装的有问题)
![1657870566639.png 1657870566639.png](https://www.bandbbs.cn/data/attachments/13/13483-a58d087cde69d96f61b7064214f5ed00.jpg?hash=pY0IfN5p2W)
此时就能看到我们的APP
![1657870640480.png 1657870640480.png](https://www.bandbbs.cn/data/attachments/13/13484-5fcbee7f0b82c34603009a31566596f9.jpg?hash=X8vufwuCw0)
点击APP,可以看到日志窗口中出现了内容
![1657870802160.png 1657870802160.png](https://www.bandbbs.cn/data/attachments/13/13485-fbec51ccf7955b3fbe920901b8b6a866.jpg?hash=--xRzPeVWz)
不要问我为啥窗口上没显示(黑屏),问就是看源码,这个例子压根没渲染控件
![1657870838884.png 1657870838884.png](https://www.bandbbs.cn/data/attachments/13/13486-6d9eef9abd690e975b1f93b086142f1e.jpg?hash=bZ7vmr1pDp)
我们手动改一下代码
加几行
改成这样,在运行一次
![1657870946592.png 1657870946592.png](https://www.bandbbs.cn/data/attachments/13/13487-0956720bd4b757eda4da00dd89c51541.jpg?hash=CVZyC9S3V-)
成功渲染显示
![1657870984646.png 1657870984646.png](https://www.bandbbs.cn/data/attachments/13/13488-5752b7c15b8d3a0353664e60b32bde52.jpg?hash=V1K3wVuNOg)
然后写好的代码工程如何导出?(看图,懂~?)
![1657871065176.png 1657871065176.png](https://www.bandbbs.cn/data/attachments/13/13489-1be10b8bacdad3af06a1beb204aa2f51.jpg?hash=G-ELi6za06)
下载下来之后,重命名成zip,解压
![1657871108821.png 1657871108821.png](https://www.bandbbs.cn/data/attachments/13/13490-9052d50681ccc097aba8b2384f70e397.jpg?hash=kFLVBoHMwJ)
再解压
![1657871129759.png 1657871129759.png](https://www.bandbbs.cn/data/attachments/13/13491-1934f75654085072a51d046573624f36.jpg?hash=GTT3VlQIUH)
这个device.zip就是咱们要的包,直接用大佬们的app上传到手环上就能跑了。
都到这了,就不用我说了吧,极客们,开始干活吧
对了,稍微注意一下,因为官方模拟中是不支持小米手环7的,所以在设计控件的时候,记得限制宽高
![1657871269141.png 1657871269141.png](https://www.bandbbs.cn/data/attachments/13/13492-b85c9e3c8e1ff46c6661713e8340f731.jpg?hash=uFyePI4f9G)
ps:我选用了本地ZEUS方式安装环境(在线环境有时候会出bug,导致编译失败,但是在线Studio提供了一个代码仓库,可以在线保存),也支持vscode插件,详细配置过程按照官网教程即可,这里就不再赘述了
![1657869822139.png 1657869822139.png](https://www.bandbbs.cn/data/attachments/13/13471-825750429c8813367cafc7bb2143a6ff.jpg?hash=gldQQpyIEz)
![1657868915663.png 1657868915663.png](https://www.bandbbs.cn/data/attachments/13/13468-41164bc9bbec516c164c86bc06cb29b6.jpg?hash=QRZLybvsUW)
先附上相关链接
ZeppOS API开发文档
做手环的仿真开发首先需要安装模拟器(下载地址),模拟器基于qeum实现(在折腾的过程中发现其貌似存在一个letter Shell,但是我没能成功交互)
![1657869279652.png 1657869279652.png](https://www.bandbbs.cn/data/attachments/13/13469-e4c999005113738c9198f96f6beac96b.jpg?hash=5MmZAFETc4)
详细安装步骤参照:官网安装教程,安装完成后运行效果如下(记得用管理员身份运行)
![1657869453389.png 1657869453389.png](https://www.bandbbs.cn/data/attachments/13/13470-d3f31fd70a874f9249a343a32dff9cae.jpg?hash=0_Mf1wqHT5)
在整个开发环境的搭建中,模拟器是必须安装的,后期模拟仿真会通过访问本机的127.0.0.1:7650端口进行操作,因为其是必要的仿真环境,随后就可以对编程环境进行配置,官方提供了两种方式进行开发,一种是在线Studio(其实就是浏览器版本的Visual Studio)(在线Studio教程),另一种是本地编译环境zeus(zeus安装教程),详细安装过程就参照官网给的进行配置即可
在线Studio使用很简单,打开Studio网址
![1657869914610.png 1657869914610.png](https://www.bandbbs.cn/data/attachments/13/13472-1e20bd3164e50c1dca2ea5e6e92ff137.jpg?hash=HiC9MWTlDB)
选择创建项目,填写项目名称,选择Hello World例子,点击Create
![1657869941382.png 1657869941382.png](https://www.bandbbs.cn/data/attachments/13/13473-3f76a3870bcdd80dd93d530414c596dd.jpg?hash=P3ajhwvN2A)
创建完成后会看到如图所示的目录结构
![1657870043484.png 1657870043484.png](https://www.bandbbs.cn/data/attachments/13/13474-57c2e3113492bd9fde6dcb2029aa66e8.jpg?hash=V8LjETSSvZ)
其中pages目录下就是APP每个页面的代码,settings和app-side小米手环7无法使用,不用管就行(Zepp官方开发的时候允许让部分代码在手机上跑,也就是setting和app-side,用来当手环和外界的桥梁,反正我是这么理解的,但是要用这个需要Zepp这个app的开发者模式,小米手环7用的Zepp Life是阉割版,没这功能)
此时我们尝试仿真代码,首先启动simulator(模拟器)
![1657870268667.png 1657870268667.png](https://www.bandbbs.cn/data/attachments/13/13475-630604aa53a46f94fdab4a0380aa53ca.jpg?hash=YwYEqlOkb5)
点击Simulator
![1657870294640.png 1657870294640.png](https://www.bandbbs.cn/data/attachments/13/13477-9e03e0a13de3e8442740c82969ed5675.jpg?hash=ngPgoT3j6E)
此时就会出现如下页面
![1657870375653.png 1657870375653.png](https://www.bandbbs.cn/data/attachments/13/13478-57442ea3050355eb9f264db5a53b508c.jpg?hash=V0QuowUDVe)
此时回到在线Studio,点击红圈
![1657870426589.png 1657870426589.png](https://www.bandbbs.cn/data/attachments/13/13479-8e2960b4707944411304b73d8825678b.jpg?hash=jilgtHB5RE)
变绿证明已连接上模拟器(这边建议用Chrome,有时候火狐的CORS策略会影响连接)
![1657870467196.png 1657870467196.png](https://www.bandbbs.cn/data/attachments/13/13480-f6153d115c7904c6309dff25bef33cbb.jpg?hash=9hU9EVx5BM)
此时点击绿三角,窗口右下角提示
![1657870524200.png 1657870524200.png](https://www.bandbbs.cn/data/attachments/13/13481-fb746d92f0d172e35f81f2ebe2925d65.jpg?hash=-3RtkvDRcu)
并且模拟器的App中出现
![1657870544237.png 1657870544237.png](https://www.bandbbs.cn/data/attachments/13/13482-7786d673187faaede82c274101fa706a.jpg?hash=d4bWcxh_qu)
此时回到qeum,鼠标点击屏幕(焦点移动到qemu中),按HOME键(这里我卡了将近一天,一直不知道HOME键唤起菜单,之前一直以为自己的环境装的有问题)
![1657870566639.png 1657870566639.png](https://www.bandbbs.cn/data/attachments/13/13483-a58d087cde69d96f61b7064214f5ed00.jpg?hash=pY0IfN5p2W)
此时就能看到我们的APP
![1657870640480.png 1657870640480.png](https://www.bandbbs.cn/data/attachments/13/13484-5fcbee7f0b82c34603009a31566596f9.jpg?hash=X8vufwuCw0)
点击APP,可以看到日志窗口中出现了内容
![1657870802160.png 1657870802160.png](https://www.bandbbs.cn/data/attachments/13/13485-fbec51ccf7955b3fbe920901b8b6a866.jpg?hash=--xRzPeVWz)
不要问我为啥窗口上没显示(黑屏),问就是看源码,这个例子压根没渲染控件
![1657870838884.png 1657870838884.png](https://www.bandbbs.cn/data/attachments/13/13486-6d9eef9abd690e975b1f93b086142f1e.jpg?hash=bZ7vmr1pDp)
我们手动改一下代码
加几行
JavaScript:
const text = hmUI.createWidget(hmUI.widget.TEXT, {
x: 96,
y: 120,
w: 288,
h: 46,
color: 0xffffff,
text_size: 36,
align_h: hmUI.align.CENTER_H,
align_v: hmUI.align.CENTER_V,
text_style: hmUI.text_style.NONE,
text: 'HELLO NEKOKAMI'
})
![1657870946592.png 1657870946592.png](https://www.bandbbs.cn/data/attachments/13/13487-0956720bd4b757eda4da00dd89c51541.jpg?hash=CVZyC9S3V-)
成功渲染显示
![1657870984646.png 1657870984646.png](https://www.bandbbs.cn/data/attachments/13/13488-5752b7c15b8d3a0353664e60b32bde52.jpg?hash=V1K3wVuNOg)
然后写好的代码工程如何导出?(看图,懂~?)
![1657871065176.png 1657871065176.png](https://www.bandbbs.cn/data/attachments/13/13489-1be10b8bacdad3af06a1beb204aa2f51.jpg?hash=G-ELi6za06)
下载下来之后,重命名成zip,解压
![1657871108821.png 1657871108821.png](https://www.bandbbs.cn/data/attachments/13/13490-9052d50681ccc097aba8b2384f70e397.jpg?hash=kFLVBoHMwJ)
再解压
![1657871129759.png 1657871129759.png](https://www.bandbbs.cn/data/attachments/13/13491-1934f75654085072a51d046573624f36.jpg?hash=GTT3VlQIUH)
这个device.zip就是咱们要的包,直接用大佬们的app上传到手环上就能跑了。
都到这了,就不用我说了吧,极客们,开始干活吧
对了,稍微注意一下,因为官方模拟中是不支持小米手环7的,所以在设计控件的时候,记得限制宽高
![1657871269141.png 1657871269141.png](https://www.bandbbs.cn/data/attachments/13/13492-b85c9e3c8e1ff46c6661713e8340f731.jpg?hash=uFyePI4f9G)
ps:我选用了本地ZEUS方式安装环境(在线环境有时候会出bug,导致编译失败,但是在线Studio提供了一个代码仓库,可以在线保存),也支持vscode插件,详细配置过程按照官网教程即可,这里就不再赘述了
![1657869822139.png 1657869822139.png](https://www.bandbbs.cn/data/attachments/13/13471-825750429c8813367cafc7bb2143a6ff.jpg?hash=gldQQpyIEz)