草庐IT

华米ZeppOS小程序本地开发环境配置教程——使用Win10+VSCode

chengyu666 2023-03-28 原文

华米ZeppOS推出的时间不算长,网上配置环境的教程也不多。本人在配置环境过程中,前后花了两三天时间,踩了很多坑,特此写一篇教程,希望能帮助到想尝试ZeppOS小程序开发的朋友。

由于配套的开发工具还处于较快迭代阶段,本教程可能不适用于未来的版本,当前时间点为:2022.4

本教程发布于博客园,转载请先征得同意!

教程概要:

一、安装Ubuntu虚拟机

二、虚拟机内安装ZeppOS模拟器

三、宿主机安装vscode

四、宿主机安装zeos cli

五、在vscode内结合cli编写代码并调试

六、一些踩坑记录

一、安装Ubuntu虚拟机

进行小程序开发,调试是必不可少的。如果你有支持zeppos的设备,当然可以用设备实机调试。我估摸有设备的人应该是少数,所以需要安装模拟器。

目前,官方的模拟器仅支持Ubuntu系统,据说未来会有跨平台的模拟器。

如果你也爱折腾,可能会问:为什么不用Win10自带的wsl?为什么不装双系统?答案是:很可能折腾不好!很久以前刚接触Linux时,我尝试过双系统,然而放弃了;这两天在反复装了三次wsl2的Ubuntu之后,才终于搞好,容易有奇怪的问题,建议也别耗费这个时间。(当然wsl还是很好用的,只是模拟器暂时没有很好地适配。不支持systemctl命令等原因,使得wsl和独立安装的Ubuntu有所不同)

1. 下载虚拟机软件

个人习惯于用VMware Workstation 16 Player运行各种虚拟机,player版能免费用于非商业用途。官网

安装过程中,不要点得太快,看清楚了再下一步——因为如果你的win10开启了hyper-v功能,需要额外勾选一个自动安装WHP的复选框,才能让vmware正常运行。

2. 下载Ubuntu系统镜像

国内可去清华镜像站等处快速下载,建议下载lts版本。

3. 打开vmware,用镜像新建一个虚拟机

我的配置如图下图。网络连接模式,经测试桥接模式和NAT模式都可以连接到模拟器。该配置在安装完成后仍然可以修改。

 

4. 修改虚拟机apt源,加快下载

  打开终端,sudo su切到root,将/etc/apt/sources.list修改为:

 1 deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
 2 deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
 3 deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
 4 deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
 5 deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
 6 deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
 7 deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
 8 deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
 9 deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
10 deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

5. 更新软件

1 apt update
2 apt upgrade

二、虚拟机内安装ZeppOS模拟器

  是的,终于开始安装模拟器了,首先依照官网说明下载所需文件:

相关依赖

下载依赖安装脚本文件,并执行,等待相关依赖下载安装完成

模拟器安装

下载ZeppOS模拟器安装包,并安装

下载了setup.sh和deb安装包两个文件之后,以root身份运行setup.sh

sudo sh setup.sh

然后用dpkg安装simulator的deb包(包名换成你下载的版本

sudo dpkg -i simulator_1.0.7_amd64.deb

安装完成后,系统会出现一个叫simulator的应用,即为我们安装的zeppos模拟器。可以将图标固定到左侧导航栏方便使用。至此模拟器安装完成。点击即可打开模拟器,效果如下:

三、宿主机安装vscode

 这一步请直接百度

四、宿主机安装zeos cli

1. 安装nodejs和npm

安装包可至官网下载。不难,搞不好请自行百度。

需要注意的是,nodejs版本得高于12(还是10来着,记不清了),所以尽量下载更新的nodejs安装包。

安装完成后,检查nodejs和npm版本:

node -v
npm -v

我的node和npm版本如下:

2. 使用npm安装zeus cli

在终端内输入:

npm i @zeppos/zeus-cli -g

如果速度太慢,可以尝试使用cnpm替代npm,具体方法自行百度。有时网络问题会导致安装出错,需要重复几次安装。

3. 使用cli创建项目

这里直接引用官方文档

创建任务前,记得先将终端定位到想要创建项目的目录里。template那个选项选择helloworld,即可创建helloworld项目:

五、在vscode内结合cli编写代码并调试

 在刚刚新建的项目目录下打开vscode,并在vscode内新建终端:(下图中代码已非原始代码)

回到虚拟机内,打开终端,输入ifconfig,在如下位置找到虚拟机的ip,并复制:

 

在vscode终端输入:

zeus dev

启动调试,即可在虚拟机内的模拟器上运行自己创建的应用。初次启动时,会提示输入模拟器的ip,此时将刚刚在虚拟机里复制到的IP粘过来。

以后需要修改模拟器IP时,可使用如下命令:

//查看当前所有配置
zeus config list
//修改模拟器IP
zeus config set simulator_host=【刚刚复制的IP地址】

在模拟器中,按下键盘上home键解锁,进入应用列表,拖动到最下方即可见到自己的创建的应用:

至此,我们成功在Win10内用vscode连接到了Ubuntu虚拟机内的zeppos模拟器,并运行了自己创建的应用!

 

六、一些踩坑记录

  1. 如果在虚拟机内因为一些意外情况关了模拟器再重启,可能7650端口仍然会被占用。此时,用 lsof -i:7650查看占用端口进程的pid,再用kill -9 【pid】即可解除占用,再重新打开simulator。
  2. 在zeus dev运行起来后,一旦你的源文件有了改动,zeus就会自动构建、刷新模拟器。但在我的虚拟机中,如果源代码中出现错误,模拟器会闪退。此时即使在vscode里修正了错误并手动点击按钮打开模拟器,里面的应用很可能还是原来的,没刷新。这时只需要再稍动一下源代码,让zeus自己刷新就行。
  3. 增加新页面后,记得在app.json内注册,否则无法跳转。
  4. 如果增加了新的UI控件却没有显示,大概率是样式参数有错,需要细心检查
  5. 虚拟机的内存得大一些,经测试,4G内存时模拟器比较卡顿,5G内存或以上时比较流畅

 

有关华米ZeppOS小程序本地开发环境配置教程——使用Win10+VSCode的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐