OpenHarmony應用開發—配置OpenHarmony應用簽名信息
開發OpenHarmony應用的第一步就是配置環境,如果你需要使用開發板(真機)進行調試,那就免不了配置簽名信息,下面我們聊下基于OpenHarmony應用開發的簽名配置。
一、流程
OpenHarmony應用的第一步就是配置環境,簽名流程。使用真機設備運行和調試OpenHarmony應用前,需要對應用進行簽名才能正常運行。配置應用簽名信息的流程如下圖所示。
配置簽名認證時需要密鑰文件(.p12文件)和證書請求文件(.csr文件),并根據密鑰和證書請求文件生成數字證書(.cer文件)和Profile文件(.p7b文件),Profile文件是用來保證應用的完整性。
二、如何生成應用簽名
2.1、生成密鑰和證書請求文件
說明:通過DevEco Studio生成生成密鑰和證書請求文件
在主菜單欄點擊Build > Generate Keyand CSR。
創建Key Store File
簽名文件其他配置
認證請求文件
點擊“Finish”后可以生成認證請求文件,可以查看對應的文件夾,如下圖:
使用命令行工具生成應用證書文件
使用生成密鑰和證書請求文件中生成的證書請求文件,來生成應用簽名所需的數字證書文件。生成方法如下:
進入DevEco Studio安裝目錄.\SDK\toolchains\lib,執行以下命令:
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
其中,只需要修改輸入和輸出即可快速生成證書文件,即修改-infile指定證書請求文件csr文件路徑,-outfile指定輸出證書文件名及路徑。
關于該命令的參數說明如下:
- alias:用于簽發證書的CA私鑰別名,OpenHarmony社區CA私鑰存于OpenHarmony.p12密鑰庫文件中,該參數不能修改。
- infile:證書請求(CSR)文件的路徑。
- outfile:輸出證書鏈文件名及路徑。
- keystore:簽發證書的CA密鑰庫路徑,OpenHarmony密鑰庫文件名為OpenHarmony.p12,文件在OpenHarmony SDK中Sdk\toolchains\lib路徑下,該參數不能修改。請注意,該OpenHarmony.p12文件并不是生成密鑰和證書請求文件中生成的.p12文件。
- sigalg:證書簽名算法,該參數不能修改。
- storepass:密鑰庫密鑰,密鑰為123456,該參數不能修改。
- ext:證書擴展項,該參數不能修改。
- validity:證書有效期,自定義天數,命令中設置了3650天。
- rfc:輸出文件格式指定,該參數不能修改。
你可能遇到下面的問題。
問題1:keystore OpenHarmony.p12在Sdk\toolchains\lib下沒有對應的文件?
問題分析:OpenHarmony SDK與HarmonyOS SDK不同,你確認在DevEco Studio的Settings中是否把兩個SDK的目錄配置為相同,建議配置成不同的路徑,用于下載或更新SDK。
解決方案1:OpenHarmony SDK、HarmonyOS SDK存放到不同的目錄下,再下載和更新SDK。查看兩個SDK\toolchains\lib下的文件區別,如下:
解決方案2:不推薦,手動下載OpenHarmony SDK,解壓相關的文件(OpenHarmony.p12)到指定目錄(Sdk\toolchains\lib)下即可
查看解決方案:配置OpenHarmony應用簽名信息里的幾個文件沒有
SDK-2.0-Cancry下載地址
重新執行生成證書文件命令,如下:
生成應用Profile文件
Profile文件包含OpenHarmony應用的包名、數字證書信息、描述應用允許申請的證書權限列表,以及允許應用調試的設備列表(如果應用類型為Release類型,則設備列表為空)等內容,每個應用包中均必須包含一個Profile文件。
進入Sdk\toolchains\lib目錄下,打開命令行工具,執行如下命令。
java -jar provisionsigtool.jar sign --in UnsgnedReleasedProfileTemplate.json --out OH_App_debug.p7b --keystore OpenHarmony.p12 --storepass 123456 --alias "OpenHarmony Application Profile Release" --sigAlg SHA256withECDSA --cert OpenHarmonyProfileRelease.pem --validity 365 --developer-id xxx --bundle-name xxx.myAppDemo --permission ohos.permission.READ_CONTACTS --permission ohos.permission.WRITE_CONTACTS --distribution-certificate xxx\app_debug.cer
參數說明:
- provisionsigtool:Profile文件生成工具,文件在OpenHarmony SDK的Sdk\toolchains\lib路徑下。
- in:Profile模板文件所在路徑,文件在OpenHarmony SDK中Sdk\toolchains\lib路徑下,該參數不能修改。
- out:輸出的Profile文件名和路徑。
- keystore:簽發證書的密鑰庫路徑,OpenHarmony密鑰庫文件名為OpenHarmony.p12,文件在OpenHarmony SDK中Sdk\toolchains\lib路徑下,該參數不能修改。
- storepass:密鑰庫密鑰,密鑰為123456,該參數不能修改。
- alias:用于簽名Profile私鑰別名,OpenHarmony社區CA私鑰存于OpenHarmony.p12密鑰庫文件中,該參數不能修改。
- sigalg:證書簽名算法,該參數不能修改。
- cert:簽名Profile的證書文件路徑,文件在OpenHarmony SDK中Sdk\toolchains\lib路徑下,該參數不能修改。
- validity:證書有效期,自定義天數。
- developer-id:開發者標識符,自定義一個字符串。
- bundle-name:填寫應用包名。
- permission:可選字段,如果不需要,則可以不用填寫此字段;如果需要添加多個受限權限,則如示例所示重復輸入。受限權限列表如下:ohos.permission.READ_CONTACTS、ohos.permission.WRITE_CONTACTS。
- distribution-certificate:生成應用證書文件中生成的證書文件。
執行命令后,就可以生成應用Profile文件,如下:
三、真機調試
接下去我們可以拿真機進行調試,在真機設備上調試前,需要使用制作的私鑰(.p12)文件、證書(.cer)文件和Profile(.p7b)文件對調試的模塊進行簽名。
3.1、配置簽名
在DevEco Studio的菜單上打開File > Project Structure,點擊Project > Signing Configs > debug窗口中,去除勾選“Automatically generate signing”,然后配置指定模塊的調試簽名信息。
- Store File:選擇密鑰庫文件,文件后綴為.p12,該文件為生成密鑰和證書請求文件中生成的.p12文件。
- Store Password:輸入密鑰庫密鑰,該密鑰為生成密鑰和證書請求文件中填寫的密鑰庫密鑰保持一致。
- Key Alias:輸入密鑰的別名信息,與生成密鑰和證書請求文件中填寫的別名保持一致。
- Key Password:輸入密鑰的密鑰,與Store Password保持一致。
- Sign Alg:簽名算法,固定為SHA256withECDSA。
- Profile File:選擇生成應用Profile文件中生成的Profile文件,文件后綴為.p7b。
- Certpath File:選擇生成應用證書文件中生成的數字證書文件,文件后綴為.cer。
設置簽名信息后,點擊“OK”進行保存,然后可以在工程build.gradle中查看簽名的配置信息。
3.2、編譯打包APP
配置簽名后,可以通過Build->Build Hap(s)/APP(s)->Build Hap(s),編譯完成后,OpenHarmony應用的Hap包可以從工程的bulid目錄下獲取.如下: