From 058aacb7c8d6f942d7c81b97c1cc6e9956d13a45 Mon Sep 17 00:00:00 2001 From: yang-lin-16 Date: Thu, 6 Jan 2022 11:40:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0IDE=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: yang-lin-16 --- .../configuring-openharmony-app-signature.md | 112 ++---------------- .../configuring-openharmony-sdk.md | 110 +++++++++-------- .../quick-start/create-openharmony-project.md | 1 + .../quick-start/deveco-studio-overview.md | 13 +- .../deveco-studio-release-notes.md | 31 ++++- ...eveco-studio-user-guide-for-openharmony.md | 1 + .../figures/zh-cn_image_0000001118018452.png | Bin 0 -> 392 bytes .../figures/zh-cn_image_0000001196050928.png | Bin 0 -> 28983 bytes .../figures/zh-cn_image_0000001239855207.png | Bin 0 -> 274 bytes .../import-sample-to-create-project.md | 16 +-- .../quick-start/installing-openharmony-app.md | 49 ++++---- .../use-wizard-to-create-project.md | 33 +++--- 12 files changed, 153 insertions(+), 213 deletions(-) create mode 100644 zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001118018452.png create mode 100644 zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001196050928.png create mode 100644 zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001239855207.png diff --git a/zh-cn/application-dev/quick-start/configuring-openharmony-app-signature.md b/zh-cn/application-dev/quick-start/configuring-openharmony-app-signature.md index 336a9050b0..b7f83cd2de 100644 --- a/zh-cn/application-dev/quick-start/configuring-openharmony-app-signature.md +++ b/zh-cn/application-dev/quick-start/configuring-openharmony-app-signature.md @@ -2,7 +2,7 @@ - [生成密钥和证书请求文件](#生成密钥和证书请求文件) - [生成应用证书文件](#生成应用证书文件) -- [生成应用Profile文件](#生成应用profile文件) +- [生成应用Profile文件](#生成应用Profile文件) - [配置应用签名信息](#配置应用签名信息) 使用真机设备运行和调试OpenHarmony应用前,需要对应用进行签名才能正常运行。该指导用于OpenHarmony应用的签名配置。除此章节以外,DevEco Studio的其余操作指导无差别,具体请访问[HUAWEI DevEco Studio使用指南](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387)。配置应用签名信息的流程如下图所示。 @@ -13,99 +13,14 @@ ## 生成密钥和证书请求文件 -OpenHarmony应用通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用的完整性,需要通过DevEco Studio来生成密钥文件(.p12文件)和证书请求文件(.csr文件)。同时,也可以使用命令行工具的方式来生成密钥文件和证书请求文件。 - -### 使用DevEco Studio生成密钥和证书请求文件 - -1. 在主菜单栏点击**Build > Generate Key** **and CSR**。 - - > ![](public_sys-resources/icon-note.gif)**说明** - > - > 如果本地已有对应的密钥,无需新生成密钥,可以在**Generate Key**界面中点击下方的Skip跳过密钥生成过程,直接使用已有密钥生成证书请求文件。 - -2. 在**Key Store File**中,可以点击**Choose Existing**选择已有的密钥库文件(存储有密钥的.p12文件);如果没有密钥库文件,点击**New**进行创建。下面以新创建密钥库文件为例进行说明。 - - ![img](figures/zh-cn_image_0000002021121901.png) - -3. 在**Create Key Store**窗口中,填写密钥库信息后,点击**OK**。 - - - **Key Store File**:选择密钥库文件存储路径。 - - **Password**:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。 - - **Confirm Password**:再次输入密钥库密码。 - - ![img](figures/zh-cn_image_0000002021121902.png) - -4. 在**Generate Key**界面中,继续填写密钥信息后,点击**Next**。 - - - **Alias**:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。 - - **Password**:密钥对应的密码,与密钥库密码保持一致,无需手动输入。 - - **Validity**:证书有效期,建议设置为25年及以上,覆盖应用的完整生命周期。 - - **Certificate**:输入证书基本信息,如组织、城市或地区、国家码等。 - - ![img](figures/zh-cn_image_0000002021121903.png) - -5. 在**Generate CSR**界面,选择密钥和设置CSR文件存储路径。 - - ![img](figures/zh-cn_image_0000002021121904.png) - -6. 点击**OK**按钮,创建CSR文件成功,可以在存储路径下获取生成的密钥库文件(.p12)和证书请求文件(.csr)。 - - ![img](figures/zh-cn_image_0000002021121905.png) - -### 使用命令行工具生成证书请求文件 - -使用Open JDK携带的Keytool工具生成证书请求文件。 - -1. 使用管理员身份运行命令行工具。 - - ![img](figures/zh-cn_image_0000002021121906.png) - -2. 切换到keytool工具所在路径,实际路径请根据DevEco Studio安装目录进行修改。 - - ![img](figures/zh-cn_image_0000002021121907.png) - - -3. 执行如下命令,生成公私钥文件。例如,生成的密钥库名称为ide_demo_app.p12,以存储到D盘根目录下为例 - - ``` - keytool -genkeypair -alias "ide_demo_app" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=HUAWEI,OU=HUAWEI IDE,CN=ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -validity 9125 -storepass 123456Abc -keypass 123456Abc - ``` - - 生成公私钥文件的参数说明如下: - - > ![](public_sys-resources/icon-note.gif)说明 - > - > 请记录下**alias、storepass和keypass**的值,在后续[配置签名信息](#配置应用签名信息)操作会使用到。 - - - **alias**:密钥的别名信息,用于标识密钥名称。 - - - **sigalg**:签名算法,固定为**SHA256withECDSA**。 - - **dname**:按照操作界面提示进行输入。 - - C:国家/地区代码,如CN。 - - O:组织名称,如HUAWEI。 - - OU:组织单位名称,如HUAWEI IDE。 - - CN:名字与姓氏,建议与别名一致。 - - **validity**:证书有效期,建议设置为9125(25年)。 - - **storepass**:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。 - - **keypass**:设置密钥的密码,请与**storepass**保持一致。 - -4. 执行如下命令,执行后需要输入**storepass**密码,生成证书请求文件,后缀格式为.csr。 - - ``` - keytool -certreq -alias "ide_demo_app" -keystore d:\\idedemokey.p12 -storetype pkcs12 -file d:\\idedemokey.csr - ``` - - 生成证书请求文件的参数说明如下: - - - **alias**:与[3](#label001)中输入的alias保持一致。 - - **file**:生成的证书请求文件名称,后缀为.csr。 +OpenHarmony应用通过数字证书(.cer文件)和Profile文件(.p7b文件)来保证应用的完整性,需要通过DevEco Studio来生成密钥文件(.p12文件)和证书请求文件(.csr文件)。同时,也可以使用命令行工具的方式来生成密钥文件和证书请求文件。具体操作请参考[生成密钥和证书请求文件](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/publish_app-0000001053223745#section9752152162813)。 ## 生成应用证书文件 使用[生成密钥和证书请求文件](#生成密钥和证书请求文件)中生成的证书请求文件,来生成应用签名所需的数字证书文件。生成方法如下: -进入DevEco Studio安装目录的 **Sdk\toolchains\lib**文件夹下(该SDK目录只能是OpenHarmony SDK,配置方法可参考[配置OpenHarmony SDK](../quick-start/configuring-openharmony-sdk.md)),打开命令行工具,执行如下命令(如果keytool命令不能执行,请在系统环境变量中添加JDK的环境变量)。其中,只需要修改输入和输出即可快速生成证书文件,即修改 **-infile**指定证书请求文件csr文件路径, **-outfile**指定输出证书文件名及路径。 +进入DevEco Studio安装目录的**Sdk\toolchains\lib**文件夹下(该SDK目录只能是OpenHarmony SDK,配置方法可参考[配置OpenHarmony SDK](../quick-start/configuring-openharmony-sdk.md)),打开命令行工具,执行如下命令(如果keytool命令不能执行,请在系统环境变量中添加JDK的环境变量)。其中,只需要修改输入和输出即可快速生成证书文件,即修改**-infile**指定证书请求文件csr文件路径,**-outfile**指定输出证书文件名及路径。 ``` keytool -gencert -alias "OpenHarmony Application CA" -infile myApplication_ohos.csr -outfile myApplication_ohos.cer -keystore OpenHarmony.p12 -sigalg SHA384withECDSA -storepass 123456 -ext KeyUsage:"critical=digitalSignature" -validity 3650 -rfc @@ -119,7 +34,7 @@ keytool -gencert -alias "OpenHarmony Application CA" -infile myApplication_ohos. - **outfile**:输出证书链文件名及路径。 -- **keystore**:签发证书的CA密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中 **Sdk\toolchains\lib**路径下,该参数不能修改。请注意,该OpenHarmony.p12文件并不是[生成密钥和证书请求文件](#生成密钥和证书请求文件)中生成的.p12文件。 +- **keystore**:签发证书的CA密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中**Sdk\toolchains\lib**路径下,该参数不能修改。请注意,该OpenHarmony.p12文件并不是[生成密钥和证书请求文件](#生成密钥和证书请求文件)中生成的.p12文件。 - **sigalg**:证书签名算法,该参数不能修改。 @@ -136,7 +51,7 @@ keytool -gencert -alias "OpenHarmony Application CA" -infile myApplication_ohos. Profile文件包含OpenHarmony应用的包名、数字证书信息、描述应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容,每个应用包中均必须包含一个Profile文件。 -进入 **Sdk\toolchains\lib**目录下,打开命令行工具,执行如下命令。 +进入**Sdk\toolchains\lib**目录下,打开命令行工具,执行如下命令。 ``` java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out myApplication_ohos_Provision.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release" --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id ohosdeveloper --bundle-name 包名 --permission 受限权限名(可选) --permission 受限权限名(可选) --distribution-certificate myApplication_ohos.cer @@ -144,13 +59,13 @@ java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --o 关于该命令的参数说明如下: -- **provisionsigtool**:Profile文件生成工具,文件在OpenHarmony SDK的 **Sdk\toolchains\lib**路径下。 +- **provisionsigtool**:Profile文件生成工具,文件在OpenHarmony SDK的**Sdk\toolchains\lib**路径下。 -- **in**:Profile模板文件所在路径,文件在OpenHarmony SDK中 **Sdk\toolchains\lib**路径下,该参数不能修改。 +- **in**:Profile模板文件所在路径,文件在OpenHarmony SDK中**Sdk\toolchains\lib**路径下,该参数不能修改。 - **out**:输出的Profile文件名和路径。 -- **keystore**:签发证书的密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中 **Sdk\toolchains\lib**路径下,该参数不能修改。 +- **keystore**:签发证书的密钥库路径,OpenHarmony密钥库文件名为OpenHarmony.p12,文件在OpenHarmony SDK中**Sdk\toolchains\lib**路径下,该参数不能修改。 - **storepass**:密钥库密码,密码为123456,该参数不能修改。 @@ -158,7 +73,7 @@ java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --o - **sigalg**:证书签名算法,该参数不能修改。 -- **cert**:签名Profile的证书文件路径,文件在OpenHarmony SDK中 **Sdk\toolchains\lib**路径下,该参数不能修改。 +- **cert**:签名Profile的证书文件路径,文件在OpenHarmony SDK中**Sdk\toolchains\lib**路径下,该参数不能修改。 - **validity**:证书有效期,自定义天数。 @@ -175,15 +90,14 @@ java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --o 在真机设备上调试前,需要使用到制作的私钥(.p12)文件、证书(.cer)文件和Profile(.p7b)文件对调试的模块进行签名。 -打开 **File > Project Structure**,点击 **Project > Signing Configs > debug**窗口中,去除勾选“Automatically generate signing”,然后配置指定模块的调试签名信息。 - +打开**File > Project Structure**,点击**Project > Signing Configs > debug**窗口中,去除勾选“Automatically generate signing”,然后配置指定模块的调试签名信息。 - **Store File**:选择密钥库文件,文件后缀为.p12,该文件为[生成密钥和证书请求文件](#生成密钥和证书请求文件)中生成的.p12文件。 - **Store Password**:输入密钥库密码,该密码为[生成密钥和证书请求文件](#生成密钥和证书请求文件)中填写的密钥库密码保持一致。 - **Key Alias**:输入密钥的别名信息,与[生成密钥和证书请求文件](#生成密钥和证书请求文件)中填写的别名保持一致。 -- **Key Password**:输入密钥的密码,与 **Store Password**保持一致。 +- **Key Password**:输入密钥的密码,与**Store Password**保持一致。 - **Sign Alg**:签名算法,固定为SHA256withECDSA。 @@ -193,7 +107,7 @@ java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --o ![zh-cn_image_0000001155643492](figures/zh-cn_image_0000001155643492.png) -设置完签名信息后,点击 **OK**进行保存,然后可以在工程下的build.gradle中查看签名的配置信息。 +设置完签名信息后,点击**OK**进行保存,然后可以在工程下的build.gradle中查看签名的配置信息。 ![zh-cn_image_0000001202722349](figures/zh-cn_image_0000001202722349.png) @@ -203,4 +117,4 @@ java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --o 编译完成后,OpenHarmony应用的Hap包可以从工程的bulid目录下获取。 -![zh-cn_image_0000001163918627](figures/zh-cn_image_0000001163918627.png) \ No newline at end of file +![zh-cn_image_0000001163918627](figures/zh-cn_image_0000001163918627.png) diff --git a/zh-cn/application-dev/quick-start/configuring-openharmony-sdk.md b/zh-cn/application-dev/quick-start/configuring-openharmony-sdk.md index 9bdbfd644c..8fefc4869f 100644 --- a/zh-cn/application-dev/quick-start/configuring-openharmony-sdk.md +++ b/zh-cn/application-dev/quick-start/configuring-openharmony-sdk.md @@ -1,17 +1,17 @@ # 配置OpenHarmony SDK - [前提条件](#前提条件) -- [配置SDK信息](#配置sdk信息) +- [配置SDK信息](#配置SDK信息) - [参考信息](#参考信息) - - [配置DevEco Studio代理](#配置deveco-studio代理) - - [配置NPM代理](#配置npm代理) - - [设置Gradle代理](#设置gradle代理) + - [配置DevEco Studio代理](#配置DevEco-Studio代理) + - [配置NPM代理](#配置NPM代理) + - [设置Gradle代理](#设置Gradle代理) 在设置OpenHarmony应用开发环境时,需要开发者在DevEco Studio中配置对应的SDK信息。 ->![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
->请注意,OpenHarmony SDK版本精简了部分工具链,因此不适用于HarmonyOS应用开发。 +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 请注意,OpenHarmony SDK版本精简了部分工具链,因此不适用于HarmonyOS应用开发。 ## 前提条件 @@ -26,34 +26,29 @@ DevEco Studio通过SDK Manager统一管理SDK及工具链,OpenHarmony包含如 | 类别 | 包名 | 说明 | | -------- | -------- | -------- | | SDK | JS | JS语言SDK包。 | +| eTS | eTS(Extended TypeScript) SDK包。 | | SDK Tool | Toolchains | SDK工具链,OpenHarmony应用开发必备工具集,包括编译、打包、签名、数据库管理等工具的集合。 | -| | Previewer | OpenHarmony应用预览器,可以在应用开发过程中查看界面UI布局效果。 | +| Previewer | OpenHarmony应用预览器,可以在应用开发过程中查看界面UI布局效果。 | -1. 运行已安装的DevEco Studio,首次使用,请选择 **Do not import settings**,点击OK。 +1. 运行已安装的DevEco Studio,首次使用,请选择**Do not import settings**,点击OK。 -2. 进入配置向导页面,设置 **npm registry**,DevEco Studio已预置对应的仓,直接点击 **Start using DevEco Studio**进入下一步。 - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
- > 如果配置向导界面出现的是设置 **Set up HTTP Proxy**界面,说明网络受限,请根据[参考信息](#参考信息)配置DevEco Studio代理、NPM代理和Gradle代理后,再下载OpenHarmony SDK。 +2. 进入配置向导页面,设置**npm registry**,DevEco Studio已预置对应的仓,直接点击**Start using DevEco Studio**进入下一步。 + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** + > 如果配置向导界面出现的是设置**Set up HTTP Proxy**界面,说明网络受限,请根据[参考信息](#参考信息)配置DevEco Studio代理、NPM代理和Gradle代理后,再下载OpenHarmony SDK。 - - ![zh-cn_image_0000001163314102](figures/zh-cn_image_0000001163314102.png) + ![zh-cn_image_0000001163314102](figures/zh-cn_image_0000001163314102.png) -3. DevEco Studio向导指引开发者下载SDK,默认下载OpenHarmony SDK。SDK下载到user目录下,也可以指定对应的存储路径,SDK存储路径不支持中文字符,然后点击 **Next**。 +3. DevEco Studio向导指引开发者下载SDK,默认下载OpenHarmony SDK。SDK下载到user目录下,也可以指定对应的存储路径,SDK存储路径不支持中文字符,然后点击**Next**。 ![zh-cn_image_0000001208394019](figures/zh-cn_image_0000001208394019.png) - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
- > 如果不是首次安装DevEco Studio,可能无法查看进入该界面,可通过欢迎页的 **Configure (** **或**![zh-cn_image_0000001208274069](figures/zh-cn_image_0000001208274069.png) **图标** **)> Settings > SDK Manager > OpenHarmony SDK**界面,点击 **OpenHarmony SDK Location**加载SDK。 + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** + > 如果不是首次安装DevEco Studio,可能无法查看进入该界面,可通过欢迎页的**Configure (或**![zh-cn_image_0000001208274069](figures/zh-cn_image_0000001208274069.png)**图标)> Settings > SDK Manager > OpenHarmony SDK**界面,点击**OpenHarmony SDK Location**加载SDK。 + +4. 在弹出的SDK下载信息页面,点击**Next**,并在弹出的**License Agreement**窗口,点击**Accept**开始下载SDK。 -4. 在弹出的SDK下载信息页面,点击 **Next**,并在弹出的 **License Agreement**窗口,点击 **Accept**开始下载SDK。 - - - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
- > 下载SDK过程中,如果出现下载JS SDK失败,提示“Install js dependencies failed”,请根据[JS SDK安装失败处理指导](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/faq-development-environment-0000001168829643#section1311117111474)进行处理。 - - ![zh-cn_image_0000001163472654](figures/zh-cn_image_0000001163472654.png) - -5. 等待OpenHarmony SDK及工具下载完成,点击 **Finish**,界面会进入到DevEco Studio欢迎页。 + +5. 等待OpenHarmony SDK及工具下载完成,点击**Finish**,界面会进入到DevEco Studio欢迎页。 ![zh-cn_image_0000001163632602](figures/zh-cn_image_0000001163632602.png) @@ -63,22 +58,22 @@ DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才 一般来说,如果使用的是个人或家庭网络,是不需要设置代理信息的;只有部分企业网络受限的情况下,才需要设置代理信息。 -如果是第一次打开DevEco Studio,配置向导界面出现设置 **Set up HTTP Proxy**界面,说明网络受限,可以通过配置代理的方式来解决,需要配置DevEco Studio代理、NPM代理和Gradle代理。 +如果是第一次打开DevEco Studio,配置向导界面出现设置**Set up HTTP Proxy**界面,说明网络受限,可以通过配置代理的方式来解决,需要配置DevEco Studio代理、NPM代理和Gradle代理。 ![zh-cn_image_0000001166582138](figures/zh-cn_image_0000001166582138.png) ### 配置DevEco Studio代理 -1. 启动DevEco Studio,配置向导进入 **Set up HTTP Proxy**界面,勾选 **Manual proxy configuration**,设置DevEco Studio的HTTP Proxy。 - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+1. 启动DevEco Studio,配置向导进入**Set up HTTP Proxy**界面,勾选**Manual proxy configuration**,设置DevEco Studio的HTTP Proxy。 + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 如果非首次设置向导进入HTTP Proxy,可以通过如下方式进入HTTP Proxy配置界面: > - > - 在欢迎页点击 **Configure(或**![zh-cn_image_0000001212142015](figures/zh-cn_image_0000001212142015.png) **图标) > Settings > Appearance & Behavior > System Settings > HTTP Proxy**进入HTTP Proxy设置界面(Mac系统为 **Configure > Preferences > Appearance & Behavior > System Settings > HTTP Proxy**)。 + > - 在欢迎页点击**Configure(或**![zh-cn_image_0000001212142015](figures/zh-cn_image_0000001212142015.png)**图标) > Settings > Appearance & Behavior > System Settings > HTTP Proxy**进入HTTP Proxy设置界面(Mac系统为**Configure > Preferences > Appearance & Behavior > System Settings > HTTP Proxy**)。 > - > - 在打开了工程的情况下,可以点击 **File > Settings > Appearance & Behavior > System Settings > HTTP Proxy**进入HTTP Proxy设置界面(Mac系统为 **DevEco Studio > Preferences > Appearance & Behavior > System Settings > HTTP Proxy**) + > - 在打开了工程的情况下,可以点击**File > Settings > Appearance & Behavior > System Settings > HTTP Proxy**进入HTTP Proxy设置界面(Mac系统为**DevEco Studio > Preferences > Appearance & Behavior > System Settings > HTTP Proxy**) - - **HTTP**配置项,设置代理服务器信息。 **如果不清楚代理服务器信息,可以咨询你们的网络管理人员**。 + - **HTTP**配置项,设置代理服务器信息。**如果不清楚代理服务器信息,可以咨询你们的网络管理人员**。 - **Host name**:代理服务器主机名或IP地址。 - **Port number**:代理服务器对应的端口号。 - **No proxy for**:不需要通过代理服务器访问的URL或者IP地址(地址之间用英文逗号分隔)。 @@ -86,18 +81,19 @@ DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才 - **Login**:访问代理服务器的用户名。 - **Password**:访问代理服务器的密码。 - **Remember**:勾选,记住密码。 - ![zh-cn_image_0000001212062065](figures/zh-cn_image_0000001212062065.png) -2. 配置完成后,点击 **Check connection**,输入网络地址(如:https://developer.harmonyos.com),检查网络连通性。提示Connection successful表示代理设置成功。 + ![zh-cn_image_0000001212062065](figures/zh-cn_image_0000001212062065.png) + +2. 配置完成后,点击**Check connection**,输入网络地址(如:https://developer.harmonyos.com),检查网络连通性。提示Connection successful表示代理设置成功。 -3. 点击 **Next: Configure npm**继续设置NPM代理信息,请参考[配置NPM代理](#配置npm代理)。 +3. 点击**Next: Configure npm**继续设置NPM代理信息,请参考[配置NPM代理](#配置npm代理)。 ### 配置NPM代理 -通过DevEco Studio的设置向导设置NPM代理信息,代理信息将写入用户“users/用户名/”目录下的 **.npmrc**文件。 -> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
-> 该向导只有第一次安装DevEco Studio才会出现。如果未出现该向导,可以直接在“users/用户名/”目录下的 **.npmrc**文件中,添加代理配置信息。 +通过DevEco Studio的设置向导设置NPM代理信息,代理信息将写入用户“users/用户名/”目录下的**.npmrc**文件。 +> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** +> 该向导只有第一次安装DevEco Studio才会出现。如果未出现该向导,可以直接在“users/用户名/”目录下的**.npmrc**文件中,添加代理配置信息。 - npm registry:设置npm仓的地址信息,建议勾选。 @@ -107,13 +103,13 @@ DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才 ![zh-cn_image_0000001164577336](figures/zh-cn_image_0000001164577336.png) -然后点击 **Start using DevEco Studio**继续下一步操作。 +然后点击**Start using DevEco Studio**继续下一步操作。 如果代理服务器需要认证(需要用户名和密码),请先根据如下指导配置代理服务器的用户名和密码信息,然后再下载OpenHarmony SDK;否则,请跳过该操作,参考[配置SDK信息](#配置sdk信息)进行操作即可。 ![zh-cn_image_0000001209817299](figures/zh-cn_image_0000001209817299.png) -1. 进入用户的users目录,打开 **.npmrc**文件。 +1. 进入用户的users目录,打开**.npmrc**文件。 2. 修改npm代理信息,在proxy和https-proxy中,增加user和password字段,具体取值请以实际代理信息为准。示例如下所示: ``` @@ -121,7 +117,7 @@ DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才 https-proxy=http://user:password@proxy.server.com:80 ``` - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+ > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 如果password中存在特殊字符,如\@、\#、\*等符号,可能导致配置不生效,建议将特殊字符替换为ASCII码,并在ASCII码前加百分号%。常用符号替换为ASCII码对照表如下: > > - !:%21 @@ -150,26 +146,26 @@ DevEco Studio开发环境需要依赖于网络环境,需要连接上网络才 ### 设置Gradle代理 -1. 打开“此电脑”,在文件夹地址栏中输入 **%userprofile%**(Mac系统请点击 **前往 > 个人**),进入个人用户文件夹。 +1. 打开“此电脑”,在文件夹地址栏中输入**%userprofile%**(Mac系统请点击**前往 > 个人**),进入个人用户文件夹。 ![zh-cn_image_0000001166740700](figures/zh-cn_image_0000001166740700.png) -2. 创建一个文件夹,命名为 **.gradle**。如果已有.gradle文件夹,请跳过此操作。 - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+2. 创建一个文件夹,命名为**.gradle**。如果已有.gradle文件夹,请跳过此操作。 + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > macOS系统创建.gradle文件夹前,请将系统设置为“显示隐藏文件”。 -3. 进入.gradle文件夹,新建一个文本文档,命名为 **gradle**,并修改后缀为 **.properties**。 +3. 进入.gradle文件夹,新建一个文本文档,命名为**gradle**,并修改后缀为**.properties**。 -4. 打开 **gradle.properties**文件中,添加如下脚本,然后保存。 +4. 打开**gradle.properties**文件中,添加如下脚本,然后保存。 其中代理服务器、端口、用户名、密码和不使用代理的域名,请根据实际代理情况进行修改。其中不使用代理的nonProxyHosts的配置间隔符是 “|”。 - ``` - systemProp.http.proxyHost=proxy.server.com - systemProp.http.proxyPort=8080 - systemProp.http.nonProxyHosts=*.company.com|10.*|100.* - systemProp.http.proxyUser=userId - systemProp.http.proxyPassword=password - systemProp.https.proxyHost=proxy.server.com - systemProp.https.proxyPort=8080 - systemProp.https.nonProxyHosts=*.company.com|10.*|100.* - systemProp.https.proxyUser=userId - systemProp.https.proxyPassword=password - ``` + ``` + systemProp.http.proxyHost=proxy.server.com + systemProp.http.proxyPort=8080 + systemProp.http.nonProxyHosts=*.company.com|10.*|100.* + systemProp.http.proxyUser=userId + systemProp.http.proxyPassword=password + systemProp.https.proxyHost=proxy.server.com + systemProp.https.proxyPort=8080 + systemProp.https.nonProxyHosts=*.company.com|10.*|100.* + systemProp.https.proxyUser=userId + systemProp.https.proxyPassword=password + ``` diff --git a/zh-cn/application-dev/quick-start/create-openharmony-project.md b/zh-cn/application-dev/quick-start/create-openharmony-project.md index 106f04c687..87112157f0 100644 --- a/zh-cn/application-dev/quick-start/create-openharmony-project.md +++ b/zh-cn/application-dev/quick-start/create-openharmony-project.md @@ -1,6 +1,7 @@ # 创建OpenHarmony工程 + - **[使用工程向导创建新工程](use-wizard-to-create-project.md)** - **[通过导入Sample方式创建新工程](import-sample-to-create-project.md)** \ No newline at end of file diff --git a/zh-cn/application-dev/quick-start/deveco-studio-overview.md b/zh-cn/application-dev/quick-start/deveco-studio-overview.md index 9c22a824ee..0bdc0b63d0 100644 --- a/zh-cn/application-dev/quick-start/deveco-studio-overview.md +++ b/zh-cn/application-dev/quick-start/deveco-studio-overview.md @@ -2,28 +2,28 @@ - [总体说明](#总体说明) - [使用约束](#使用约束) -- [DevEco Studio演进路标](#deveco-studio演进路标) +- [DevEco Studio演进路标](#DevEco-Studio演进路标) ## 总体说明 -DevEco Studio 是 HarmonyOS 的配套的开发 IDE ,因为HarmonyOS 是基于OpenHarmony 开发的,因此,使用 DevEco Studio (配套 HarmonyOS )也可以进行 OpenHarmony 的应用开发。 +DevEco Studio是HarmonyOS的配套的开发IDE,因为HarmonyOS是基于OpenHarmony开发的,因此,使用DevEco Studio(配套HarmonyOS)也可以进行OpenHarmony的应用开发。 使用DevEco Studio开发OpenHarmony应用的流程与开发HarmonyOS的流程完全一样,本文档仅描述OpenHarmony应用开发与HarmonyOS应用开发的差异点。 - **搭建开发环境差异**:OpenHarmony应用开发环境需要先安装OpenHarmony SDK,具体可参考[配置OpenHarmony SDK](../quick-start/configuring-openharmony-sdk.md)章节。 -- **导入OpenHarmony工程**:OpenHarmony应用开发,只能通过导入Sample工程的方式来创建一个新工程,具体可参考[通过导入Sample方式创建新工程](../quick-start/import-sample-to-create-project.md)。 +- **创建OpenHarmony工程**:OpenHarmony应用开发,可以通过工程向导创建一个新工程,或通过导入Sample工程的方式来创建一个新工程,具体可参考[使用工程向导创建新工程](../quick-start/use-wizard-to-create-project.md)。 - **调试签名配置**:OpenHarmony应用运行在真机设备上,需要对应用进行签名,关于OpenHarmony应用的签名指导请参考[配置OpenHarmony应用签名信息](../quick-start/configuring-openharmony-app-signature.md)。 -- **在真机设备上运行应用**:需要使用hdc工具将OpenHarmony的hap包推送到真机设备上进行安装,具体可参考[安装运行OpenHarmony应用](../quick-start/installing-openharmony-app.md)。 +- **在真机设备上运行应用**:将OpenHarmony的hap包推送到真机设备上进行安装,具体可参考[安装运行OpenHarmony应用](../quick-start/installing-openharmony-app.md)。 关于DevEco Studio的详细操作指导,请访问[HUAWEI DevEco Studio使用指南](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/tools_overview-0000001053582387)。 ## 使用约束 -- OpenHarmony只支持使用JS语言开发应用,不支持Java、C/C++语言。 +- OpenHarmony只支持使用eTS、JS语言开发应用,不支持Java、C/C++语言。 - OpenHarmony开发环境DevEco Studio暂只支持Windows系统。 @@ -31,12 +31,11 @@ OpenHarmony与HarmonyOS的开发工具都是DevEco Studio,下表为OpenHarmony | 特性名称 | HarmonyOS版本 | OpenHarmony版本 | | -------- | -------- | -------- | -| 创建Module | **√** | **X** | | 服务卡片 | **√** | **X** | | 自动化签名 | **√** | **X** | | 远程模拟器 | **√** | **X** | | 本地模拟器 | **√** | **X** | -| 使用DevEco Studio运行调试、日志查看、调优 | **√** | **X** | +| 使用DevEco Studio进行日志查看、调优 | **√** | **X** | | 云测试 | **√** | **X** | | 安全测试 | **√** | **X** | diff --git a/zh-cn/application-dev/quick-start/deveco-studio-release-notes.md b/zh-cn/application-dev/quick-start/deveco-studio-release-notes.md index d0bd3eb6e1..f65898663a 100644 --- a/zh-cn/application-dev/quick-start/deveco-studio-release-notes.md +++ b/zh-cn/application-dev/quick-start/deveco-studio-release-notes.md @@ -1,9 +1,36 @@ # 版本变更说明 -- [V3.0 Beta1(2021-09-29)](#v3-0-beta1-2021-09-29-) +- [V3.0 Beta2(2021-12-31)](#V30-Beta22021-12-31) + - [版本兼容性](#版本兼容性) + - [版本变更说明](#版本变更说明) +- [V3.0 Beta1(2021-09-29)](#V30-Beta12021-09-29) + +## V3.0 Beta2(2021-12-31) + + +### 版本兼容性 + +DevEco Studio 3.0 Beta2版本兼容性配套关系如下表所示。 + +| 组件 | 版本要求 | 说明 | +| -------- | -------- | -------- | +| Gradle | 7.3(最低版本要求7.2) | DevEco Studio已自带了Gradle7.3版本,开发者无需单独安装。 | +| JDK | 11.0.x | DevEco Studio已自带了JDK 11版本,开发者无需单独安装。 | +| OpenHarmony SDK | 3.1.0.0(API Version 8 Beta) | 兼容历史版本SDK。 | +| Toolchinas | 3.1.0.0 | 建议更新至最新版本。 | +| hap插件 | 3.0.5.2 | +| decctest插件 | 1.2.7.2 | + + +### 版本变更说明 + +| | +| -------- | +| **新增特性:**
- 新增DevEco Studio支持界面功能菜单的汉化版本,默认显示为英文,如需开启汉化版本,请打开DevEco Studio的**Settings**界面,在**Plugins > installed**中手动勾选“Chinese(Simplified)”插件,然后重新启动DevEco Studio即可生效。
- 新增支持OpenHarmony应用或服务的调试和运行,支持断点管理、变量查看、Step Into\Step Over\Step Out等单步调试功能。
**增强特性:**
- OpenHarmony SDK更新至3.1.0.0版本(API Version 8 Beta),配套的hap编译构建插件版本更新至3.0.5.2。
- 工程模板新增支持低代码开发的[Standard]Empty Ability模板。
- 支持eTS组件预览,要求compileSdkVersion为8或以上。
- eTS实时预览支持边修改属性边展示预览效果,无需保存修改才生效,要求compileSdkVersion为8或以上。 | + ## V3.0 Beta1(2021-09-29) | | | -------- | -|  **新增特性:**
- 新增支持OpenHarmony SDK的管理,开发者可通过DevEco Studio的SDK Manager功能来下载和管理OpenHarmony SDK。
- 在编译构建HAP包时,新增支持对单个Module进行编译,对于多Module工程中只需要编译其中一个Module的场景,可以提升编译构建速度;同时还新增支持一键重构建HAP包,即在编译构建HAP前,会自动执行Clean Project操作。
 **增强特性:**
- 编译构建插件更新至3.0.3.2版本。
- Json编辑器增强,资源索引错误支持快速修复,并支持快速查看资源的取值。
- 工程视图支持Ohos视图,默认视图为Project视图,开发者可手动切换。
- OpenHarmony工程支持ark方舟编译。
- OpenHarmony工程类型标识字段supportSystem "standard",由模块级build.gradle调整至工程级build.gradle。 | +| **新增特性:**
- 新增支持OpenHarmony SDK的管理,开发者可通过DevEco Studio的SDK Manager功能来下载和管理OpenHarmony SDK。
- 在编译构建HAP包时,新增支持对单个Module进行编译,对于多Module工程中只需要编译其中一个Module的场景,可以提升编译构建速度;同时还新增支持一键重构建HAP包,即在编译构建HAP前,会自动执行Clean Project操作。
**增强特性:**
- 编译构建插件更新至3.0.3.2版本。
- Json编辑器增强,资源索引错误支持快速修复,并支持快速查看资源的取值。
- 工程视图支持Ohos视图,默认视图为Project视图,开发者可手动切换。
- OpenHarmony工程支持ark方舟编译。
- OpenHarmony工程类型标识字段supportSystem "standard",由模块级build.gradle调整至工程级build.gradle。 | diff --git a/zh-cn/application-dev/quick-start/deveco-studio-user-guide-for-openharmony.md b/zh-cn/application-dev/quick-start/deveco-studio-user-guide-for-openharmony.md index 2afa5a6c8b..73aa1cf321 100644 --- a/zh-cn/application-dev/quick-start/deveco-studio-user-guide-for-openharmony.md +++ b/zh-cn/application-dev/quick-start/deveco-studio-user-guide-for-openharmony.md @@ -1,6 +1,7 @@ # DevEco Studio(OpenHarmony)使用指南 + - **[概述](deveco-studio-overview.md)** - **[版本变更说明](deveco-studio-release-notes.md)** diff --git a/zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001118018452.png b/zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001118018452.png new file mode 100644 index 0000000000000000000000000000000000000000..74b66efabbbbbea4752f0296985486369a0cdc74 GIT binary patch literal 392 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
L6_f{NJ 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 S3J5enx?It}TyW{ey?+81FLho3 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001239855207.png b/zh-cn/application-dev/quick-start/figures/zh-cn_image_0000001239855207.png new file mode 100644 index 0000000000000000000000000000000000000000..83ef94f222a2cc30f036057908960badedd4aeca GIT binary patch literal 274 zcmV+t0qy>YP)j|d?!jw8yl#4rpvj^h>~vcaZldOEwVi=rst z`@TN%OArLe^Bj)jobHvjGffk!szTrQ*!Nuz0f24W&~+W^y2d=udWbAkwZSw^#BmJ9 z7$~Lc$kkx~LY`K9i&&P0BuNlO5e&n)tdk;y5QJffEX!cq_Tx*XpN(@4&+{IeZxPje Y0eb074D2&oX#fBK07*qoM6N<$f>oh&TL1t6 literal 0 HcmV?d00001 diff --git a/zh-cn/application-dev/quick-start/import-sample-to-create-project.md b/zh-cn/application-dev/quick-start/import-sample-to-create-project.md index ee58adb947..040323685a 100644 --- a/zh-cn/application-dev/quick-start/import-sample-to-create-project.md +++ b/zh-cn/application-dev/quick-start/import-sample-to-create-project.md @@ -1,25 +1,27 @@ # 通过导入Sample方式创建新工程 + + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 该功能适用于通过DevEco Studio 2.1 Release及以上版本,创建OpenHarmony工程。 -OpenHarmony SDK配置完成后,便可以启动应用开发。针对OpenHarmony应用开发, **可以通过导入Sample工程的方式来创建一个新工程**。 +OpenHarmony SDK配置完成后,便可以启动应用开发。针对OpenHarmony应用开发,**可以通过导入Sample工程的方式来创建一个新工程**。 -1. 在DevEco Studio的欢迎页,进入 **Configure (** **或**![zh-cn_image_0000001118018452](figures/zh-cn_image_0000001118018452.png) **图标** **) > Settings > Version Control > Git**界面,点击Test按钮检测是否安装Git工具。 - - 已安装,请根据**步骤2**开始导入Sample。 +1. 在DevEco Studio的欢迎页,进入**Configure (或**![zh-cn_image_0000001118018452](figures/zh-cn_image_0000001118018452.png)**图标) > Settings > Version Control > Git**界面,点击Test按钮检测是否安装Git工具。 + - 已安装,请根据[ERROR:Invalid link:zh-cn_topic_0000001163914943.xml#xref1062745524418,link:#li5947194711181](#li5947194711181)开始导入Sample。 ![zh-cn_image_0000001118018088](figures/zh-cn_image_0000001118018088.png) - - 未安装,请点击 **Download and Install**,DevEco Studio会自动下载并安装。安装完成后,请根据**步骤2**开始导入Sample。 + - 未安装,请点击**Download and Install**,DevEco Studio会自动下载并安装。安装完成后,请根据[ERROR:Invalid link:zh-cn_topic_0000001163914943.xml#xref1191414223536,link:#li5947194711181](#li5947194711181)开始导入Sample。 ![zh-cn_image_0000001164498191](figures/zh-cn_image_0000001164498191.png) -2. 在DevEco Studio的欢迎页,点击 **Import Sample**按钮,导入Sample工程。 +2. 在DevEco Studio的欢迎页,点击**Import Sample**按钮,导入Sample工程。 ![zh-cn_image_0000001208006117](figures/zh-cn_image_0000001208006117.png) -3. 选择OpenHarmony Samples > common下的 **JsHelloWorld**工程,然后点击 **Next**。 +3. 选择OpenHarmony Samples > common下的**JsHelloWorld**工程,然后点击**Next**。 ![zh-cn_image_0000001152459178](figures/zh-cn_image_0000001152459178.png) -4. 设置 **App Name**和 **Project Location**,然后点击 **Finish**,等待Sample工程导入完成。 +4. 设置**App Name**和**Project Location**,然后点击**Finish**,等待Sample工程导入完成。 ![zh-cn_image_0000001207744539](figures/zh-cn_image_0000001207744539.png) 5. 等待工程同步完成,同步成功后,便可以进行OpenHarmony应用开发了。 diff --git a/zh-cn/application-dev/quick-start/installing-openharmony-app.md b/zh-cn/application-dev/quick-start/installing-openharmony-app.md index 175f7261e6..a4f9215e84 100644 --- a/zh-cn/application-dev/quick-start/installing-openharmony-app.md +++ b/zh-cn/application-dev/quick-start/installing-openharmony-app.md @@ -1,41 +1,40 @@ # 安装运行OpenHarmony应用 -安装OpenHarmony应用需要使用hdc工具,通过手动执行命令行完成应用的安装。 -hdc工具本身需要手动从开源仓中获取。然后使用工具将编译后的hap包发送至设备侧,然后通过hdc命令完成app的安装。 +安装OpenHarmony应用可以通过DevEco Studio安装,也可以通过使用hdc工具进行手动安装。 -相关命令如下: +- 通过DevEco Studio安装:将设备连接上DevEco Studio后,点击![zh-cn_image_0000001239855207](figures/zh-cn_image_0000001239855207.png)按钮即可安装。 +- 通过hdc工具安装:手动执行命令行完成应用的安装。 + hdc工具本身需要手动从开源仓中获取。然后使用工具将编译后的hap包发送至设备侧,然后通过hdc命令完成app的安装。 -- 文件发送命令 - **file send *localpath remotepath*** + 相关命令如下: - 命令示例: + - 文件发送命令 + **file send _localpath remotepath_** - ``` - hdc_std file send E:\hwadmin.hap /data/local/tmp/hwadmin.hap - ``` + 命令示例: -- 安装命令 - **install [-r/-d/-g] *package*** + ``` + hdc_std file send E:\hwadmin.hap /data/local/tmp/hwadmin.hap + ``` + - 安装命令 + **install [-r/-d/-g] _package_** - 命令示例: + 命令示例: - ``` - hdc_std install hwadmin.hap - ``` + ``` + hdc_std install hwadmin.hap + ``` + - 日志抓取命令 + **hilog** -- 日志抓取命令 - **hilog** + 命令示例: - 命令示例: - - ``` - hdc_std hilog - ``` - - -完整的hdc工具使用指导及命令格式请参见[hdc_std使用指导](../../device-dev/subsystems/subsys-toolchain-hdc-guide.md)。 + ``` + hdc_std hilog + ``` + 完整的hdc工具使用指导及命令格式请参见[hdc_std使用指导](https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-toolchain-hdc-guide.md)。 diff --git a/zh-cn/application-dev/quick-start/use-wizard-to-create-project.md b/zh-cn/application-dev/quick-start/use-wizard-to-create-project.md index e3c9fa6ee6..c5e42eb8cc 100644 --- a/zh-cn/application-dev/quick-start/use-wizard-to-create-project.md +++ b/zh-cn/application-dev/quick-start/use-wizard-to-create-project.md @@ -14,32 +14,33 @@ ## 操作步骤 1. 通过如下两种方式,打开工程创建向导界面。 - - 如果当前未打开任何工程,可以在DevEco Studio的欢迎页,选择 **Create Project**开始创建一个新工程。 - - 如果已经打开了工程,可以在菜单栏选择 **File > New > New Project**来创建一个新工程。 + - 如果当前未打开任何工程,可以在DevEco Studio的欢迎页,选择**Create Project**开始创建一个新工程。 + - 如果已经打开了工程,可以在菜单栏选择**File > New > New Project**来创建一个新工程。 -2. 根据工程创建向导,选择 **[Standard]Empty Ability**模板,点击 **Next**。 +2. 根据工程创建向导,选择**[Standard]Empty Ability**模板,点击**Next**。 ![zh-cn_image_0000001162463400](figures/zh-cn_image_0000001162463400.png) -3. 点击 **Next**,进入到工程配置阶段,需要根据向导配置工程的基本信息。 - - **Project Name**:工程的名称,可以自定义。 - - **Project Type**:工程的类型,标识该工程是一个[原子化服务](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/atomic-service-definition-0000001090840664)(Service)或传统方式的需要安装的应用(Application)。 - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
+3. 点击**Next**,进入到工程配置阶段,需要根据向导配置工程的基本信息。 + - **Project name**:工程的名称,可以自定义。 + - **Project type**:工程的类型,标识该工程是一个[原子化服务](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/atomic-service-definition-0000001090840664)(Service)或传统方式的需要安装的应用(Application)。 + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** > 如果是创建的原子化服务,则: > > - 原子化服务调试、运行时,在设备桌面上没有应用图标,请使用DevEco Studio的调试和运行功能,来启动原子化服务。 > - > - 原子化服务是免安装的,config.json中自动添加 **installationFree**字段,取值为“true”。 + > - 原子化服务是免安装的,config.json中自动添加**installationFree**字段,取值为“true”。 > - > - 如果entry模块的 **installationFree**字段为true,则其相关的所有hap模块的 **installationFree**字段都默认为true;如果entry模块的 **installationFree**字段为false,则其相关的所有hap模块可以配置为true或false。 + > - 如果entry模块的**installationFree**字段为true,则其相关的所有hap模块的**installationFree**字段都默认为true;如果entry模块的**installationFree**字段为false,则其相关的所有hap模块可以配置为true或false。 > > - 编译构建App时,每个hap包大小不能超过10MB。 - - **Package Name**:软件包名称,默认情况下,应用ID也会使用该名称,应用发布时,应用ID需要唯一。 + - **Bundle name**:软件包名称,默认情况下,应用ID也会使用该名称,应用发布时,应用ID需要唯一。如果“Project Type”选择了Atomic Service,则Bundle Name的后缀名必须是**.hmservice**。 - **Save Location**:工程文件本地存储路径。 + - **Development mode**:选择开发模式,部分模板支持低代码开发,可选择Super Visual。 + - **Language:**支持的开发语言。 - **Compatible API Version**:兼容的SDK最低版本。 - > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
- > OpenHarmony工程如果配置了compileSdkVersion 7以上,对应模块默认使用方舟编译器进行编译,如果要修改编译方式为非方舟编译,在模块级build.gradle的 **ohos**闭包中添加 **arkEnable false**字段。 - - **Language**:支持的开发语言。 - - **Device Type**:该工程模板支持的设备类型。
- ![zh-cn_image_0000001208210505](figures/zh-cn_image_0000001208210505.png) + > ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** + > OpenHarmony工程如果配置了compileSdkVersion 7以上,对应模块默认使用方舟编译器进行编译,如果要修改编译方式为非方舟编译,在模块级build.gradle的**ohos**闭包中添加**arkEnable false**字段。 + - **Device Type**:该工程模板支持的设备类型。 + ![zh-cn_image_0000001196050928](figures/zh-cn_image_0000001196050928.png) -4. 点击 **Finish**,工具会自动生成示例代码和相关资源,等待工程创建完成。 +4. 点击**Finish**,工具会自动生成示例代码和相关资源,等待工程创建完成。 -- GitLab