本發(fā)明涉及智能電視技術(shù)領(lǐng)域,尤其涉及用于一種基于Android電視的修復(fù)系統(tǒng)及修復(fù)方法。
背景技術(shù):
公司的智能電視平臺以及型號很多,在我們做各個型號的項目的時候,會集成各種各樣的應(yīng)用(安卓系統(tǒng)的apk程序)。由于安全性的原因,如果應(yīng)用想申請比較高的系統(tǒng)權(quán)限,那么就必須使用本系統(tǒng)的系統(tǒng)簽名文件來進行簽名才可以。在做某個項目時,經(jīng)常會更新一些應(yīng)用,這些應(yīng)用的作者會直接把apk發(fā)給系統(tǒng)集成人員集成進去,但是這些apk可能并沒有進行系統(tǒng)簽名,或者是用其他系統(tǒng)簽名文件進行了簽名,這個時候如果把apk集成進了系統(tǒng)就會出現(xiàn)問題。
現(xiàn)有技術(shù)中通過OTA升級系統(tǒng)來更新漏洞修復(fù),但是當(dāng)用戶發(fā)現(xiàn)并投訴某些bug時,售后維修人員會上門維修,一般通過恢復(fù)出廠設(shè)置或者重新燒錄系統(tǒng)等手段來解決問題, 但是出現(xiàn)某些嚴重問題,比如系統(tǒng)都無法進入時,維修人員就束手無策了,因為如果要進行強制升級,一般都先使用筆記本連接調(diào)試串口線接入電視的電路板,但是出于安全原因,默認出廠這個開關(guān)是關(guān)閉的,必須在進入系統(tǒng)后按某些特殊的按鍵才能打開調(diào)試串口開關(guān),但是系統(tǒng)都無法進入,串口也就無法打開了,這個時候只能進行返板,將板子寄回給工廠,這對于用戶來說是很難接受的,短期內(nèi)無法再使用電視,更重要的是會對廠家品牌、口碑造成嚴重的破壞,這對用戶以及廠商的損失都是無法估量的。
目前市面上絕大多數(shù)的智能電視都是android系統(tǒng),該系統(tǒng)本質(zhì)是一個linux內(nèi)核,加上java虛擬機,以及在虛擬機上跑的framework框架層,以及應(yīng)用層。Linux內(nèi)核是穩(wěn)定的,絕大多數(shù)問題是出在了java虛擬機之上的framework框架層,以及應(yīng)用層。一般說的android也是java虛擬機及其之上的部分。比如碰系統(tǒng)在啟動的時候解析某個文件,由于這個文件被破壞了,導(dǎo)致無法解析完成,造成了永遠卡頓在開機界面。
因此現(xiàn)有技術(shù)中智能電視中的系統(tǒng)文件出現(xiàn)情況,系統(tǒng)無法進入,而且維修周期長,增加了返廠定位維修的成本,為用戶使用智能電視帶來了不便。
因此,現(xiàn)有技術(shù)還有待于改進和發(fā)展。
技術(shù)實現(xiàn)要素:
鑒于現(xiàn)有技術(shù)的不足,本發(fā)明目的在于提供一種基于Android電視的修復(fù)系統(tǒng)及修復(fù)方法,旨在解決現(xiàn)有技術(shù)中智能電視中的系統(tǒng)文件出現(xiàn)情況,系統(tǒng)無法進入,而且維修周期長,增加了返廠定位維修的成本,為用戶使用智能電視帶來了不便的技術(shù)問題。
本發(fā)明的技術(shù)方案如下:
一種基于Android電視的修復(fù)系統(tǒng),其中,修復(fù)系統(tǒng)運行在linux內(nèi)核上,修復(fù)系統(tǒng)包括位于最底層的驅(qū)動層,位于中間層的事件層,及位于最上層的應(yīng)用層;所述驅(qū)動層用于提供基礎(chǔ)繪圖功能和用于支持所述事件層的運行;所述事件層用于提供UI功能和收集用戶操作事件并上傳給所述應(yīng)用層;所述應(yīng)用層用于捕捉用戶的輸入并處理以及調(diào)用事件層輸出UI操作界面。
所述的基于Android電視的修復(fù)系統(tǒng),其中,所述驅(qū)動層包括渲染器、幀緩沖區(qū)、虛擬終端驅(qū)動、輸入驅(qū)動,所述渲染器用于提供基礎(chǔ)繪圖功能,所述幀緩沖區(qū)用于將顯示設(shè)備抽象為幀緩沖區(qū),所述虛擬終端驅(qū)動用于獲取當(dāng)前使用的圖形終端,所述輸入驅(qū)動用于讀取用戶輸入,并把讀取的輸入放到隊列中供事件層處理。
所述的基于Android電視的修復(fù)系統(tǒng),其中,所述事件層包括快速開發(fā)網(wǎng)絡(luò)界面和事件收集模塊,所述快速開發(fā)網(wǎng)絡(luò)界面用于對渲染器進行封裝及對幀緩沖區(qū)操作后提供UI功能,所述事件收集模塊用于收集用戶的操作,并傳送給應(yīng)用層,供應(yīng)用層響應(yīng)處理。
所述的基于Android電視的修復(fù)系統(tǒng),其中,所述應(yīng)用層包括修復(fù)系統(tǒng)界面,修復(fù)系統(tǒng)功能模塊,消息按鍵處理模塊,所述修復(fù)系統(tǒng)界面用于調(diào)用快速開發(fā)網(wǎng)絡(luò)界面后畫出操作界面,所述修復(fù)系統(tǒng)功能模塊用于提供各種對系統(tǒng)進行修復(fù)的功能操作,所述消息按鍵處理模塊用于捕捉用戶的輸入,并處理對應(yīng)的輸入。
所述的基于Android電視的修復(fù)系統(tǒng),其中,所述事件收集模塊用于讀取linux中的外設(shè)輸入設(shè)備文件后,存放到隊列中,傳送給應(yīng)用層,由應(yīng)用層讀取后響應(yīng)處理。
一種基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法,其中,方法包括步驟:
A、當(dāng)Android電視中無法啟動時,獲取用戶輸入的按鍵,linux內(nèi)核檢測按鍵為預(yù)先定義的啟動修復(fù)漏洞系統(tǒng)的特定按鍵后,啟動修復(fù)系統(tǒng)界面;
B、當(dāng)修復(fù)系統(tǒng)界面啟動后,修復(fù)系統(tǒng)依次執(zhí)行不同的漏洞修復(fù)操作對Android電視的系統(tǒng)故障進行修復(fù),并實時檢測修復(fù)進程;
C、當(dāng)檢測到Android電視的系統(tǒng)故障修復(fù)完成后,控制Android電視退出修復(fù)系統(tǒng)。
所述的基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法,其中,所述步驟A之前還包括步驟:
S、預(yù)先修改linux內(nèi)核,將Android電視的某個按鍵設(shè)置為啟動修復(fù)系統(tǒng)的特定按鍵。
所述的基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法,其中,所述步驟B具體包括步驟:
B1、當(dāng)修復(fù)系統(tǒng)界面啟動后,控制Android電視恢復(fù)出廠裝置;
B2、判斷Android電視的系統(tǒng)故障修復(fù)是否成功,若修復(fù)成功,則執(zhí)行步驟C,若修復(fù)失敗,則控制打開通用異步收發(fā)傳輸器或串口對Android電視進行調(diào)試。
所述的基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法,其中,所述步驟B2之后包括步驟:
B3、修復(fù)系統(tǒng)獲取已知的漏洞修復(fù)辦法進行修復(fù),并判斷Android電視的系統(tǒng)故障修復(fù)是否成功,若修復(fù)成功,則執(zhí)行步驟C,若修復(fù)失敗,則從服務(wù)器中更新補丁進行修復(fù)。
所述的基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法,其中,所述步驟B3之后還包括步驟:
B4、判斷Android電視的系統(tǒng)故障修復(fù)是否成功,若修復(fù)成功,則執(zhí)行步驟C,若修復(fù)失敗,則抓取日志和系統(tǒng)信息,提交至后臺服務(wù)器。
本發(fā)明提供了一種基于Android電視的修復(fù)系統(tǒng)及修復(fù)方法,本發(fā)明在android無法啟動的情況下仍然可以啟動本系統(tǒng)并修復(fù)一些問題,以及可以抓取系統(tǒng)日志,獲取系統(tǒng)信息,便于解決問題,這樣可以減少返廠修復(fù),提高售后的修復(fù)率,減少售后成本,為用戶維修android漏洞也提供了方便。
附圖說明
圖1為本發(fā)明的一種基于Android電視的修復(fù)系統(tǒng)的較佳實施例的內(nèi)部結(jié)構(gòu)示意圖。
圖2為本發(fā)明的一種基于Android平臺的漏洞修復(fù)方法的較佳實施例的流程圖。
圖3為本發(fā)明的一種基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法的具體應(yīng)用實施例的流程圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對本發(fā)明進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明還提供了一種基于Android電視的修復(fù)系統(tǒng)的的較佳實施例的內(nèi)部結(jié)構(gòu)示意圖,如圖1所示,修復(fù)系統(tǒng)運行在linux內(nèi)核上,修復(fù)系統(tǒng)包括位于最底層的驅(qū)動層100,位于中間層的事件層200,及位于最上層的應(yīng)用層300;驅(qū)動層100用于提供基礎(chǔ)繪圖功能和用于支持事件層200的運行;事件層200用于提供UI功能和收集用戶操作事件并上傳給應(yīng)用層300;應(yīng)用層300用于捕捉用戶的輸入并處理以及調(diào)用事件層200輸出UI操作界面。修復(fù)系統(tǒng)程序分三層,最底層是PixelFlinger庫以及各種驅(qū)動組成。 中間層是我們的MinUI快速開發(fā)web界面的和事件收集模塊,最上層是應(yīng)用層,負責(zé)維護畫出各個界面,處理用戶的按鍵響應(yīng),負責(zé)與用戶交互。其中的MinUI快速開發(fā)web界面的和事件收集模塊是系統(tǒng)中程序重要的部分。
驅(qū)動層100包括Pixer Flinger渲染器101、Frame Buffer幀緩沖區(qū)102、TTY終端驅(qū)動103、Input輸入驅(qū)動104,Pixer Flinger渲染器101用于提供基礎(chǔ)繪圖功能,F(xiàn)rame Buffer幀緩沖區(qū)102用于將顯示設(shè)備抽象為幀緩沖區(qū),TTY終端驅(qū)動103為用于獲取當(dāng)前使用的圖形終端,Input輸入驅(qū)動104用于讀取用戶輸入,并把讀取的輸入放到隊列中供事件層處理。其中TTY為TeleTYpe的縮寫,TTY包括虛擬控制臺,串口以及偽終端設(shè)備。Pixel Flinger:提供了一系列基礎(chǔ)繪圖功能,這些功能包括定義各種顏色格式像素位置、畫點畫線、繪制矩形及三角形、填充紋理等等。Frame Buffer:將顯示設(shè)備抽象為幀緩沖區(qū)。用戶可以將其看成是顯示內(nèi)存的一個映像,將其映射到進程地址空間之后,就可以直接進行讀寫操作,而寫操作可以立即反應(yīng)在屏幕上。該驅(qū)動程序的設(shè)備文件一般是/dev/fb0。TTY驅(qū)動: 用來給當(dāng)前終端設(shè)備的名稱。在Linux系統(tǒng)中,使用tty7作為當(dāng)前圖形終端。在我們的修復(fù)系統(tǒng)中,我們使用tty1作為圖形終端,用來實現(xiàn)與Android系統(tǒng)與我們修復(fù)系統(tǒng)UI的切換。Input驅(qū)動: 通過讀取/dev/input下以event開頭的設(shè)備文件來讀取用戶的輸入,并把其放到隊列中供上層處理
事件層200包括MinUI快速開發(fā)web界面201和事件收集模塊202,MinUI快速開發(fā)web界面為快速開發(fā)網(wǎng)絡(luò)界面,MinUI快速開發(fā)web界面201用于對Pixer Flinger渲染器進行封裝及對Frame Buffer幀緩沖區(qū)操作后提供UI功能,其中 UI為User Interface,用戶界面。事件收集模塊202用于收集用戶的操作,并傳送給應(yīng)用層,供應(yīng)用層響應(yīng)處理。
關(guān)于MinUI快速開發(fā)web界面,由于我們的系統(tǒng)是建立與Linux內(nèi)核之上的,但是linux內(nèi)核并沒有像Android系統(tǒng)那樣提供我們比較高級的UI控件,所以我們必須創(chuàng)建一個小型的MinUI快速開發(fā)web界面來滿足我們最基本的畫點畫線、輸出文字等功能。MinUI快速開發(fā)web界面就是通過對PixelFlinger的封裝以及對FrameBuffer的操作完成了這一功能。另外,我們的修復(fù)程序是和Android框架并行的, 這意味著當(dāng)運行我們的監(jiān)控程序時,Android框架也是在運行著的, 這個時候我們的MinUI快速開發(fā)web界面會和Android的UI系統(tǒng)同時更新屏幕,會造成閃屏的問題。而TTY驅(qū)動就是為了解決這一問題的,TTY提供了一個虛擬終端的概念,當(dāng)我們的監(jiān)控程序運行時,激活我們的TTY,這時我們的監(jiān)控程序獨占屏幕,而我們退出后激活A(yù)ndroid系統(tǒng)的TTY。
事件收集模塊包括了如何收集到用戶的按鍵、鼠標等操作,并傳給上層交由上層響應(yīng)處理。這就需要Linux的Input Driver來支持。而在linux中任何設(shè)備(遙控器、鼠標)都是當(dāng)成文件來訪問的,在/dev/input/下以event開頭的那些文件就是外設(shè)輸入設(shè)備文件。我們只需要對這些設(shè)備文件進行讀取,并存放到一個隊列中, 由應(yīng)用層讀取,并做出相應(yīng)的處理,完成相應(yīng)的功能。事件收集模塊用于讀取linux中的外設(shè)輸入設(shè)備文件后,存放到隊列中,傳送給應(yīng)用層,由應(yīng)用層讀取后響應(yīng)處理。
應(yīng)用層300包括修復(fù)系統(tǒng)界面301,修復(fù)系統(tǒng)功能模塊302,消息按鍵處理模塊303,修復(fù)系統(tǒng)界面301用于調(diào)用MinUI快速開發(fā)web界面后畫出操作界面,修復(fù)系統(tǒng)功能模塊302用于提供各種對系統(tǒng)進行修復(fù)的功能操作,消息按鍵處理模塊303用于捕捉用戶的輸入,并處理對應(yīng)的輸入。修復(fù)系統(tǒng)界面為最終展示在用戶面前的界面, 需要調(diào)用MinUI畫出各種操作界面。消息處理模塊在捕捉了用戶的輸入后,需要最終處理這些輸入,實現(xiàn)相應(yīng)的功能。
本發(fā)明還提供了一種基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法的較佳實施例的流程圖,如圖2所示,其中,方法包括步驟:
S100、當(dāng)Android電視中出現(xiàn)漏洞時,獲取用戶輸入的按鍵,linux內(nèi)核檢測按鍵為預(yù)先定義的啟動修復(fù)漏洞系統(tǒng)的特定按鍵后,啟動修復(fù)系統(tǒng)界面;
S200、當(dāng)修復(fù)系統(tǒng)界面啟動后,修復(fù)系統(tǒng)依次執(zhí)行不同的漏洞修復(fù)操作對Android電視的系統(tǒng)故障進行修復(fù),并實時檢測修復(fù)進程;
S300、當(dāng)檢測到Android電視的系統(tǒng)故障修復(fù)完成后,控制Android電視退出修復(fù)系統(tǒng)。
具體實施時,步驟S100中在內(nèi)核中判斷按鍵是否為我們定義的啟動修復(fù)系統(tǒng)的按鍵,如果是則啟動修復(fù)系統(tǒng)界面,若不是,則不做任何處理。
步驟S200中當(dāng)修復(fù)系統(tǒng)界面啟動后,漏洞修復(fù)功能模塊判斷當(dāng)前漏洞的類型,可根據(jù)漏洞類型執(zhí)行不同的漏洞修復(fù)操作。
其中步驟S100之前還包括步驟:
S、預(yù)先修改linux內(nèi)核,將Android電視的某個按鍵設(shè)置為啟動修復(fù)系統(tǒng)的特定按鍵。具體實施時,預(yù)先修改linux內(nèi)核,接收用戶的操作將Android電視的按鍵設(shè)置為特定按鍵,操作特定按鍵啟動修復(fù)系統(tǒng),顯示系統(tǒng)界面。
進一步地實施例中,步驟S200具體包括步驟:
S201、當(dāng)當(dāng)修復(fù)系統(tǒng)界面啟動后,控制Android電視恢復(fù)出廠裝置;
S202、判斷Android電視的系統(tǒng)故障修復(fù)是否成功,若修復(fù)成功,則執(zhí)行步驟S300,若修復(fù)失敗,是控制打開UART或串口對Android電視進行調(diào)試。
具體實施時,有些簡單的問題可以通過恢復(fù)出廠設(shè)置來解決,例如本文開頭提到的那個解析被破壞的文件bug,該文件是保存在/data分區(qū),恢復(fù)出廠設(shè)置會清空data分區(qū)里的文件,開機便能夠正常啟動。
當(dāng)恢復(fù)出廠設(shè)置修復(fù)失敗時,打開uart或串口功能,默認出廠設(shè)置是關(guān)閉uart和串口的。只有打開uart或串口,才可以通過筆記本進行連接,以及升級。通過串口連接,在電視啟動的時候按下某些特定鍵可以觸發(fā)強制升級。也可以通過串口抓取log, 運行命令查看系統(tǒng)信息等。其中UART為Universal Asynchronous Receiver/Transmitter,UART為通用異步收發(fā)傳輸器。
進一步,還可通過打開gdb,gdb是android的調(diào)試方式,默認也是關(guān)閉的。與uart串口不同的是, adb連接只需要有網(wǎng)絡(luò)即可,不需要像uart串口那樣需要一根串口線才可以進行調(diào)試。但是adb必須在系統(tǒng)啟動初始化網(wǎng)絡(luò)以后才可能進行連接。adb也可以用來抓取log,運行命令等。其中l(wèi)og為系統(tǒng)運行時生成的日志。
再進一步的實施例中,步驟S202之后包括步驟:
S203、修復(fù)系統(tǒng)獲取已知的漏洞修復(fù)辦法進行修復(fù),并判斷Android電視的系統(tǒng)故障修復(fù)是否成功,若修復(fù)成功,則執(zhí)行步驟S300,若修復(fù)失敗,則從服務(wù)器中更新patch進行修復(fù)。
具體實施時,patch為補丁??梢酝ㄟ^已知的漏洞修復(fù)辦法,來嘗試解決系統(tǒng)的故障。通過已知漏洞修復(fù)方法修復(fù)時,更新補丁。若修復(fù)失敗,則服務(wù)器端部署系統(tǒng)補正后,可以服務(wù)器中下載更新補丁,解決Android電視的系統(tǒng)故障。
進一步的實施例中,步驟S203之后還包括步驟:
S204、判斷Android電視的系統(tǒng)故障修復(fù)是否成功,若修復(fù)成功,則執(zhí)行步驟S300,若修復(fù)失敗,則抓取log和系統(tǒng)信息,提交至后臺服務(wù)器。
具體實施時,若以上的方法都修復(fù)失敗,說明修復(fù)系統(tǒng)無法完成Android電視的系統(tǒng)故障修復(fù),此時需抓取Android電視運行的log及系統(tǒng)信息,提交至后臺服務(wù)器,供測試研發(fā)人員研究。
本發(fā)明還提供了一種基于Android電視的修復(fù)系統(tǒng)的修復(fù)方法的具體應(yīng)用實施例的流程圖,如圖3所示,方法包括步驟:
S10、系統(tǒng)無法啟動;
S20、按鍵觸發(fā)修復(fù)系統(tǒng);
S30、打開修復(fù)系統(tǒng)UI;
S40、恢復(fù)出廠設(shè)置;
S50、判斷是否解決,如果是,則執(zhí)行步驟S93,如果否,則執(zhí)行步驟S60;
S60、打開uart或者串口進行調(diào)試;
S70、根據(jù)已知漏洞嘗試解決,之后執(zhí)行步驟S91;
S80、更新patch補?。?/p>
S90、判斷是否解決,如果是,則執(zhí)行步驟S93,如果否,則執(zhí)行步驟S92;
S91、判斷是否解決,如果是,則執(zhí)行步驟S93,如果否,則執(zhí)行步驟S80;
S92、抓取log,抓取系統(tǒng)信息,提交測試研發(fā)解決;
S93、結(jié)束。
綜上所述,本發(fā)明提供了一種基于Android電視的修復(fù)系統(tǒng)及修復(fù)方法,系統(tǒng)運行在linux內(nèi)核上,系統(tǒng)包括位于最底層的驅(qū)動層,位于中間層的事件層,及位于最上層的應(yīng)用層;所述驅(qū)動層用于提供基礎(chǔ)繪圖功能和用于支持所述事件層的運行;所述事件層用于提供UI功能和收集用戶操作事件并上傳給所述應(yīng)用層;所述應(yīng)用層用于捕捉用戶的輸入并處理以及調(diào)用事件層輸出UI操作界面。本發(fā)明在android系統(tǒng)無法啟動的情況下仍然可以啟動本系統(tǒng)并修復(fù)一些問題,以及可以抓取系統(tǒng)日志,獲取系統(tǒng)信息,便于解決問題,這樣可以減少返廠修復(fù),提高售后的修復(fù)率,減少售后成本,為用戶維修android漏洞也提供了方便。
應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進或變換,所有這些改進和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護范圍。