• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

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

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

      楊 程,黃俊偉,周俊揚,楊 倩

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

      0 引言

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

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

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

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

      1 平臺簡介

      1.1 Android 平臺

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

      1.2 QT 架構(gòu)

      QT是一個跨平臺的C++ 圖形用戶界面庫,由挪威TrollTech 公司出品,目前包括QT,基于Framebuffer的QT Embedded,快速開發(fā)工具QT Designer,國際化工具QT Linguist 等部分QT 支持所有Unix 系統(tǒng),當(dāng)然也包括Linux,還支持WinNT/Win2k,Win95/98 平臺。使用QT 您只需一次性開發(fā)應(yīng)用程序,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統(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),主要分為兩個大的部分,一部分為Device 或Emulator 部分,第二部分為PC 部分。Device 端,主要完成保存全部的日志信息(Log)至內(nèi)核(Kernel)空間,并將其緩存在四個不同的循環(huán)緩沖區(qū)(Circular Buffer)中;開啟ADBD 守護進程,等待與PC 端進行信息交互。PC 端,根據(jù)不同用戶的不同需求,通過USB 獲取到Device 端緩存的日志信息,Client 可以使用ADB 命令行,也可以使用DDMS 等開發(fā)調(diào)試工具。

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

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

      2.1.2 Android Debug Bridge

      (1)ADB 介紹

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

      (2)ADB 功能簡介

      · 管理模擬器或設(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ū)動中,首先在初始化的過程中會生成4個MISC 文件,分別保存system、radio、main、event,每個MISC 文件中包含一個循環(huán)緩沖數(shù)據(jù)流(Circular Buffer),其內(nèi)容大小都為256 k,由于Android 日志系統(tǒng)記錄整個系統(tǒng)的日志信息,所以處于系統(tǒng)啟動流程中的優(yōu)先啟動對象(詳見3.1.1)。然后用戶根據(jù)需求對4個MISC 文件進行讀寫操作,在設(shè)備端通常是寫操作,通過open打開指定類型文件節(jié)點,通過writev,readv 對設(shè)備文件信息進行讀取操作。

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

      3.1 Android INIT

      3.1.1 Android 啟動流程

      圖3 Android 啟動流程圖

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

      3.1.2 Android INIT 介紹

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

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

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

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

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

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

      (6)進入一個無限循環(huán)。

      3.2 移植方案設(shè)計

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

      3.2.1 QT 啟動流程設(shè)計

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

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

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

      4 移植方案實現(xiàn)與測試

      4.1 移植前QT 啟動流程

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

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

      4.2 移植后QT 啟動流程

      圖5 移植后的QT 啟動流程

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

      4.3 QDEBUG 源代碼修改

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

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

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

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

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

      測試完成,驗證成功。

      5 結(jié)束語

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

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

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

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

      猜你喜歡
      跨平臺模擬器日志
      一名老黨員的工作日志
      華人時刊(2021年13期)2021-11-27 09:19:02
      了不起的安檢模擬器
      盲盒模擬器
      劃船模擬器
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      跨平臺APEX接口組件的設(shè)計與實現(xiàn)
      游學(xué)日志
      基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
      基于OPC跨平臺通信的電機監(jiān)測與診斷系統(tǒng)
      基于B/S的跨平臺用戶界面可配置算法研究
      富锦市| 黄石市| 富锦市| 米泉市| 黄石市| 项城市| 文昌市| 水城县| 西乡县| 农安县| 宿迁市| 禄丰县| 砚山县| 北宁市| 鲜城| 大同县| 平远县| 六安市| 定南县| 静安区| 兴业县| 云霄县| 邓州市| 中山市| 苍山县| 黔西| 沽源县| 扶风县| 龙川县| 乐安县| 东海县| 剑河县| 炉霍县| 腾冲县| 伊通| 两当县| 志丹县| 麻江县| 修武县| 奉化市| 河津市|