1# AdminProvisioning 使用说明 2## 代码使用 3### 代码下载 4#### 配置码云ssh 51. 打开本地git bash窗口。 62. 进入到.ssh 目录:```cd ~/.ssh```。 73. 找到id_rsa.pub文件:```ls```。 84. 查看公钥:```cat id_rsa.pub```。 95. 在码云个人设置-安全设置-ssh公钥中配置公钥。 10 11#### 下载代码 121. 打开码云AdminProvisioning地址([下载地址](https://gitee.com/openharmony/applications_admin_provisioning))。 132. 选择克隆/下载 - ssh方式 -复制下载地址。 14 15  16 173. 本机git bash 中执行。 18 ``` 19 git clone '复制的下载地址' 20 ``` 21 22### 环境搭建 23打开DevEco Studio链接下载安装,安装步骤及安装说明详见开发者网站。 24 25## 基础开发说明 26### 系统接口调用 27#### NAPI接口集成 281. 导入指定模块。 29 ``` JavaScript 30 import bundle from '@ohos.bundle'; 31 ``` 322. 调用模块中的相应函数。 33 ``` JavaScript 34 bundle.getApplicationInfos().then(data => { 35 36 }); 37 ``` 38### 异步回调的使用 391. 在需要回调操作的ets文件中创建回调函数。 40 ```JavaScript 41 subscribeCallback(err, data){ 42 // do something 43 }, 44 ``` 452. 调用应用内部封装的接口,并传入回调函数。 46 ```JavaScript 47 Notification.subscribe(mSubscriber, this.subscribeCallback.bind(this)); 48 ``` 493. 在AsyncCallback返回数据时可以获取到错误信息或目标数据。 50 ```JavaScript 51 subscribeCallback(err, data) { 52 Log.showInfo(TAG, 'subscribeCallback finished ====================' + JSON.stringify(data)); 53 } 54 ``` 55### 如何引用资源文件 56在.ets文件中,可直接通过$r()引用资源。 57``` JavaScript 58 this.title = this.$r('app.string.hello_world'); 59``` 60 61## 典型接口的使用 621. 获取电池状态接口。 63 ``` JavaScript 64 import BatteryInfo from '@ohos.batteryInfo' 65 // 根据TS的文件描述,获取对应的电池属性 66 67 batterySOC = BatteryInfo.batterySOC; // 电池剩余电量 0~100; 68 batteryCharging = BatteryInfo.chargingStatus; // 电池充电状态 69 ``` 702. 返回按键。 71 ``` JavaScript 72 import input from '@ohos.injectEventHandler' 73 // 在触摸开始及结束时分别调用 74 onTouchStart(){ 75 let res = input.injectEventSync({ 76 isPressed: true, // 是否为按下 77 keyCode: 2, // 对应code 78 keyDownDuration: 1 // keydown 时长 79 }); 80 }, 81 onTouchStop(){ 82 let res = input.injectEventSync({ 83 isPressed: false, // 是否为按下 84 keyCode: 2, // 对应code 85 keyDownDuration: 1 // keydown 时长 86 }); 87 } 88 ``` 89## 签名打包 90### 签名 91#### 签名文件的获取 921. 拷贝OpenHarmony标准版 工程的 prebuilts\signcenter 目录到操作目录。 932. 拷贝AdminProvisioning工程的 signature\adminprovisioning.p7b 到该目录下。 94#### 签名文件的配置 951. 打开项目工程,选择 File → Project Structure。 96 97  98 992. 选择 Project → Signing Configs,将对应的签名文件配置如下,完成后点击Apply,再点击OK。 100 101  102 1033. 配置完成后,对应的build.gradle文件中会出现如下内容。 104 105  106### 打包 107DevEco Studio 支持 debug 与 release 两种打包类型。可以在 OhosBuild Variants 窗口中进行切换。 108 109  110 111#### debug打包 1121. 代码准备完成后,在 OhosBuild Variants 窗口的 Selected Variant 中选择 debug。 113 114  115 1162. 选择Build → Build Haps(s)/APP(s) → Build Hap(s)。 117 118  119 1203. 编译完成后,hap包会生成在工程目录下的 `\build\outputs\hap\debug\phone\`路径下(如果没有配置签名,则只会生成未签名的hap包)。 121 122  123#### release打包 1241. 代码准备完成后,在 OhosBuild Variants 窗口的 Selected Variant 中选择 release。 125 126  127 1282. 选择Build → Build Haps(s)/APP(s) → Build Hap(s)。 129 130  131 1323. 编译完成后,hap包会生成在工程目录下的 `\build\outputs\hap\release\phone\`路径下(配置好签名后,生成的hap包会显示signed)。 133 134  135## 安装、运行、调试 136### 应用安装 1371. 配置 hdc:进入SDK目录中的toolchains文件夹下,获取文件路径。 138 139  140 141>  **说明:** 142> 若此处的hdc.exe版本较老,可能不能正常使用,需要获取新的hdc.exe文件。hdc命令介绍与下载详见:[hdc仓库地址](https://gitee.com/openharmony/developtools_hdc_standard) 143 144 1452. 并将此路径配置到环境变量中。 146 147  148 1493. 重启电脑使环境变量生效。 150 1514. 连接开发板,打开cmd命令窗口,执行```hdc list targets```,弹出窗口如下。 152 153  154 1555. 等待一段时间后,窗口出现如下打印,可回到输入 ```hdc list targets``` 的命令窗口继续操作。 156 157  158 1596. 再次输入```hdc list targets```,出现如下结果,说明hdc连接成功。 160 161  162 1637. 获取读写权限。 164 165 ``` 166 hdc target mount 167 ``` 1688. 将签名好的 hap 包放入设备的 `/system/app` 目录下,并修改hap包的权限。 169 170 ``` 171 hdc file send 本地路径 /system/app/hap包名称 172 例如:hdc file send adminprovisioning.hap /system/app/adminprovisioning.hap 173 ``` 174>  **说明:** 175> 如果设备不存在 `/system/app` 目录,则需要手动创建该目录并修改权限。 176> ``` 177> hdc shell 178> cd system 179> mkdir app 180> chmod 777 app 181> ``` 182> `/system/app` 目录放置系统应用,例如:Launcher,SystemUI,Settings 等。但hap包需要在该目录下手动设置权限。 183> ``` 184> chmod 666 hap包名 185> ``` 186> 此目录应用不用手动安装,系统自动拉起。 187### 应用运行 188AdminProvisioning属于系统应用,在将签名的 hap 包放入 `/system/app` 目录后,重启系统,应用会自动拉起。 189 ``` 190 hdc shell 191 reboot(不可以直接执行hdc reboot,命令是无效的) 192 ``` 193>  **说明:** 194> 如果设备之前安装过系统应用,则需要执行如下两条命令清除设备中存储的应用信息才能够在设备重启的时候将我们装入设备的新 hap 包正常拉起。 195> ``` 196> hdc shell rm -rf /data/misc_de/0/mdds/0/default/bundle_manager_service 197> hdc shell rm -rf /data/accounts 198> ``` 199### 应用调试 200#### log打印 2011. 在程序中添加 log。 202 ```JS 203 console.info("adminprovisioning log info"); 204 ``` 205#### log获取及过滤 2061. log获取。 207 208 ``` 209 将log输出至文件。 210 hdc shell hilog > 输出文件名称 211 ``` 212 213 ``` 214 例:在真实环境查看log,将全log输出到当前目录的hilog.log文件中。 215 hdc shell hilog > hilog.log 216 ``` 217 2182. log过滤。 219 220 ``` 221 在命令行窗口中过滤log。 222 hilog │ grep 过滤信息 223 ``` 224 225 ``` 226 例:过滤包含信息 Label 的 hilog。 227 hilog │ grep Label 228 ``` 229## 贡献代码 230### Fork 代码仓库 2311. 在码云上打开 AdminProvisioning 代码仓库([仓库地址](https://gitee.com/openharmony/applications_admin_provisioning))。 232 2332. 点击仓库右上角的 Fork 按钮,在弹出的画面中,点击确认,选择将仓库 Fork 。 234 2353. Fork 成功之后,会在自己的账号下看见 fork 的代码仓库。 236 237### 提交代码 2381. 访问我们自己在码云账号上 fork 的代码仓库,点击“克隆/下载”按钮,选择 SSH,点击“复制”按钮。 239 240  241 2422. 在本地新建 AdminProvisioning 目录,在 AdminProvisioning 目录中执行如下命令。 243 ``` 244 git clone 步骤1中复制的地址 245 ``` 246 2473. 修改代码。 248 将代码引入工程,以及编译工程等相关内容请参见 **代码使用章节** 部分的相关内容。 249 2504. 提交代码到 fork 仓库。 251 修改后的代码,首先执行 `git add` 命令,然后执行 `git commit` 命令与 `git push` 命令,将代码 push 到我们自己的 fork 仓中。 252 关于代码提交的这部分内容涉及 git 的使用,可以参照 [git官网](https://git-scm.com/) 的内容,在此不再赘述。 253 254### 发起 Pull Request (PR) 255在将代码提交到 fork 仓之后,我们可以通过发起 Pull Request(PR)的方式来为 OpenHarmony 的相关项目贡献代码。 256 2571. 打开 fork 仓库。选择 `Pull Requests` → `新建 Pull Request`。 258 2592. 在 `新建 Pull Request` 画面填入标题与说明,点击 `创建` 按钮。 260 2613. 创建 Pull Request 完成。 PR 创建完成后,会有专门的代码审查人员对代码进行评审,评审通过之后会合入相应的代码库。