Harmonyos next 鴻蒙原生 證書(shū) & 打包到真機(jī)

harmonyos next 鴻蒙打包到真機(jī)還比較麻煩,如果是個(gè)人開(kāi)發(fā)者,只有一臺(tái)設(shè)備,那直接選擇自動(dòng)簽名Automatically generate signature就可以。但是如果是多人開(kāi)發(fā)多臺(tái)設(shè)備就需要配置了,這樣切換分支的時(shí)候用同一配置也能打包。

配置簽名需要四個(gè)文件:
.p12、csr
.p7b
.cer

應(yīng)用配置文件 p12、csr

這個(gè)文件是在編輯器里(Build->Generate Key and CSR)生成的,同步生成的還有 Store password、Key alias、Key password,p12文件和這三個(gè)值一一對(duì)應(yīng)。

p12:是放在應(yīng)用里的
csr:是用來(lái)生成cer的

證書(shū)文件 cer

證書(shū)等生成的位置:證書(shū)、APP ID和Profile

證書(shū)生成需要csr文件:


每個(gè)賬號(hào)下只能有1個(gè)正式,2個(gè)調(diào)試。
多個(gè)應(yīng)用,證書(shū)都可以用一個(gè),例如元服務(wù)和App都可以用同一個(gè)。

我們至少需要申請(qǐng)一個(gè)正式證書(shū),一個(gè)測(cè)試證書(shū)。正式證書(shū)用來(lái)發(fā)布,測(cè)試證書(shū)用來(lái)開(kāi)發(fā)調(diào)試。并且關(guān)聯(lián)設(shè)備的p7b文件需要此證書(shū)。

profile文件 p7b, 用來(lái)綁定設(shè)備

p7b文件和cer文件是成對(duì)出現(xiàn)的,分為測(cè)試和正式。p12則是同一個(gè)。

新增profile時(shí),需要填寫(xiě)設(shè)備的uuid,把所有的調(diào)試設(shè)備都關(guān)聯(lián)起來(lái),那么打包到真機(jī)時(shí)就不會(huì)有問(wèn)題了。

獲取udid地址注冊(cè)調(diào)試設(shè)備
hdc shell bm get --udid

可能的問(wèn)題:

  1. 需要先配置環(huán)境變量,不然一直hdc無(wú)效
  2. 如果出現(xiàn) [Fail]ExecuteCommand need connect-key? please confirm a device by help info,關(guān)掉 USB調(diào)試 開(kāi)關(guān)后重新打開(kāi)。

最后

會(huì)生成5個(gè)文件,即1個(gè)p12文件,2個(gè)cer文件和2個(gè)p7b文件。共用一個(gè)p12文件,測(cè)試和正式分別用對(duì)應(yīng)的cer和p7b文件。

簽名機(jī)制和安卓幾乎完全不一致,這里在簡(jiǎn)單總結(jié)一下:
簽名證書(shū)過(guò)期是cer過(guò)期了,cer生成需要用到csr文件,csr是和p12同時(shí)生成的,是在編譯器里生成。
然后拿著新的cer文件去生成p7b文件,其中這里有分正式和調(diào)試證書(shū)

如果多個(gè)應(yīng)用,我們就有元服務(wù)和App。證書(shū)文件cer是需要共用的,因?yàn)橹荒苌?個(gè)且還要區(qū)分正式和調(diào)試。
共用cer證書(shū),意味著要共用p12文件,而p12文件是在編譯器里生成的。

這里就有一個(gè)很大的誤區(qū)安卓編譯器里生成的簽名文件是和app一一對(duì)應(yīng)的,相當(dāng)于這個(gè)應(yīng)用的唯一標(biāo)識(shí)了;但是鴻蒙不一樣,在其他項(xiàng)目中生成的p12文件,可以在另一個(gè)項(xiàng)目中用,因?yàn)樗鼈兊淖C書(shū)文件 cer是一樣的。

"signingConfigs": [
      {
        "name": "debug",
        "type": "HarmonyOS",
        "material": {
          "storePassword": "0000001966A961ECA0DF4FBAA4C060E29B1A336B653164554A",
          "certpath": "./key/app_test.cer",
          "keyAlias": "bevol",
          "keyPassword": "000000196B1000F4641D95F1452B7E8CFCC405FE6BAB54360ED7C",
          "profile": "./key/app_test.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "./key/release/p12-release.p12"
        }
      },
      {
        "name": "release",
        "type": "HarmonyOS",
        "material": {
          "certpath": "./key/release/cer-release.cer",
          "storePassword": "000000193669461AA978895500C3514C930B9C59B92E6F7D633B05B6D",
          "keyAlias": "bevol",
          "keyPassword": "00000019F22018ADDCC704CB85EDA3F0B4DE492DB9CE628CFB01DE563FF",
          "profile": "./key/release/app20240923-release.p7b",
          "signAlg": "SHA256withECDSA",
          "storeFile": "./key/release/p12-release.p12"
        }
      }
    ]

所以元服務(wù)需要用App里的p12文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容