1# CallUI 使用说明 2 3## 1. 代码使用 4### 1.1 代码下载 5#### 1.1.1 配置码云ssh 6(1)打开本地 git bash 窗口 7 8(2)进入到 .ssh 目录:cd ~/.ssh 9 10(3)找到 id_rsa.pub 文件:ls 11 12(4)查看公钥:cat id_rsa.pub 13 14(5)在码云(个人设置-安全设置-ssh公钥)中配置公钥 15 16 17 18#### 1.1.2下载代码 19 20(1)搜索并打开gitee,点击导航栏里面的开源软件,搜索openharmony,点击进入openharmony,搜索applications_call,下载地址[applications_call](https://gitee.com/openharmony/applications_call) 21 22(2)选择克隆/下载 - ssh方式 -复制下载地址 23 24(3)本机git bash 中执行: 25 26 ``` 27 git clone '复制的下载地址' 28 ``` 29 30 31 32### 1.2 环境搭建 33 34* 打开DevEco Studio链接下载安装,安装步骤及安装说明详见下载见官网 35 36 37## 2. 基础开发说明 38### 2.1 系统接口调用 39### 2.2 异步回调的使用 40- 在需要回调操作的ets文件中创建回调函数 41```JavaScript 42subscribeCallback(err, data) 43{ 44 // do something 45} 46``` 47- 调用应用内部封装的接口,并传入回调函数 48```JavaScript 49Notification.subscribe(mSubscriber, this.subscribeCallback.bind(this)); 50``` 51- 在AsyncCallback返回数据时可以获取到错误信息或目标数据 52```JavaScript 53subscribeCallback(err, data) 54{ 55 Log.showInfo(TAG, 'subscribeCallback finished ====================' + JSON.stringify(data)); 56} 57``` 58 59 60 61### 2.3 如何引用资源文件 62 63#### 2.3.1 访问系统资源 64 65``` 66this.title = this.$s('sys.type.name'); 67``` 68 69 70 71#### 2.3.2 访问应用资源 72 73* 将应用资源放在工程的resources/base/element文件夹下的对应 .json 文件中,可通过$r()的方式引用资源 74* 例如:引用字符串资源 75 76```` JavaScript 77this.title = this.$r('app.string.hello_world'); 78```` 79 80 81 82## 3. 典型接口的使用 83 84``` 85import dataStorage from '@ohos.data.storage'; 86 onCreate() { 87 LOG.info(TAG + 'AceApplication onCreate'); 88 this.initDataStorage(); 89 }, 90 async initDataStorage() { 91 let context = featureAbility.getContext(); 92 let path = await context.getFilesDir(); 93 this.globalData.storage = dataStorage.getStorageSync(path + this.globalData.path); 94 }, 95``` 96 97 98 99## 4. 签名打包 100 101### 4.1 签名 102(1)打开项目工程,选择 File → Project Structure 103 104 105 106 107 108(2)选择 Project → Signing Configs,添加StorePassword:123456abc,KeyPassword:123456abc, 109 依次填入下图中,完成后点击Apply,再点击OK 110 111 112 113 114 115(3)配置完成后,对应的build.gradle文件中会出现如下内容 116 117 118 119 120 121### 4.2 打包 122 123* DevEco Studio 支持 debug 与 release 两种打包类型。可以在 OhosBuild Variants 窗口中进行切换 124 125  126 127 128 129#### 4.2.1 debug打包 130 131(1)代码准备完成后,在 OhosBuild Variants 窗口的 Selected Variant 中选择 debug 132 133 134 135 136 137(2)选择Build → Build Haps(s)/APP(s) → Build Hap(s) 138 139 140 141 142 143(3)编译完成后,hap包会生成在工程目录下的 `\build\outputs\hap\debug\phone\`路径下(如果没有配置签名,则只会生成未签名的hap包) 144 145 146 147 148 149#### 4.2.2 release打包 150 151(1)代码准备完成后,在 OhosBuild Variants 窗口的 Selected Variant 中选择 release 152 153 154 155 156 157(2)选择Build → Build Haps(s)/APP(s) → Build Hap(s) 158 159 160 161 162 163(3)编译完成后,hap包会生成在工程目录下的 `\build\outputs\hap\release\phone\`路径下(配置好签名后,生成的hap包会显示signed) 164 165 166 167 168 169## 5. 安装、运行、调试 170 171### 5.1 应用安装 172(1)配置 hdc:进入SDK目录中的toolchains文件夹下,获取文件路径: 173 174 175 176> 注意,此处的hdc.exe如果版本较老,可能不能正常使用,需要获取新的hdc.exe文件 177> hdc命令介绍与下载详见:[hdc仓库地址](https://gitee.com/openharmony/developtools_hdc_standard) 178 179 180 181(2)并将此路径配置到环境变量中,重启电脑使环境变量生效 182 183 184 185 186 187(3)连接开发板,打开cmd命令窗口,执行hdc list targets,弹出窗口如下: 188 189 190 191 192 193(4)等待一段时间后,窗口出现如下打印,可回到输入 hdc list targets 的命令窗口继续操作 194 195 196 197 198 199(5)再次输入hdc list targets,出现如下结果,说明hdc连接成功 200 201 202 203 204 205(6)获取读写权限: 206 207``` 208hdc target mount 209``` 210 211 212(7)将签名好的 hap 包放入设备的 `/system/app` 目录下,并修改hap包的权限 213 214``` 215hdc file send 本地路径 /system/app/hap包名称 216例如:hdc file send CallUI.hap /system/app/CallUI.hap 217``` 218> 注意,如果设备不存在 `/system/app` 目录,则需要手动创建该目录并修改权限。 219> ``` 220> hdc shell 221> cd system 222> mkdir app 223> chmod 777 app 224> ``` 225> `/system/app` 目录放置系统应用,例如:CallUI等。 226> 227> 但hap包需要在该目录下手动设置权限 228> ``` 229> chmod 666 hap包名 230> ``` 231> 此目录应用不用手动安装,系统自动拉起。 232 233 234 235### 5.2 应用运行 236 237* applications_call属于系统应用,在将签名的 hap 包放入 `/system/app` 目录后,重启系统,应用会自动拉起 238 239``` 240hdc shell reboot 241``` 242> 注意,如果设备之前安装过系统应用,则需要执行如下两条命令清除设备中存储的应用信息才能够在设备重启的时候将我们装入设备的新 hap 包正常拉起。 243> 244> ``` 245> hdc shell "mount -o remount,rw /" 246> hdc shell rm -rf /system/app/hap包 247> hdc file send hap当前路径 /system/app/hap包 248> hdc shell "rm /data/* -rf" 249> hdc shell "sync" 250> hdc shell "/system/bin/udevadm trigger" 251> hdc shell "reboot" 252> ``` 253> 254 255 256 257### 5.3 应用调试 258 259#### 5.3.1 log打印 260- 在程序中添加 log 261```JS 262console.info("callui log info"); 263``` 264 265 266 267#### 5.3.2 log获取及过滤 268 269- log获取 270 271将log输出至文件 272``` 273hdc shell hilog > 输出文件名称 274``` 275 276例:在真实环境查看log,将全log输出到当前目录的hilog.log文件中 277``` 278hdc shell hilog > hilog.log 279``` 280 281 282 283- log过滤 284 285在命令行窗口中过滤log 286``` 287hilog │ grep 过滤信息 288``` 289 290例:过滤包含信息 Label 的 hilog 291``` 292hilog │ grep Label 293``` 294 295 296 297## 6. 贡献代码 298 299### 6.1 Fork 代码仓库 300(1)在码云上打开 applications_call代码仓库([仓库地址](https://gitee.com/openharmony/applications_call)) 301 302(2)点击仓库右上角的 Forked 按钮,在弹出的画面中,选择将仓库 fork 到个人仓,点击确认 303 304(3)Fork 成功之后,会在自己的账号下看见 fork 的代码仓库 305 306 307 308### 6.2 提交代码 309 310(1)访问我们自己在码云账号上 fork 的代码仓库,点击“克隆/下载”按钮,选择 SSH,点击“复制”按钮 311 312(2)在本地新建 CallUI文件夹,在 CallUI文件夹中执行如下命令 313``` 314git clone 步骤1中复制的地址 315``` 316 317(3)修改代码 318 319(4)提交代码到 fork 仓库。 320> 修改后的代码,使用git status 查看修改代码,执行 `git add` 命令,然后执行 `git commit` 命令与 `git push` 命令,将代码 push 到我们自己的 fork 仓中。关于代码提交的这部分内容涉及 git 的使用,可以参照 [git官网](https://git-scm.com/) 的内容,在此不再赘述。 321 322 323 324### 6.3 发起 Pull Request (PR) 325 326* 在将代码提交到 fork 仓之后,我们可以通过发起 Pull Request(PR)的方式来为 OpenHarmony 的相关项目贡献代码。 327 328(1)打开 fork 仓库。选择 `Pull Requests` → `新建 Pull Request` 329 330(2)在 `新建 Pull Request` 页面填入标题与说明,点击 `创建` 按钮 331 332(3)创建 Pull Request 完成。 PR 创建完成后,会有专门的代码审查人员对代码进行评审,评审通过之后会合入相应的代码库