很多朋友都眼巴巴在等著將手機(jī)刷機(jī)到鴻蒙系統(tǒng)。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的城中網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
“千里之行,始于足下”,不論你刷機(jī)到鴻蒙系統(tǒng),原生安卓系統(tǒng),還是LineageOS等,都必須要完成第一步解除BL鎖。
具體到小米手機(jī),從提交申請(qǐng)到拿到解鎖許可,需要一個(gè)周(168小時(shí))的等待時(shí)間。(注意,有些品牌是不允許解鎖的,需要你自己去核實(shí))。
這個(gè)系列9節(jié)課程,我教你從零起步制作適配機(jī)型的鴻蒙ROM,課程大綱如下:
事先提醒, “刷機(jī)有風(fēng)險(xiǎn),入坑須謹(jǐn)慎” 。倘若并非安卓開(kāi)發(fā)程序員,請(qǐng)務(wù)必不要在你刷過(guò)的手機(jī)上使用金融類(lèi)軟件。
另外,只拿你的備用機(jī)來(lái)跟進(jìn)本課程。(我用主力機(jī)K40來(lái)演示本節(jié)課的解鎖操作,后面的8節(jié)課程全部使用備用機(jī)小米8青春版)。此系列課程服務(wù)零基礎(chǔ)用戶(hù),心急的開(kāi)發(fā)者用戶(hù)可以等到第七節(jié)再來(lái),或者去看看我的Emacs教程。
好了,下面我們馬上開(kāi)始。
從路徑 “設(shè)置”-- "我的設(shè)備“ -- "全部參數(shù)" -- 找到“MIUI版本”,連續(xù)敲擊5~10次,打開(kāi)“開(kāi)發(fā)者模式”。
再退回到“設(shè)置”,按照路徑 “設(shè)置”-- “更多設(shè)置” -- "開(kāi)發(fā)者選項(xiàng)”下打開(kāi) “USB調(diào)試”:
完成以上兩步之后呢,你的電腦就能通過(guò)USB連結(jié)讀取你手機(jī)的數(shù)據(jù)了。
在路徑 “設(shè)置”-- “更多設(shè)置” -- "開(kāi)發(fā)者選項(xiàng)” -- "設(shè)備解鎖狀態(tài)",綁定帳號(hào)與設(shè)備(如果多臺(tái)設(shè)備,最好用不同的小米帳號(hào)解鎖):
切換到數(shù)據(jù)流量,綁定成功后將會(huì)看到下面的提示:
登錄小米官網(wǎng),點(diǎn)選進(jìn)入“社區(qū)”:
在小米社區(qū)的導(dǎo)航欄點(diǎn)選“手機(jī)解鎖”:
立刻就能看到解鎖界面:
單擊"Unlock Now",將展現(xiàn)這個(gè)界面:
此處的英文提醒,解鎖之后將會(huì)置手機(jī)與不安全之中,容易受到惡意軟件的攻擊。同時(shí),我聽(tīng)說(shuō),解鎖之后將不再享有小米的質(zhì)保,請(qǐng)三思之后再解鎖。
下載”Mi Unlock“到本地。
在路徑 “設(shè)置”-- “更多設(shè)置” -- "備份與恢復(fù)":
選擇“從電腦上備份恢復(fù)”:
點(diǎn)選“手機(jī)備份恢復(fù)”:
選擇全部?jī)?nèi)容,開(kāi)始備份:
備份完成后,USB線(xiàn)將手機(jī)連接到電腦:
從路徑 MIUI -- Backup -- AllBackup 找到下面日期序列號(hào)的備份文件,并拷貝到桌面上留著后續(xù)恢復(fù)備份:
傳輸完畢后,開(kāi)始執(zhí)行下一步解鎖操作。
接著解壓剛才下載的“解鎖壓縮包”:
在新解壓的文件夾“ miflash_unlock-en-5.5.224.24” 中找到“batch_unlock.exe”文件,
雙擊打開(kāi),左下角提示登錄小米賬戶(hù):
這是登錄界面:
登錄后就這樣:
繼續(xù)操作手機(jī)進(jìn)入到Fastmode模式。關(guān)閉手機(jī)后,同時(shí)按住音量鍵的向下箭頭和電源按鈕,等待3秒鐘就會(huì)進(jìn)入到Fastmode模式。
再回到剛才的解鎖界面,點(diǎn)擊刷新就能看到手機(jī)的序列號(hào)和解鎖狀態(tài):
你能看到我這臺(tái)K40 (代號(hào)alioth) 是”Locked”已解鎖的狀態(tài),點(diǎn)選解鎖之后呢,會(huì)提醒你等待168小時(shí)之后再來(lái)操作。
一周之后再來(lái)解鎖,還要將重復(fù)第四步的備份工作。并在解鎖之后,將手機(jī)從備份中恢復(fù)。
此刻手機(jī)還是Fastmode模式,只需重啟即可回到工作狀態(tài)。
重申提醒, “刷機(jī)有風(fēng)險(xiǎn),入坑須謹(jǐn)慎”, 務(wù)必只用你的備用機(jī)來(lái)跟進(jìn)本課程。課程服務(wù)零基礎(chǔ)的用戶(hù),心急的開(kāi)發(fā)者朋友不妨移步看兩眼我的Emacs系列教程。
這個(gè)系列9節(jié)課程,我教你從零起步制作適配機(jī)型的鴻蒙ROM,課程大綱如下:
開(kāi)發(fā)前可以了解下鴻蒙: [鴻蒙開(kāi)發(fā) 序]華為鴻蒙操作系統(tǒng)(HarmonyOS)簡(jiǎn)介及開(kāi)發(fā)環(huán)境搭建
開(kāi)發(fā)前的準(zhǔn)備:「鴻蒙開(kāi)發(fā) 1」華為鴻蒙應(yīng)用集成開(kāi)發(fā)環(huán)境DevEco Studio安裝和設(shè)置
了解鴻蒙應(yīng)用開(kāi)發(fā)的基本開(kāi)發(fā)流程:「鴻蒙開(kāi)發(fā) 2」第一個(gè)華為鴻蒙(HarmonyOS)應(yīng)用程序(App)
本章目標(biāo):
1 了解華為鴻蒙應(yīng)用開(kāi)發(fā)的可視化(低代碼)方式
2 通過(guò)構(gòu)建一個(gè)簡(jiǎn)單的具有頁(yè)面跳轉(zhuǎn)功能的應(yīng)用
低代碼開(kāi)發(fā)方式,即通過(guò)可視化界面開(kāi)發(fā)方式快速構(gòu)建布局、編輯UI界面,可有效降低用戶(hù)的上手成本并提升用戶(hù)構(gòu)建UI界面的效率。
1 打開(kāi)DevEco Studio,創(chuàng)建一個(gè)新工程,選擇支持Phone / Tablet / Wearable(手機(jī) / 平板 / s可穿戴)的模板,我們?cè)诖酥苯舆x擇Empty Ability
Project name工程名稱(chēng)填SuperVisual
Development mode開(kāi)發(fā)方式選擇Super Visual
其它的可以使用默認(rèn)設(shè)置,點(diǎn)擊完成,進(jìn)入編輯界面
1 在Project(項(xiàng)目)窗口,刪除工程運(yùn)行默認(rèn)的入口文件夾:“entry src main js default pages index”文件夾
2 在Project窗口,選擇工程中的“entry src main js default pages”,單擊鼠標(biāo)右鍵,選擇“New JS Visual”
JS visual name填first,點(diǎn)擊完成,進(jìn)入編輯界面
創(chuàng)建完成后,可以看到“entry src main supervisual default pages page page.visual”的文件目錄結(jié)構(gòu)
3 第一個(gè)頁(yè)面內(nèi)有一個(gè)容器、文本和一個(gè)按鈕,通過(guò)Div、Text和Button組件來(lái)實(shí)現(xiàn)
(1)分別選中first.visual畫(huà)面中的Text、Div組件,單擊鼠標(biāo)右鍵,選擇Delete刪除
(2)選中UI Control中的Div組件,將其拖至畫(huà)布
點(diǎn)擊右側(cè)屬性樣式欄中的通用樣式圖標(biāo)(General),設(shè)置Div組件的高度Height為100%,使其占滿(mǎn)屏幕
點(diǎn)擊右側(cè)屬性樣式欄中的樣式圖標(biāo)(Flex),設(shè)置Div組件的FlexDirection樣式為column,使Div的主軸垂直;設(shè)置Div組件的JustifyContent樣式為center,使得其子組件在主軸上居中顯示;設(shè)置Div組件的AlignItems樣式為center,使得其子組件在交叉軸上居中顯示
(3)選中UI Control中的Text組件,將其拖至Div組件的中央?yún)^(qū)域
點(diǎn)擊右側(cè)屬性樣式欄中的屬性圖標(biāo)(Properties),設(shè)置Text組件的Content屬性為 “ Hello World ”
點(diǎn)擊右側(cè)屬性樣式欄中的通用樣式圖標(biāo)(General),設(shè)置Text組件的寬(width)為100%,高(height)為100px
點(diǎn)擊右側(cè)屬性樣式欄中的樣式圖標(biāo)(Feature),設(shè)置組件的FontSize樣式為60px,使得其文字放大;設(shè)置組件的TextAlign樣式為center,使得組件文字居中顯示
(4)選中UI Control中的Button組件,將其拖至Text組件下面
點(diǎn)擊右側(cè)屬性樣式欄中的屬性圖標(biāo)(Properties),設(shè)置Button組件的Value屬性為 “ Next ”,
點(diǎn)擊右側(cè)屬性樣式欄中的通用樣式圖標(biāo)(General),設(shè)置按的寬(width)為40%,高(height)為60px
點(diǎn)擊右側(cè)屬性樣式欄中的樣式圖標(biāo)(Feature),設(shè)置組件的FontSize樣式為40px
至此,第一個(gè)頁(yè)面創(chuàng)建完成
我們可以在預(yù)覽窗口中看效果,點(diǎn)擊右側(cè)邊欄的Preview打開(kāi)預(yù)覽窗口
1 在Project窗口,選擇工程中的“entry src main js default pages”,單擊鼠標(biāo)右鍵,選擇“New JS Visual”
Visual配置界面,JS visual name填second,回車(chē)(Enter鍵)或者點(diǎn)擊完成,進(jìn)入編輯界面
2 第二個(gè)頁(yè)面中有一個(gè)容器和文本,通過(guò)Div、Text組件實(shí)現(xiàn),現(xiàn)在編輯器已經(jīng)為我們創(chuàng)建好了,我們就來(lái)修改下它們的屬性(你也可以刪除原有的自己創(chuàng)建,具體步驟參考本章第二節(jié)“二 創(chuàng)建第一個(gè)頁(yè)面”)。
選中Text組件,點(diǎn)擊右側(cè)屬性樣式欄中的屬性圖標(biāo)(Properties),設(shè)置Text組件的Content屬性為 “ Hi,I'm always here. ”
點(diǎn)擊右側(cè)屬性樣式欄中的通用圖標(biāo)(General),設(shè)置組件的寬(width)為100%,高為60px
點(diǎn)擊右側(cè)屬性樣式欄中的樣式圖標(biāo)(Feature),設(shè)置組件的FontSize樣式為36px,TextAlign樣式為center
這樣我們的第二個(gè)頁(yè)面創(chuàng)建成功了
1 在Project窗口,打開(kāi)工程中的“entry src main js default pages first first.js”, 導(dǎo)入router模塊,頁(yè)面路由router根據(jù)頁(yè)面的uri來(lái)找到目標(biāo)頁(yè)面,從而實(shí)現(xiàn)跳轉(zhuǎn)。示例代碼如下:
2 打開(kāi)或者切換到first.visual頁(yè)面,選中畫(huà)布上的Button組件,點(diǎn)擊右側(cè)屬性樣式欄中的事件圖標(biāo)(Events),鼠標(biāo)點(diǎn)擊Click事件的輸入框,選擇launch事件
3 在預(yù)覽窗口中查看項(xiàng)目效果,點(diǎn)擊Next按鈕后發(fā)現(xiàn)我們的頁(yè)面成功跳轉(zhuǎn)了。
到此,本章的目標(biāo)就完成了。
Ability
Ability是應(yīng)用所具備能力的抽象
2.onActive()
Page會(huì)在進(jìn)入INACTIVE狀態(tài)后來(lái)到前臺(tái),然后系統(tǒng)調(diào)用此回調(diào)。Page在此之后進(jìn)入ACTIVE狀態(tài),該狀態(tài)是應(yīng)用與用戶(hù)交互的狀態(tài)。Page將保持在此狀態(tài),除非某類(lèi)事件發(fā)生導(dǎo)致Page失去焦點(diǎn),比如用戶(hù)點(diǎn)擊返回鍵或?qū)Ш降狡渌鸓age。當(dāng)此類(lèi)事件發(fā)生時(shí),會(huì)觸發(fā)Page回到INACTIVE狀態(tài),系統(tǒng)將調(diào)用onInactive()回調(diào)。此后,Page可能重新回到ACTIVE狀態(tài),系統(tǒng)將再次調(diào)用onActive()回調(diào)。因此,開(kāi)發(fā)者通常需要成對(duì)實(shí)現(xiàn)onActive()和onInactive(),并在onActive()中獲取在onInactive()中被釋放的資源。
3.onInactive()
當(dāng)Page失去焦點(diǎn)時(shí),系統(tǒng)將調(diào)用此回調(diào),此后Page進(jìn)入INACTIVE狀態(tài)。開(kāi)發(fā)者可以在此回調(diào)中實(shí)現(xiàn)Page失去焦點(diǎn)時(shí)應(yīng)表現(xiàn)的恰當(dāng)行為。
4.onBackground()
如果Page不再對(duì)用戶(hù)可見(jiàn),系統(tǒng)將調(diào)用此回調(diào)通知開(kāi)發(fā)者用戶(hù)進(jìn)行相應(yīng)的資源釋放,此后Page進(jìn)入BACKGROUND狀態(tài)。開(kāi)發(fā)者應(yīng)該在此回調(diào)中釋放Page不可見(jiàn)時(shí)無(wú)用的資源,或在此回調(diào)中執(zhí)行較為耗時(shí)的狀態(tài)保存操作。
5.onForeground()
處于BACKGROUND狀態(tài)的Page仍然駐留在內(nèi)存中,當(dāng)重新回到前臺(tái)時(shí)(比如用戶(hù)重新導(dǎo)航到此Page),系統(tǒng)將先調(diào)用onForeground()回調(diào)通知開(kāi)發(fā)者,而后Page的生命周期狀態(tài)回到INACTIVE狀態(tài)。開(kāi)發(fā)者應(yīng)當(dāng)在此回調(diào)中重新申請(qǐng)?jiān)趏nBackground()中釋放的資源,最后Page的生命周期狀態(tài)進(jìn)一步回到ACTIVE狀態(tài),系統(tǒng)將通過(guò)onActive()回調(diào)通知開(kāi)發(fā)者用戶(hù)。
6.onStop()
系統(tǒng)將要銷(xiāo)毀Page時(shí),將會(huì)觸發(fā)此回調(diào)函數(shù),通知用戶(hù)進(jìn)行系統(tǒng)資源的釋放。銷(xiāo)毀Page的可能原因包括以下幾個(gè)方面:
用戶(hù)通過(guò)系統(tǒng)管理能力關(guān)閉指定Page,例如使用任務(wù)管理器關(guān)閉Page。
用戶(hù)行為觸發(fā)Page的terminateAbility()方法調(diào)用,例如使用應(yīng)用的退出功能。
配置變更導(dǎo)致系統(tǒng)暫時(shí)銷(xiāo)毀Page并重建。
系統(tǒng)出于資源管理目的,自動(dòng)觸發(fā)對(duì)處于BACKGROUND狀態(tài)Page的銷(xiāo)毀。
AbilitySlice生命周期
AbilitySlice生命周期回調(diào)與Page的相應(yīng)回調(diào)類(lèi)似,因此不再贅述。由于AbilitySlice承載具體的頁(yè)面,開(kāi)發(fā)者必須重寫(xiě)AbilitySlice的onStart()回調(diào),并在此方法中通過(guò)setUIContent()方法設(shè)置頁(yè)面。
Page與AbilitySlice生命周期關(guān)聯(lián)
當(dāng)AbilitySlice處于前臺(tái)且具有焦點(diǎn)時(shí),其生命周期狀態(tài)隨著所屬Page的生命周期狀態(tài)的變化而變化。當(dāng)一個(gè)Page擁有多個(gè)AbilitySlice時(shí),例如:MyAbility下有FooAbilitySlice和BarAbilitySlice,當(dāng)前FooAbilitySlice處于前臺(tái)并獲得焦點(diǎn),并即將導(dǎo)航到BarAbilitySlice,在此期間的生命周期狀態(tài)變化順序?yàn)椋?/p>
對(duì)應(yīng)兩個(gè)slice的生命周期方法回調(diào)順序?yàn)椋?/p>
FooAbilitySlice.onInactive() -- BarAbilitySlice.onStart() -- BarAbilitySlice.onActive() -- FooAbilitySlice.onBackground()
在整個(gè)流程中,MyAbility始終處于ACTIVE狀態(tài)。但是,當(dāng)Page被系統(tǒng)銷(xiāo)毀時(shí),其所有已實(shí)例化的AbilitySlice將聯(lián)動(dòng)銷(xiāo)毀,而不僅是處于前臺(tái)的AbilitySlice。
參考 鴻蒙官方文檔(點(diǎn)擊傳送門(mén)) ,做一下流程梳理簡(jiǎn)化,及踩坑記錄
華為將真機(jī)調(diào)試分成物理真機(jī)和遠(yuǎn)程真機(jī)。這里說(shuō)的都是物理真機(jī)(手機(jī)、平板)。鴻蒙真機(jī)調(diào)試巨復(fù)雜,不像Android那么容易方便。
貼一下官方的調(diào)試流程圖:
總結(jié)一下:
上面這個(gè)流程可以忽略,沒(méi)講到重點(diǎn)。真機(jī)調(diào)試是需要在 ? AppGallery Connect 中創(chuàng)建應(yīng)用的,調(diào)試應(yīng)用需要的cer和p7b文件是從這里生成的。
先決條件:
1. 鴻蒙手機(jī)通過(guò)USB連接電腦,并開(kāi)啟USB調(diào)試。
2. 一個(gè)華為開(kāi)發(fā)者賬號(hào),實(shí)名認(rèn)證
3. APP開(kāi)發(fā)工具DevEco-Studio
關(guān)鍵流程:
1. Studio創(chuàng)建應(yīng)用
2. 如果未登錄過(guò),F(xiàn)ile Project Structure Project Signing Configs簽名配置頁(yè),點(diǎn)擊“Sign In”
3. AppGallery創(chuàng)建應(yīng)用(包名和Studio創(chuàng)建的一樣)
4. 官方文檔到這在簽名配置頁(yè)就點(diǎn)Try Again可以自動(dòng)簽名,我試了不行,以下全是手動(dòng)
5. Studio中Build Generate key and CSR? ?生成p12和csr文件
6. 獲取手機(jī)udid,命令行hdc shell bm get -udid(下一步設(shè)備管理要用)
7. AppGallery主頁(yè) 用戶(hù)與訪(fǎng)問(wèn) 左側(cè)設(shè)備管理添加udid的設(shè)備(生成p7b時(shí)要用)
8. AppGallery主頁(yè) 用戶(hù)與訪(fǎng)問(wèn) 左側(cè)證書(shū)管理生成cer文件(生成p7b和簽名配置要用)
9. AppGallery主頁(yè) 我的項(xiàng)目 左側(cè)HarmonyOS應(yīng)用 HAP provision profile,生成p7b文件
10. 最后在簽名配置頁(yè)配好 p12、p7b、cer等參數(shù),運(yùn)行鴻蒙應(yīng)用到真機(jī)就行了
網(wǎng)頁(yè)名稱(chēng):鴻蒙開(kāi)發(fā)課程流程,什么是鴻蒙課程
文章網(wǎng)址:http://m.2m8n56k.cn/article48/hoihhp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站排名、電子商務(wù)、動(dòng)態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)