昨天(北京时间 2020年9月10日)华为鸿蒙OS 2.0正式发布,预计明年华为手机全面支持。同时公布了面向开发者的BATE版。
看了一下文档,同时支持java
和js
。那必须整一个试试。
安装 IDE
首先去官网下载HUAWEI DevEco Studio,目前只有windows
版。下载后解压安装。
jetbrains家的社区版,有那味了。
安装后直接启动:
因为都是jetbrains家的开源版,所以和android studio
基本一致。启动后发现现在只支持电视和可穿戴设备的模板,除了Lite
都提供了java
和js
的模板。在这我们新建一个可穿戴设备的模板:
目录结构如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222
| . └── HWDemo ├── HWDemo.iml ├── build │ └── outputs │ └── hap │ └── debug │ └── tv │ └── entry-debug-unsigned.hap ├── build.gradle ├── entry │ ├── build │ │ ├── generated │ │ │ └── source │ │ │ └── r │ │ │ └── ResourceTable.java │ │ ├── intermediates │ │ │ ├── dex │ │ │ │ └── debug │ │ │ │ └── classes.dex │ │ │ ├── external_libs │ │ │ │ └── debug │ │ │ │ ├── compile_libs_file.index │ │ │ │ └── package_libs_file.index │ │ │ ├── javac │ │ │ │ └── debug │ │ │ │ ├── classes │ │ │ │ │ ├── META-INF │ │ │ │ │ │ └── MANIFEST.MF │ │ │ │ │ ├── classes.jar │ │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── hwdemo │ │ │ │ │ ├── HWDemo.class │ │ │ │ │ ├── MainAbility.class │ │ │ │ │ └── ResourceTable.class │ │ │ │ └── java_file.index │ │ │ ├── merge_profile │ │ │ │ └── debug │ │ │ │ └── config.json │ │ │ ├── merge_res │ │ │ │ └── debug │ │ │ │ ├── merge_res_file.index │ │ │ │ └── original_res │ │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ │ └── icon.png │ │ │ │ └── values │ │ │ │ └── strings.xml │ │ │ ├── res │ │ │ │ └── debug │ │ │ │ ├── jsManifest │ │ │ │ │ └── default │ │ │ │ │ └── manifest.json │ │ │ │ ├── jsResources │ │ │ │ │ ├── base │ │ │ │ │ │ ├── element │ │ │ │ │ │ └── media │ │ │ │ │ │ └── icon.png │ │ │ │ │ └── rawfile │ │ │ │ └── rich │ │ │ │ ├── R.txt │ │ │ │ ├── assets │ │ │ │ │ └── js │ │ │ │ │ └── default │ │ │ │ │ ├── app.bin │ │ │ │ │ ├── app.js │ │ │ │ │ ├── app.js.map │ │ │ │ │ ├── common │ │ │ │ │ │ ├── img-large.png │ │ │ │ │ │ ├── img-small.png │ │ │ │ │ │ ├── logo.png │ │ │ │ │ │ ├── plus-black.png │ │ │ │ │ │ └── plus-white.png │ │ │ │ │ ├── i18n │ │ │ │ │ │ ├── en-US.json │ │ │ │ │ │ └── zh-CN.json │ │ │ │ │ ├── manifest.json │ │ │ │ │ └── pages │ │ │ │ │ └── index │ │ │ │ │ ├── index.bin │ │ │ │ │ ├── index.js │ │ │ │ │ └── index.js.map │ │ │ │ ├── config.json │ │ │ │ ├── resources │ │ │ │ │ ├── base │ │ │ │ │ │ └── media │ │ │ │ │ │ ├── attributes.key │ │ │ │ │ │ ├── constants.key │ │ │ │ │ │ ├── contents.key │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ └── nodes.key │ │ │ │ │ └── rawfile │ │ │ │ └── resources.index │ │ │ ├── shell │ │ │ │ ├── build │ │ │ │ │ ├── dex │ │ │ │ │ │ └── debug │ │ │ │ │ │ └── classes.dex │ │ │ │ │ ├── javac │ │ │ │ │ │ └── debug │ │ │ │ │ │ ├── classes │ │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── hwdemo │ │ │ │ │ │ │ ├── MainAbilityShellActivity.class │ │ │ │ │ │ │ ├── R$drawable.class │ │ │ │ │ │ │ ├── R$string.class │ │ │ │ │ │ │ ├── R.class │ │ │ │ │ │ │ └── ShellHWDemo.class │ │ │ │ │ │ ├── classes.jar │ │ │ │ │ │ └── index.txt │ │ │ │ │ ├── mergedManifest │ │ │ │ │ │ └── debug │ │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ │ ├── res │ │ │ │ │ │ └── debug │ │ │ │ │ │ ├── cut_entry │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ ├── classes.dex │ │ │ │ │ │ │ ├── res │ │ │ │ │ │ │ │ └── drawable │ │ │ │ │ │ │ │ └── icon.png │ │ │ │ │ │ │ └── resources.arsc │ │ │ │ │ │ ├── cut_entry.zip │ │ │ │ │ │ ├── entry │ │ │ │ │ │ │ ├── AndroidManifest.xml │ │ │ │ │ │ │ ├── classes.dex │ │ │ │ │ │ │ ├── res │ │ │ │ │ │ │ │ └── drawable │ │ │ │ │ │ │ │ └── icon.png │ │ │ │ │ │ │ └── resources.arsc │ │ │ │ │ │ ├── entry.zip │ │ │ │ │ │ ├── r │ │ │ │ │ │ │ └── com │ │ │ │ │ │ │ └── example │ │ │ │ │ │ │ └── hwdemo │ │ │ │ │ │ │ └── R.java │ │ │ │ │ │ └── res.zip │ │ │ │ │ └── simplifyManifest │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ └── src │ │ │ │ └── main │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── java │ │ │ │ │ └── com │ │ │ │ │ └── example │ │ │ │ │ └── hwdemo │ │ │ │ │ ├── MainAbilityShellActivity.java │ │ │ │ │ └── ShellHWDemo.java │ │ │ │ └── res │ │ │ │ ├── drawable │ │ │ │ │ └── icon.png │ │ │ │ └── values │ │ │ │ └── strings.xml │ │ │ └── shell_output │ │ │ └── debug │ │ │ ├── cut │ │ │ │ └── entry_unsigned_cut_entry.apk │ │ │ ├── entry_signed_entry.apk │ │ │ └── entry_unsigned_entry.apk │ │ └── outputs │ │ └── hap │ │ └── debug │ │ ├── entry-debug-unsigned.hap │ │ └── hapInfo.json │ ├── build.gradle │ ├── entry.iml │ ├── libs │ ├── node_modules │ ├── package.json │ └── src │ ├── main │ │ ├── config.json │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── hwdemo │ │ │ ├── HWDemo.java │ │ │ └── MainAbility.java │ │ ├── js │ │ │ └── default │ │ │ ├── app.js │ │ │ ├── common │ │ │ │ ├── img-large.png │ │ │ │ ├── img-small.png │ │ │ │ ├── logo.png │ │ │ │ ├── plus-black.png │ │ │ │ └── plus-white.png │ │ │ ├── i18n │ │ │ │ ├── en-US.json │ │ │ │ └── zh-CN.json │ │ │ └── pages │ │ │ └── index │ │ │ ├── index.css │ │ │ ├── index.hml │ │ │ └── index.js │ │ └── resources │ │ ├── base │ │ │ ├── element │ │ │ │ └── string.json │ │ │ └── media │ │ │ └── icon.png │ │ └── rawfile │ └── test │ └── java │ └── com │ └── example │ └── hwdemo │ └── MainAbilityTest.java ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── local.properties ├── settings.gradle └── tree.txt
118 directories, 101 files
|
新建项目后需要等待安装SDK
,在这不得不吐槽一下,都是huawei.com
的地址了速度居然慢到爆炸,挂了代理速度才上来,ping
了一下是北京华为云的服务器,真是实力劝退。
等待结束后就可以下一步了。
开启虚拟机
在菜单中选中Tools>HVD Manager
首次开启需要下载资源。下载成功后点击Refresh
会在浏览器中弹出登陆页面。
如果你没注册过华为的开发者账号那就打开Chrome
的无痕窗口或者其他浏览器进行实名注册。这一步的原因是他这个验证有BUG,会一直跳转实名注册》验证成功》登陆成功》没了???
在这还得吐槽一下,实名认证你要我银行卡号干什么?要给我打钱吗?
登陆成功后就会刷新出列表,只有两个机器,一个是TV
的一个是可穿戴设备的。在这我们选择可穿戴设备的虚拟机。
Hello World
虚拟机开启后新建的模板自带一个Hello World
的Demo
。js
开发相关的文件在项目目录/entry/src/main/js
里面,修改entry/src/main/js/default/pages/index
下的hml
,css
,js
文件并重新运行就可以看见效果了。
在安装依赖的时候发现了uni
相关的内容。而且点击运行就可以出现效果,估计js
开发的内容也是运行在webview
里的。
体验
没啥好说的,做开发的都明白。反正Linux
是开源的Android
也是开源的,基于Linux
是系统基于Android
的当然也可以叫系统(OS)。别的不说,营销是真恶心。
一波体验下来Flutter
恐成最大赢家。最大输家应该就是华为云了,真是实力劝退🐶。
希望鸿蒙能做起来,这样又有新饭恰了。
不说了,学Dart
去了。