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