亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于QT的Android 日志系統(tǒng)跨平臺(tái)移植方案設(shè)計(jì)與實(shí)現(xiàn)

        2013-07-03 08:26:48黃俊偉周俊揚(yáng)
        山西電子技術(shù) 2013年6期
        關(guān)鍵詞:跨平臺(tái)模擬器日志

        楊 程,黃俊偉,周俊揚(yáng),楊 倩

        (1.重慶重郵信科股份有限公司應(yīng)用部,重慶 400065;2.重慶理工大學(xué)電子信息與自動(dòng)化學(xué)院 重慶 400054)

        0 引言

        QT 作為一款跨平臺(tái)的C++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架,致力于發(fā)展跨平臺(tái)GUI 領(lǐng)域,以其優(yōu)良的跨平臺(tái)性、豐富的API和高程度的模塊化開(kāi)始在行業(yè)終端中展現(xiàn)出不平凡的實(shí)力。

        Android 日志系統(tǒng)(Android Logging System)是一套系統(tǒng)級(jí)的、多功能的日志系統(tǒng),它完整地記錄Android 智能系統(tǒng)從應(yīng)用層、框架層及其硬件抽象層等所有日志信息,同時(shí)Android 日志系統(tǒng)提供串口輸出功能,用戶可以將日志信息通過(guò)USB 傳輸至PC 端,再通過(guò)PC 端的調(diào)試工具呈現(xiàn)出來(lái)。

        目前,在工程項(xiàng)目中,包括QT 在內(nèi)的多種應(yīng)用框架,由于沒(méi)有一套完善的系統(tǒng)調(diào)試解決方案,大部分的應(yīng)用開(kāi)發(fā)都被局限于模擬器調(diào)試,而無(wú)法在設(shè)備上進(jìn)行實(shí)時(shí)跟蹤調(diào)試,傳統(tǒng)的日志保存方法無(wú)法提供足夠的實(shí)時(shí)性且開(kāi)發(fā)調(diào)試效率慢。

        為了解決這一問(wèn)題,本文提出了Android 日志系統(tǒng)跨平臺(tái)移植方案。不僅可以使QT 設(shè)備并且其他任意嵌入式Linux 設(shè)備都可以正常使用Android 日志系統(tǒng),本文以智能終端行業(yè)中最流行的兩種智能終端系統(tǒng)為研究對(duì)象,分析Android 日志系統(tǒng)的整體架構(gòu),并在QT 架構(gòu)上進(jìn)行功能性移植,具有更好的代表性和實(shí)用價(jià)值。

        1 平臺(tái)簡(jiǎn)介

        1.1 Android 平臺(tái)

        Android是Google 開(kāi)發(fā)的基于Linux 平臺(tái)的開(kāi)源手機(jī)操作系統(tǒng),該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,被譽(yù)為第一個(gè)完整、開(kāi)放而且免費(fèi)的一種平臺(tái)[1]。截止2013 年初,基于Android 操作系統(tǒng)的智能手機(jī)占據(jù)全球市場(chǎng)份額的80%,中國(guó)市場(chǎng)占有率90%以上。

        1.2 QT 架構(gòu)

        QT是一個(gè)跨平臺(tái)的C++ 圖形用戶界面庫(kù),由挪威TrollTech 公司出品,目前包括QT,基于Framebuffer的QT Embedded,快速開(kāi)發(fā)工具QT Designer,國(guó)際化工具QT Linguist 等部分QT 支持所有Unix 系統(tǒng),當(dāng)然也包括Linux,還支持WinNT/Win2k,Win95/98 平臺(tái)。使用QT 您只需一次性開(kāi)發(fā)應(yīng)用程序,無(wú)須重新編寫(xiě)源代碼,便可跨不同桌面和嵌入式操作系統(tǒng)部署這些應(yīng)用程序[2]。

        2 Android 日志系統(tǒng)

        2.1 Android 日志系統(tǒng)架構(gòu)分析

        圖1 Android 日志系統(tǒng)整體架構(gòu)圖

        Android 日志系統(tǒng),主要分為兩個(gè)大的部分,一部分為Device 或Emulator 部分,第二部分為PC 部分。Device 端,主要完成保存全部的日志信息(Log)至內(nèi)核(Kernel)空間,并將其緩存在四個(gè)不同的循環(huán)緩沖區(qū)(Circular Buffer)中;開(kāi)啟ADBD 守護(hù)進(jìn)程,等待與PC 端進(jìn)行信息交互。PC 端,根據(jù)不同用戶的不同需求,通過(guò)USB 獲取到Device 端緩存的日志信息,Client 可以使用ADB 命令行,也可以使用DDMS 等開(kāi)發(fā)調(diào)試工具。

        2.1.1 Android 日志開(kāi)發(fā)接口

        Android 日志信息中總共定義了5 種不同級(jí)別的輸出,系統(tǒng)根據(jù)LOG的等級(jí)判斷是否需要輸出相應(yīng)Log 信息,在IDE 中分別以不同的顏色,以便用戶能夠更精準(zhǔn)地進(jìn)行查找。

        2.1.2 Android Debug Bridge

        (1)ADB 介紹

        Android Debug Bridge是一種多功能的命令行工具,實(shí)現(xiàn)用戶與Android 智能手機(jī)或模擬器之間的通信功能,ADB 主要由客戶端、服務(wù)端和守護(hù)進(jìn)程三部分組成。

        (2)ADB 功能簡(jiǎn)介

        · 管理模擬器或設(shè)備狀態(tài)

        · 在設(shè)備或模擬器上執(zhí)行命令

        · 管理模擬器或設(shè)備上的端口信息

        · 同步設(shè)備或模擬器上的文件信息

        2.2 Android 日志系統(tǒng)流程分析

        圖2 Android Log 設(shè)備端數(shù)據(jù)流程圖

        Android 系統(tǒng)將日志信息分為四種不同的類型,分別為系統(tǒng)、RIL、音頻、以及主要信息。因此在Logger 驅(qū)動(dòng)中,首先在初始化的過(guò)程中會(huì)生成4個(gè)MISC 文件,分別保存system、radio、main、event,每個(gè)MISC 文件中包含一個(gè)循環(huán)緩沖數(shù)據(jù)流(Circular Buffer),其內(nèi)容大小都為256 k,由于Android 日志系統(tǒng)記錄整個(gè)系統(tǒng)的日志信息,所以處于系統(tǒng)啟動(dòng)流程中的優(yōu)先啟動(dòng)對(duì)象(詳見(jiàn)3.1.1)。然后用戶根據(jù)需求對(duì)4個(gè)MISC 文件進(jìn)行讀寫(xiě)操作,在設(shè)備端通常是寫(xiě)操作,通過(guò)open打開(kāi)指定類型文件節(jié)點(diǎn),通過(guò)writev,readv 對(duì)設(shè)備文件信息進(jìn)行讀取操作。

        3 移植方案分析與設(shè)計(jì)

        3.1 Android INIT

        3.1.1 Android 啟動(dòng)流程

        圖3 Android 啟動(dòng)流程圖

        Android 啟動(dòng)流程主要包含:硬件上電、內(nèi)核啟動(dòng)、INIT啟動(dòng)。當(dāng)Android 完成INIT 過(guò)程后,根據(jù)init.rc和init_XXX.rc(指定設(shè)備INIT 配置信息)文件,開(kāi)啟指定的后臺(tái)服務(wù)進(jìn)程(Background Service Program),啟動(dòng)Zygote 程序,再由Zygote 程序逐步啟動(dòng)Android 上層GUI(Graphical User Interface)和應(yīng)用程序。

        3.1.2 Android INIT 介紹

        INIT是Linux 系統(tǒng)操作中不可缺少的程序之一,它是一個(gè)由內(nèi)核啟動(dòng)的自動(dòng)啟動(dòng)的用戶級(jí)進(jìn)程,進(jìn)程編號(hào)始終為1[2]。Android INIT 主要完成的功能如下所示[3]:

        (1)初始化日志系統(tǒng);

        (2)解析init.rc和init.XXX.rc 文件;

        (3)設(shè)備初始化;

        (4)初始化屬性服務(wù)器;

        (5)開(kāi)啟屬性服務(wù);

        (6)進(jìn)入一個(gè)無(wú)限循環(huán)。

        3.2 移植方案設(shè)計(jì)

        移植Android 日志系統(tǒng)方案設(shè)計(jì)主要可以分為兩個(gè)部分:QT 啟動(dòng)流程設(shè)計(jì);QT 日志函數(shù)設(shè)計(jì)。

        3.2.1 QT 啟動(dòng)流程設(shè)計(jì)

        使用Android 日志系統(tǒng),首先需要完成Android 日志系統(tǒng)的初始化流程,完成文件設(shè)備節(jié)點(diǎn)的注冊(cè);其次為了解決Android 日志系統(tǒng)保存日志信息不完整的問(wèn)題,需要在QT的啟動(dòng)過(guò)程中添加日志信息自動(dòng)保存的守護(hù)進(jìn)程,方便后續(xù)項(xiàng)目開(kāi)發(fā)調(diào)試時(shí)進(jìn)行查看;最后,啟動(dòng)QT 平臺(tái)下的第一個(gè)應(yīng)用程序。

        3.2.2 QT 日志函數(shù)設(shè)計(jì)

        由于原生QT 日志輸入將定向?yàn)闃?biāo)準(zhǔn)輸出流或標(biāo)準(zhǔn)錯(cuò)誤輸入流中,我們需要修改QT 輸出日志的函數(shù)實(shí)現(xiàn),將日志內(nèi)容重定向到Android Logger 注冊(cè)的4個(gè)不同的MISC 文件節(jié)點(diǎn)中,完成Android 日志系統(tǒng)在QT 平臺(tái)上的移植。

        4 移植方案實(shí)現(xiàn)與測(cè)試

        4.1 移植前QT 啟動(dòng)流程

        圖4 傳統(tǒng)QT 啟動(dòng)流程

        傳統(tǒng)基于Linux的QT 設(shè)備在內(nèi)核啟動(dòng)完成后,將直接通過(guò)init 程序進(jìn)入QT的應(yīng)用處理流程。

        4.2 移植后QT 啟動(dòng)流程

        圖5 移植后的QT 啟動(dòng)流程

        移植Android 日志系統(tǒng)首先需要有Android 系統(tǒng)的初始環(huán)境,所以需要移植Android的Init 程序,在完成日志系統(tǒng)的初始化后,通過(guò)Service 服務(wù)程序開(kāi)啟ADBD 守護(hù)進(jìn)程,用于與遠(yuǎn)端ADB 進(jìn)行信息交互,然后可以根據(jù)設(shè)備性能選擇性移植部分Service 程序,如Logcatd 進(jìn)程,可以將所有的日志性能都保存在指定的路徑下,由于Android 保存日志信息的循環(huán)緩沖流只能保存256 k 數(shù)據(jù),超時(shí)的數(shù)據(jù)將被丟棄,使用Logcatd 進(jìn)行完整信息保存,不論是在實(shí)時(shí)的調(diào)試或是離線調(diào)試都可很方便快捷地查看完整日志信息。最后啟動(dòng)QT應(yīng)用。

        4.3 QDEBUG 源代碼修改

        在移植Android 日志系統(tǒng)的過(guò)程中,為了實(shí)現(xiàn)QT 日志信息與Android Logger的交互,需要將數(shù)據(jù)信息直接寫(xiě)入到Logger的MISC 文件中,由2.2 章節(jié)可知,在Logger 存在4個(gè)不同的MISC 文件,我們現(xiàn)在只使用其中的main的MISC 文件,但可以根據(jù)修改,使用不同的MISC 文件,進(jìn)行分別保存。代碼實(shí)現(xiàn)細(xì)節(jié)如下:

        4.4 QT 架構(gòu)下調(diào)試信息測(cè)試

        步驟一:在QT應(yīng)用中加入測(cè)試LOG 信息;

        步驟二:設(shè)備上運(yùn)行QT 程序,通過(guò)ADB 截取LOG;

        步驟三:觀察LOG 內(nèi)容及時(shí)間。

        測(cè)試完成,驗(yàn)證成功。

        5 結(jié)束語(yǔ)

        本文通過(guò)對(duì)Android 日志系統(tǒng)從架構(gòu)和流程上做出深入剖析,提出一種新型的、跨平臺(tái)的系統(tǒng)調(diào)試解決方案設(shè)計(jì),并成功在以QT為架構(gòu)的工程實(shí)現(xiàn)中得到驗(yàn)證。本設(shè)計(jì)方案在未來(lái)將不僅限于QT,應(yīng)用空間潛力巨大。除Android 日志系統(tǒng)外,其還擁有很多可以被其他平臺(tái)吸取的優(yōu)點(diǎn),比如在通信業(yè)務(wù)方面的RIL 框架設(shè)計(jì),獨(dú)立硬件設(shè)備的硬件抽象層的理念。如何更好地吸收這些開(kāi)發(fā)資源的優(yōu)點(diǎn),運(yùn)用于我們自身所需要的地方,將成為繼續(xù)研究的方向。

        [1]韓超,梁泉.Android 系統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2010:10.

        [2]閆效鶯.基于嵌入式Linux 軟件平臺(tái)技術(shù)的研究[D].西安:西北大學(xué),2006:45.

        [3]李凱.Android 操作系統(tǒng)分析與移植[D].廣州:華南理工大學(xué),2011:37.

        猜你喜歡
        跨平臺(tái)模擬器日志
        一名老黨員的工作日志
        了不起的安檢模擬器
        盲盒模擬器
        劃船模擬器
        扶貧日志
        心聲歌刊(2020年4期)2020-09-07 06:37:14
        跨平臺(tái)APEX接口組件的設(shè)計(jì)與實(shí)現(xiàn)
        游學(xué)日志
        基于QT的跨平臺(tái)輸電鐵塔監(jiān)控終端軟件設(shè)計(jì)與實(shí)現(xiàn)
        基于OPC跨平臺(tái)通信的電機(jī)監(jiān)測(cè)與診斷系統(tǒng)
        基于B/S的跨平臺(tái)用戶界面可配置算法研究
        国产人澡人澡澡澡人碰视频 | 黑人上司粗大拔不出来电影| 色妺妺视频网| 亚洲色无码中文字幕| av在线播放中文专区| 97人人模人人爽人人喊网| 最近中文字幕视频高清| 亚洲国产成人资源在线桃色| 国产亚洲3p一区二区| 欧美村妇激情内射| 亚洲综合色成在线播放| 中文无码制服丝袜人妻AV| 亚洲av老熟女一区二区三区| 国产精品亚洲а∨无码播放不卡| 99精品视频69V精品视频| 亚洲国产精品成人综合色| 成年在线观看免费视频| 白白青青视频在线免费观看| 国产精品人伦一区二区三| 国产精品自在拍在线拍| 一区二区三区日韩亚洲中文视频| 中文字幕这里都是精品| 亚洲国产成人极品综合| 久久久久久久久久久国产| 国产免费无码9191精品| 小池里奈第一部av在线观看| 四虎影视成人永久免费观看视频| 91久久青青草原线免费| 午夜精品一区二区三区av免费| 国产白浆一区二区三区性色| 亚洲精品乱码久久久久久蜜桃图片| 日本理论片一区二区三区| 蜜臀av在线一区二区尤物| 大地资源中文第3页| 久久精品国产亚洲vr| 亚洲大胆视频在线观看| 一本久道综合色婷婷五月| 国产精品麻花传媒二三区别 | 日本一区二区三区在线观看免费| 精品一区二区三区芒果| 亚洲乱亚洲乱少妇无码99p|