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