第一篇:Android平臺個人銀行賬目軟件-開題
需要詳細請聯系上傳者
一、綜述本課題國內外研究動態,說明選題的依據和意義
1.1國外手機銀行發展現狀
國外手機銀行起步是比較早的,在96年捷克斯洛伐克首先推出了手機銀行業務.現在手機銀行在歐美、日韓發展比較成熟。從模式上比較,日本是以移動運營商為主導。而韓國則是以銀行為主導,歐美的那些移動運營商在移動銀行業務其實不多。韓國的手機銀行業務現階段已成熟。早在2002年,韓國已經有18家銀行提供手機銀行服務,全年交易超過109萬次,僅在2002年9月就有9萬次交易發生。目前韓困所有的零售銀行都能提供手機銀行業務,至2009年,韓國手機銀行用戶規模已達到1115.5萬人。日本最先建立了手機錢包的運營模式,普及率和公眾接受度比較高。現在大約有5500萬日本手機用戶開通了電子支付功能,這個數字幾乎占到了日本總人口的一半。手機銀行服務一經推出就在銀行信息電子化水平最高的美國大行其道。2009年美圍手機銀行用戶達到2540萬人.較2008年增長6%,占當年手機用戶的10.8%。艾瑞咨詢的統計數據發現,2010年美國手機銀行用戶占其手機用戶的比例將達到19.6%,到2013年增長至44.4%。
1.2我國手機銀行發展現狀
手機具備用戶精準鎖定、方便攜帶以及隨時在線等優勢,銀行可以便捷地和客戶保持溝通,比如賬戶金額變動情況、附近的ATM位最、利率變動、金融資訊及投資理財信息等。根據《中國電子商務研究中心發布的中國電子商務市場數據監測報告》顯示,截至到2010年上半年,中國移動電子商務實物交易規模達到13億元,用戶規模已達到5531.5萬。我國手機銀行經過短短10年的發展,初步具備了一定的規模和效應,但是在發展過程中也存在部分的不足。手機銀行快速發展,但是規模和占比與發達國家存在較大差距。手機銀行短短十年來已增長了2000多萬戶,呈高速發展態勢。但是相對于8億移動電話用戶,手機銀行用戶僅有2000萬;而人口不到我國1/10的口本.2008年用戶就超過4900萬,兩者有較大差距。2.手機銀行業務覆蓋范廣,能為用戶提供全方位的在線服務,實際使用率低。根據http://xmqbysj.com網站統計,這個數量還在不斷增加。
在手機銀行的操作過程中,用戶通過SIM卡上的菜單對銀行發出指令后,SIM卡根據用戶指令生成規定格式的短信并加密,然后指示手機向GSM網絡發出短信,GSM短信系統收到短信后,按相應的應用或地址傳給相應的銀行系統,銀行對短信進行預處理,再把指令轉換成主機系統格式,銀行主機處理用戶的請求,并把結果返回給銀行接口系統,接口系統將處理的結果轉換成短信格式,短信中心將短信發給用
戶。
隨著互聯網絡與移動通信技術發展的不斷推進,傳統的銀行服務方式已被賦予了新的內涵,手機銀行業務正是順應這種歷史潮流而產生的。手機銀行又被稱為移動銀行.是銀行和移動運營商共同推出的一個新的服務項目,它將無線通信技術的3A(任何時間、任何地點、任何方式)優勢與現有金融業務相結合,為客戶提供更方便、更快捷、更隨心所欲的服務。
目前手機銀行有多種實現方案,如SMS,STK卡,USSD.WAP等,與這幾種實現方式相比,基于J2ME技術的手機銀行具有用戶界面友好、輸入輸出方便以及安全性高的優點,同時手機終端的功能類似可移動仁網的電腦.充分利用了用戶固定的互聯網使用習慣,提供給用戶高性能、多方位的移動互聯網使用體驗?;诖耍鞠到y客戶端采用J2ME技術來實現,考慮到系統的兼容性以及JAVA語言的天然優勢,服務器端采用Servlet組件技術。
1.3選題依據和意義
經過多年的發展,第三代數字通信(3G)技術獲得了廣泛的接受,它為移動終端用戶帶來了更快的數據傳輸速率。隨著3G網絡的使用,移動終端不再僅是通訊網絡的終端,還將成為互聯網的終端。因此,移動終端的應用軟件和需要的服務將會有很大的發展空間。Google與包括中國移動、摩托羅拉在內的三十多家技術和無線應用的領軍企業組成的開發聯盟為此于2007年11月推出了一個專為移動設備設計的軟件平臺——Android。
Android是一套真正意義上的開放性移動設備綜合平臺,它包括操作系統、中間件和一些關鍵的平臺應用。Android的Java程序運行環境包含一組Java核心函數庫及Dalvik虛擬機,它們有效地優化了Java程序的運行過程。Android系統平臺基于優化了的Linux內核,它提供諸如內存管理、進程管理、設備驅動等服務,同時也是手機軟硬件的連接層。
Android最大特點在于它是一個開放的體系架構,具有非常好的開發和調試環境,而且還支持各種可擴展的用戶體驗,Android里面具有非常豐富的圖形系統,對多媒體的支持功能和非常強大的瀏覽器。
Android平臺的開放性等特點既能促進技術(包括平臺自身)的創新,又有助于降低開發成本,還可以使運營商能非常方便地制定特色化的產品,因此,它具有很大的市場發展潛力。
二、研究的基本內容,擬解決的主要問題:
研究的基本內容
Android
以Java語言為基礎,結合Android移動開發平臺,并利用Android提供的SDK,實現在Android平臺上運行的手機銀行賬目管理,方便廣大手機用戶更加便捷地日常收入、支付、統計、查詢。該手賬目管理系統面向所有的Android手機用戶,為他們提供更實際便捷的手機服務。該賬目的數據管理功能是該軟件的一個特色,可以實現賬目數據的查詢操作。我相信這款軟件,可以好的滿足Android手機用戶對個人銀行賬目管理的需求。
在對Android手機賬目管理軟件進行詳細的系統設計與討論時,對功能進行詳細的劃分并對其功能做了詳細的介紹,列出了一些主要代碼和流程圖。此部分為論文的核心。
Android平臺個人銀行賬目軟件是基于Android手機平臺,運用Java語言,將PC上的應用在手機上來實現,開發出針對使用Android平臺的理財系統。
在當今的生活中,理財已成為人們日常生活中不可或缺的一部分。本軟件的開發就是為了方便手機用戶能夠更加簡單的對自己的銀行賬目進行管理,能夠對自己的經濟有一個更好的把握。
Android 作為谷歌企業戰略的重要組成部分,將進一步推進“隨時隨地為每個人提供信息”這一企業目標的實現。我們發現,全球為數眾多的移動電話用戶從未使用過任何基于 Android 的電話。谷歌的目標是讓(移動通訊)不依賴于設備甚至平臺。出于這個目的,Android 將補充,而不會替代谷歌長期以來奉行的移動發展戰略:通過與全球各地的手機制造商和移動運營商結成合作伙伴,開發既有用又有吸引力的移動服務,并推廣這些產品。
SQLite數據庫
SQLite,是一款輕型的數據庫,是遵守ACID的關聯式數據庫管理系統,它的設計目標是嵌入式的,而且目前已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL這兩款開源世界著名的數據庫管理系統來講,它的處理速度比他們都快。SQLite第一個Alpha版本誕生于2000年5月.至今已經有10個年頭,SQLite也迎來了一個版本 SQLite 3已經發布。
XML技術
XML是一種可擴展標記語言,其設計的宗旨是傳輸和存儲數據[10],其焦點是數據的內容,本系統使用XML文件主要作為數據庫存儲數據和導航等等。
系統功能需求
本軟件主要為用戶提供一個數據插入、數據查詢、數據刪除的功能,用戶可以通過android手機數據庫對數據進行相應的操作,主要功能包括:
l
別。日常收入,用戶可以按照日常收入日期、金額、類別、備注進行數據的增加。4 日常支出,用戶可以按照日常收入日期、金額、類別、備注進行數據的增加。5 收入支出統計,按照一定的數據查詢條件,用戶可以對數據進行統計。計算器,用戶可以對活期存款、定期存款進行相應的計算求其增長值。收入查詢,用戶可以輸入相應的查詢條件進行數據查詢,同樣可以進行數據查詢,并且可以刪除相應的數據。支出查詢,支出查詢類似類似于收入查詢,同樣可以進行查詢、刪除操作。9 個人信息,用戶可以增加自己的個人信息,同時可以修改登錄密碼。
擬解決的主要問題
(1)如何使手機與用戶之間界面友好。運用好java、xml提高移動客戶端的可用性和安全性。
(2)在編碼過程中,如何在不同布局文件之間傳遞參數,以及在系統中如何應用XML文件。
(3)如何應用java技術解決控件與布局文件之前訪問問題,提升用戶使用效率,優化移動端性能。
用戶登錄,進入本軟件,彈出密碼對話框,提示用戶輸入密碼,登錄本軟件 2 類別維護,用戶可以增加日常收入、日常支出類別,并且可以刪除相應的類
三、研究步驟、方法及措施:
3.1 研究的步驟
1確定論文的題目研究的主要內容
2查看收集相關題材的各類文獻
3收集需求信息制定詳細需求說明書
4搭建系統框架完成系統所要求實現的功能的編碼
5對系統進行性能測試
6完成畢業論文
3.2 研究方法及措施
1查閱個人銀行賬目管理系統的相關文獻資料。
2完成個人銀行賬目管理系統的需求流程分析和詳細設計。
3文檔主要利用Microsoft Word 2003書寫。
四、研究工作進度:
序號
6時間 2014-1-6--2014-2-1 2014-2-2--2014-2-15 2014-2-16--2014-3-1 2014-3-1--2014-4-5 2014-4-6--2014-4-30 2014-5-1--2014-5-10 2014-5-11--2014-5-31 內容 外文翻譯查閱文獻撰寫文獻綜述 編寫開題報告 系統需求設計完成表結構設計 個人銀行賬目管理系統的設計和詳細設計 編碼實現個人銀行賬目管理系統 完成系統測試和性能測試開始進行論文編寫 完成畢業論文準備答辯
五、主要參考文獻:
[1]顧寶興,姬長英,王海青,田光兆,鄭青根,王玲.農用開放式智能移動平臺研制——農業機械學報第43卷第4期2012.04.032
[2]吳芳芳.基于移動平臺的廣告營銷方法——新聞愛好者201 1·8(上半月)
[3]李玲.銀行個人結算賬戶管理工作存在的問題及建議——會計園地2012/03
[4]余云.試論如何完善個人銀行結算賬戶的管理——投資理財
[5]吳敏,劉萍.基于J2ME和J2EE的手機銀行設計與實現——中文核心期刊《微計算機信息》(嵌入式與SOC)2006年第22卷第7_2期
[6]胡現玲。我國手機銀行發展現狀與.對策分析——《經濟師》2011年第1期
[7]汪璐.3G時代手機銀行的發展思路——鄭州航空工業管理學院學報2013年6月第31卷第3期
[8]崔凱.基于移動平臺的遠程用戶體驗方法與工具研究 ——2010湖南師范大學:計算機應用技術
第二篇:開題報告(銀行賬目管理信息系統)
開題報告范文(銀行帳目管理信息系統)
發布時間:2009-04-12 來源:畢業論文網
一.編寫目的
《銀行帳目管理信息系統》開題報告的編寫目的是通過對《銀行帳目管理信息系統》中各模塊的分析,確定系統的體系結構,模塊內容,技術方法,明確各模塊的功能和數據流,為程序編寫定下宏觀體系框架。
二.開發背景
隨著科技發展和社會進步,尤其是計算機大范圍的普及,計算機應用逐漸由大規??茖W計算的海量數據處理轉向大規模的事務處理和對工作流的管理,這就產生了以臺式計算機為核心,以數據庫管理系統為開發環境的管理信息系統在大規模的事務處理和對工作流的管理等方面的應用,特別是在銀行帳目管理之中的應用日益收到人們的關注。
近年來我國信息產業發展迅速,手工管理方式在銀行帳目管理等需要大量事務處理的應用中已顯得不相適應,采用IT技術提高服務質量和管理水平勢在必行。目前,對外開放必然趨勢使銀行業直面外國銀行巨頭的直接挑戰,因此,銀行必須提高其工作效率,改善其工作環境。這樣,帳戶管理的信息化勢在必行。
在傳統的銀行帳戶管理中,其過程往往是很復雜的,繁瑣的,帳戶管理以入帳和出帳兩項內容為核心,在此過程中又需要經過若干道手續,因為整個過程都需要手工操作,效率十分低下,且由于他們之間關聯復雜,統計和查詢的方式各不相同;且會出現信息的重復傳遞問題,因此該過程必須實現信息化。
我們的系統開發的整體任務是實現銀行帳戶管理的系統化、規范化、自動化和智能化,從而達到提高企業管理效率的目的。三.可行性研究
可行性研究能使新系統達到以最小的開發成本取得最佳的經濟效益??尚行匝芯康哪康?,是根據開發管理信息系統的請求,通過初步調查和系統目標分析,對要開發的銀行帳戶管理信息系統從技術上、經濟上、資源上和管理上進行是否可行的研究。這是一項保證資源合理使用、避免失誤和浪費的重要工作。
⊙ 經濟上的可行性:主要分析成本與收益、投資效果等。
⊙ 技術上的可行性:要分析技術力量、計算機性能、通訊網絡和系統條件等。
⊙ 資源上的可行性:主要指管理、經費能否得到保證。
⊙ 管理上的可行性:如帳戶管理水平、數據收集可能性、規章制度健全程度和領導對發展系統的態度。
可行性分析已經寫成可行性研究報告,并報請領導及有關專家審議,通過后進入了以下需求分析階段。
四.系統需求分析
用戶的主要需求有帳戶管理、取款機管理、用戶查詢、查詢統計等幾個方面:
(1)帳戶管理方面:存款、取款、開戶、銷戶、修改信息、辦卡、掛失卡;
(2)取款機信息管理方面:管理員管理查詢和維護、客戶查詢和取款等功能;
(3)用戶查詢方面:用戶希望便于查詢自己帳戶的信息。
(4)查詢統計方面:VIP用戶統計、ATM業務量統計、異動查詢統計、持卡總量消費統計、工作量負荷統計等功能。
五.要解決的關鍵問題
(1)要解決的關鍵問題之一:數據的安全性問題
解決辦法為:采用DES加密算法;(2)要解決的關鍵問題之二:數據的一致性問題
解決辦法為:使用觸發器;
(3)要解決的關鍵問題之三:系統查找數據的速度問題
解決辦法為:采用哈希算法進行數據的快速查找。
六.系統定義
通過該銀行賬戶管理系統,使銀行的賬戶管理工作系統化、規范化、自動化,從而達到提高賬戶管理效率的目的。系統開發的任務是使辦公人員可以輕松快捷的完成對賬戶管理的任務。
1、系統要求:
(1)系統應符合銀行賬戶管理的規定,滿足銀行相關人員日常使用的需要,并達到操作過程中的直觀,方便,實用,安全等要求;
(2)系統采用模塊化程序設計方法,既便于系統功能的各種組合和修改,又便于未參與開發的技術維護人員補充,維護;
(3)系統應具備數據庫維護功能,及時根據用戶需求進行數據的添加、刪除、修改、備份等操作;
(4)盡量采用現有軟件環境及先進的管理系統開方案,從而達到充分利用現有資源,提高系統開發水平和應用效果的目的。
2、系統功能:
系統主要實現了:帳戶管理、取款機管理、用戶查詢、查詢統計等功能,◆帳戶管理模塊:存款、取款、開戶、銷戶、修改信息、辦卡、掛失卡;
◆用戶查詢模塊;
◆取款機信息管理模塊:管理員管理查詢和維護、客戶查詢和取款等功能; ◆查詢統計模塊:VIP用戶統計、ATM業務量統計、異動查詢統計、持卡總量消費統計、工作量負荷統計等功能。
七.系統體系結構
在系統功能分析的基礎上,做系統功能模塊圖如下:
八.運行環境
操作系統:Window 2000 IE5.0 開發平臺:Visual ForPro 6.0
第三篇:Qualcomm平臺android開發總結
1、高通平臺android開發總結.7 1.1 搭建高通平臺環境開發環境.7 1.2 搭建高通平臺環境開發環境.7 1.2.1 高通android智能平臺概述.7
1.2.1.1 什么是L4,REX,BREW,AMSS以及相互之間的關系.7 1.2.2 選擇合適的源代碼以及工具.8
1.2.2.1 獲取經過高通打補丁的android 源代碼.8 1.2.2.2 獲取高通針對不同處理器的vendor源代碼.9 1.2.2.3 獲取 modem 源代碼.9
1.2.2.3.1 高通 modem 源代碼編譯前的修正.13 1.2.3 建立 Android 開發環境.14 1.2.4 建立 modem 開發環境.15 1.2.4.1 補充.16
1.2.4.1.1 獲取 licenses 16
1.2.4.1.2 Flex 簡單使用指南.16 1.2.4.1.3 啟動 license 服務器.18
1.2.4.1.4 license 沒有辦法從服務器獲取的幾種情況.18 1.2.4.1.5 破解 rvds 的license 19 1.2.5 在高通開發板上燒錄文件系統.19
1.3 高通平臺,android和 modem 編譯流程分析.21 1.3.1 android代碼編譯流程分析.21 1.3.1.1 編譯工具檢測.22 1.3.1.1.1 22
1.3.1.2 appsboot.mbn 生成過程解析.22
1.3.1.3 boot.img 生成過程解析,怎樣手動生成 boog.img 28 1.3.1.4 編譯過程存在的問題.32
1.3.1.4.1 prelinkmap 的時候 base 0xaff00000 out of range 32 1.3.1.4.2 LOCAL_SDK_VERSION 使應用程序不能訪問hide的api 32 1.3.1.4.3 armv5te-vfp 導致一些游戲運行不了.32 1.3.2 分布式編譯 android 代碼.33 1.3.3 modem 代碼編譯流程分析.33
1.3.3.1 單獨編譯某個模塊(如:qcsbl oemsbl).34 1.3.3.2 $(TARGETDIR)/exist 規則解析.36 1.3.3.3 setup規則解析.36
1.3.3.3.1 corebsp_create_incpaths 36 1.3.3.3.2 create_incpaths 36 1.3.3.3.3 amsssetup 36
1.3.3.3.4 amsslinkaddress 36 1.3.3.3.5 firmware 38 1.3.3.4 deps規則解析.38
1.3.3.5 corebsp_build規則解析.38 1.3.3.5.1 corebsp_build_action 38 1.3.3.5.1.1 corebsp_scons 規則.39 1.3.3.5.1.1.1 corebsp_scons_start 39 2.3.3.5.1.1.1 corebsp_scons_action 39
1.3.3.5.1.1.2.1 命令 pboot_gen_elf image_header pboot_add_hash 解析.40
1.3.3.5.1.1.2.2 env.BinBuilder 過程解析.41 1.3.3.5.1.1.2.3 env.MbnBuilder 過程解析.41
1.3.3.5.1.1.2.4 env.MbnDummyBuilder 過程解析.42 1.3.3.5.1.1.2.5 fsbl.mbn 生成過程解析.43 1.3.3.5.1.1.2.6 dbl.mbn 生成過程解析.43
1.3.3.5.1.1.2.7 AMSS_AABBQOLYM.mbn 生成過程解析.43 1.3.3.5.1.1.2.8 adsp.mbn 生成過程解析.43 1.3.3.5.1.1.2.9 osbl.mbn 生成過程解析.44
1.3.3.5.1.1.2.10 enandprg_AABBQOLYM.mbn 生成過程解析.44 1.3.3.5.1.1.2.11 nandprg_AABBQOLYM.mbn 生成過程解析.45 1.3.3.5.1.1.2.12 emmcbld.mbn 生成過程解析.45 3.3.3.5.1.1.1 corebsp_scons_done 46 1.3.3.5.1.2 corebsp 46
1.3.3.5.2 corebsp_create_incpaths 46 1.3.3.5.3 corebsp_setup 46 1.3.3.6 libs 46
1.3.3.7 copybar規則解析.47 1.3.3.8 exe規則解析.47
1.3.3.8.1 CORELIBS_AABBQOLYM.mbn生成過程解析.47 1.3.3.8.2 amss.mbn 生成過程解析.47 1.3.3.9 bldprod規則解析.48
1.3.3.10 create_mem_feat_html規則解析.48 1.3.3.10.1 50
1.3.3.11 partition規則解析.50
1.3.3.11.1 eMCC 啟動和 NAND 啟動的分區格式是不一樣的,如果是 eMCC 啟動,多了編譯選項:.50
1.4 高通平臺 7630 啟動流程分析.52 1.4.1 啟動流程概述.52 1.4.2 pbl 流程.52 1.4.3 dbl 流程.52 1.4.4 osbl 流程.54
1.4.4.1 osbl 裝載 appsbl 過程分析.56
1.4.5 appsbl 流程(源代碼在 android中).56
1.4.5.1 aboot_init 過程分析(需要側重關心的部分).58 1.4.5.1.1 fastboot 模式分析.61
1.4.5.1.1.1 什么是 fastboot 模式.61
1.4.5.1.1.2 fastboot 模式與 recovery 模式的區別.61 1.4.5.1.1.3 怎樣進入 fastboot 模式.62
1.4.5.1.1.4 android 系統手機刷機過程分析(補充知識)62 1.4.5.1.2 appsbl 引導 android 系統.63
1.4.5.1.2.1 Android 系統啟動過程中存在的問題.67 1.4.5.1.1.1.1 linker 問題導致系統無法啟動.67 1.4.6 AMSS 流程.69
1.5 android 系統重啟關機流程分析.82 1.5.1 c語言中調用 reboot 函數.82 1.5.2 通過 adb 讓系統重啟.82
1.5.3 fastboot 模式下系統重啟.83 1.5.4 系統關機.84
1.5.5 內核中的系統調用 reboot 85 1.6 軟件調用流程分析.89 1.6.1 設置sim卡狀態.89 1.6.2 設置背光.90 1.6.3 獲取電池信息.90
1.7 python scons 語法學習.94 1.8 python 語法學習.94 1.8.1 Python中文全攻略.94
1.8.2 推薦一款Python編輯器.94
1.8.3 使用 pyExcelerator 讀 Execl 文件.94 1.8.4 xlrd 解析 xls 文件.95 1.8.5 xlrd 生成 xls 文件.95
1.9 Python 語言之 scons 工具流程分析.95 1.9.1 Program 方法.100 1.9.2 Library 方法.100
2、高通常用工具使用.101 2.1 QPST 101 2.2 QXDM 101 2.3 QCAT 101
3、工程模式.101
4、Android 系統更新升級總結.104 4.1 刷機基本知識.104
4.1.1 各品牌代表手機刷機模式進入方法.104 4.1.1.1 HTC G1 104
4.1.1.2 三星 Galaxy i7500 104 4.1.1.3 Google Nexus One 105 4.1.2 fastboot 模式.105
4.1.2.1 fastboot 模式概述.105
4.1.2.2 PC端fastboot 命令分析.106 4.1.2.2.1 命令選項 –w –s-p –c 106 4.1.2.3 手機端fastboot 命令分析.107 4.1.2.3.1 boot 107 4.1.2.3.2 erase 107 4.1.2.3.3 flash 107 4.1.2.3.4 continue 107 4.1.2.3.5 reboot 107
4.1.2.3.6 reboot-bootloader 107 4.1.2.3.7 getvar 107 4.1.2.3.8 download 108 4.1.2.3.9 update 108
4.1.2.3.9.1 system/core/fastboot/fastboot.c:294: 108 4.1.2.3.9.2 fprintf(stderr, “archive does not contain '%s'n”, name);108 4.1.2.4 fastboot 模式流程分析.108 4.1.3 recovery 模式.108
4.1.3.1 recovery 模式概述.108 4.1.3.2 軟件升級包.109
4.1.3.3 recovery v1跟recovery v2的區別.109 4.1.3.4 軟件升級腳本語法解析.109 4.1.3.4.1.1 mount 110 4.1.3.4.1.2 getprop 111
4.1.3.4.1.3 file_getprop 111 4.1.3.4.1.4 assert 111 4.1.3.4.1.5 format 111
4.1.3.4.1.6 apply_patch_check 111 4.1.3.4.1.7 apply_patch_space 111 4.1.3.4.1.8 apply_patch 111
4.1.3.4.1.9 package_extract_file 112 4.1.3.4.1.10 ui_print 112
4.1.3.4.1.11 META-INF/com/google/android/update-script 腳本分析.1124.1.3.4.2 Recovery 模式中 install_package 函數解析.117 4.1.3.5 Recovery 流程分析.118 4.1.3.5.1 恢復出廠設置.118 4.1.3.5.2 系統更新流程.119
4.1.3.5.3 通過sd卡實現刷機.121 4.1.3.6 系統升級包案例分析.122 4.1.4 工程模式(HBoot)模式.122 4.1.4.1 HBOOT降級方法.122
4.2 如何制作升級包 update.zip 123 4.2.1 手動制作升級包.123 4.2.2 自動制作升級包.123 4.3 Android 簽名機制.125
4.4 android 文件系統權限概述.125 4.4.1 獲取手機root權限.127 4.4.2 adb默認權限分析.128
4.4.3 adb root命令切換到 root 權限.129 4.4.4 掛載系統分區為讀寫(remount)130
4.4.5 通過修改 boot.img 獲取 Nexus One 權限.132 4.5 系統應用移植.132
4.5.1 Android 2.2在線升級的移植.132
4.5.2 解決donut Gtalk、Market登錄不了的問題.133 4.5.3 apk反編譯問題總結.133
4.5.4 系統重啟.133
5、高通linux內核驅動開發.133 5.1 添加串口調試.133 5.2 Sensor 傳感器.133
5.3 USB 枚舉 USB Composition 134 5.4 USB 枚舉 USB Composition 136
6、從 android 源代碼制作 sdk 136 6.1 linux sdk 137 6.2 windows sdk 137
7、程序安裝與調試.138
8、android 框架流程分析.138 8.1 屏幕顯示相關.138 8.1.1 屏幕分辨率.138 8.1.2 屏幕模式.139
8.2 Android 開機充電.141 8.3 Android 開機動畫.141 8.3.1 內核開機畫面.141 8.3.2 文件系統開機畫面.141
8.3.2.1 開機顯示的 ANDROID 文字.141 8.3.2.2 ANDROID 發光動畫.142
8.3.2.3 initlogo.rle 文件分析.143
8.3.2.4 bootanimation.zip 文件分析.143 8.3.3 三星I9000 開機動畫.144 8.4 JNI調用流程.145
8.5 Android 開機鈴聲.145 8.6 GPS 導航.145
8.6.1 GPS導航原理.145 8.6.2 GPS導航軟件.145
9、高通modem框架流程分析.146 9.1.1 添加自定義rpc調用.146
9.1.1.1 從AP端獲取modem的系統分區信息.146 9.1.2 添加自定義 AT命令.146
10、linux 應用.146
10.1 嵌入式Linux通過幀緩存截圖包括Scheduling(調度), File system(文件系統), Networking(網絡), Device driver(設備驅動程序), Memory management(存儲管理), Paging(存儲頁面管理)-都在內核中完成.一直到現在廣泛應用的操作系統,如UNIX,Linux,和Windows還大都是monolithic kernel操作系統.但隨著操作系統變得越來越復雜(現代操作系統的內核有一兩百萬行C程序是很常見的事情),把所有這些功能都放在內核中使設計難度迅 速增加.微內核是一個與Monolithic Kernel相反的設計理念.它的目的是使內核縮到最小,把所有可能的功能模塊移出內核.理想情況下,內核中僅留下Address Space Support(地址空間支持),IPC(Inter-Process Communication,進程間通訊),和Scheduling(調度),其他功能模塊做為用戶進程運行。
REX 是在 L4 之上封裝的服務,是一個搶占式,多任務的RTOS,所有的任務都以task的形式存在,REX提供包括任務創建,同步,互斥,計時器,中斷控制等功能的 API,這里的task實際上就是我們的線程,每個 task對應著一個線程。REX維護一個task list(雙向鏈表),始終運行高優先級的task。products里面所有的服務包括3g協議棧等都是以task的形式跑在rex之上的。而Brew的話是運行的環境,跟Java 有點兒類似,相當于是一個虛擬機。AMSS――高級的移動用戶軟件(Advanced Mobile Subscriber Software)技術,是一種新的軟件架構,是對原來軟件架構 DMSS 的升級。AMSS源代碼實際上是QC BREW(Binary Runtime Environment For Wireless)平臺的的底層部分,去掉了為應用程序提供接口的AEE(application execution environment)部分,高通在Dual Proc芯片上的其他平臺基本上都是采用的這樣的架構。
參考文檔:
微內核操作系統及L4概述
http://wenku.baidu.com/view/90929762caaedd3383c4d311.html MSM平臺上的AMSS http://blog.csdn.net/yili_xie/archive/2010/01/04/5129469.aspx
1.2.2 選擇合適的源代碼以及工具 要編譯出可供燒寫使用的鏡像文件需要三部分代碼: 1)獲取經過高通打補丁的 android 源代碼 2)獲取高通針對不同處理器的 vendor 源代碼 3)獲取 modem 源代碼
1.2.2.1 獲取經過高通打補丁的android 源代碼 網址:
http://www.tmdps.cn1312 Chipset(such as QSC6270):MSM7227-1 RF chipset(such as RGR6240):RTR6285 PMIC chipset(such as PM7540):PM7540 WCMDA Supported Bands(900,1900,2100?.if support WCDMA):2100 CMDA Supported Bands(450,850,1900,2100? if support CDMA):not suport OS(Brew,BMP,Android,WM,ThinUI(no UI)?):android froyo OS version(Android Donuts?): android froyo
1.2.2.3.1 高通 modem 源代碼編譯前的修正
從高通獲取的源代碼直接編譯會存在一些問題,以下為可能的問題以及解決方法:
1)為相應的腳本加上編譯選項
vim./AMSS/products/7x30/build/ms/xxxxxx.cmd 加上: BUILD_UNIX=yes
2)如果編譯過程出現.pl 文件沒有執行權限而退出,那么為工程下面所有的 pl 文件加上可執行屬性,命令:
find./-name “*.pl” |xargs chmod 755
3)無法找到需要的 pl 腳本解析器
vim./AMSS/products/7x30/tools/build/depgen.pl 修改
#!/pkg/perl/5.6.1/bin/perl-w 為
#!/usr/bin/perl-w
4)如果出現錯誤:
“AMSS/products/7x30/core/bsp/build/data/incpathsaaabqmlym.py”, line 14 IndentationError: expected an indented block 修改文件:./AMSS/products/7x30/core/bsp/build/scripts/genpaths.pl 內容:
#if($line =~ /^# makefile(from/)為:
if($line =~ /^# makefile /)原因分析:
genpaths.pl 會對編譯過程的中間信息 :...line=# makefile(from'incpaths.min',line 363)line=QVPCODEC_AUDIOINC = $(QVPCODEC)/audio/inc...等信息進行解析,由于我們使用的是中文系統,所以以上內容變為: line=# makefile(從'incpaths.min',行 363)line=QVPCODEC_AUDIOINC = $(QVPCODEC)/audio/inc 所以導致:
#if($line =~ /^# makefile(from/)判斷條件為為 false 無法正確生成 incpathsaaabqmlym.py,python 在解析該文件的時候認為存在語法錯誤。
在 modem 代碼 M7630AABBQMAZM2020(HY11-N2280-2.zip)中開始使用 genincpaths.py 產生
./AMSS/products/7x30/core/bsp/build/data/incpathsaaabqoazm.py 文件,所以修改文件 amend-source-code-qualcomm-modem.sh 在腳本中需要加入以下內容: incpathsxxx_py=$PRODUCT_DIR/core/bsp/build/scripts/genincpaths.py if test-f $incpathsxxx_py;then PERL=`which /usr/bin/perl` sed-i “s/(from//g” $incpathsxxx_py fi./AMSS/products/7x30/multimedia/audio/drivers/Adie/AdieCodecDb/src/DALAdieCodecDb.c #DalAdieCodecDbInternal.h 改為: #include “DALAdieCodecDbInternal.h”
5)如果出現 make: execvp:../../../../platform/cs/bin/cifc: Permission denied 錯誤,執行以下命令:
chmod-R 755 AMSS/platform/cs/bin/*
1.2.3 建立 Android 開發環境(略)
curl http://android.git.kernel.org/repo >~/bin/repo chmod a+x ~/bin/repo export PATH=~/bin:$PATH 1)安裝基本軟件
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java5-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
2)安裝 sun-java5-jdk ubuntu 下通過命令: sudo apt-get install sun-java5-jdk 將會安裝下面的包 sun-java5-bin sun-java5-demo sun-java5-jdk sun-java5-jre sun-java5-plugin 如果ubuntu 發布版本中沒有 sun-java5-jdk 那么 sudo vim /etc/apt/source.list #for sun-java5-jdk deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse sudo apt-get update sudo apt-get sun-java5-jdk 或者,如果 ubuntu 版中不支持 apt-get,那么用手動安裝: sudo mount-t nfs 172.20.127.15:/home/shared /mnt sudo dpkg-i /mnt/tools/debs/java-1.5.0-sun/sun-java5-*
3)配置usb cd /etc/udev/rules.d/ sudo vi 50-android.rules # adb single interface device SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18d1”, SYSFS{idProduct}==“d00d”, MODE=“0664”, GROUP=“plugdev” # adb composite interface device SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“18d1”, SYSFS{idProduct}==“deed”, MODE=“0664”, GROUP=“plugdev” # Sooner low-level bootloader BUS==“usb”, SYSFS{idVendor}==“0bb4”, SYSFS{idProduct}==“0a51”, MODE=“0664”,GROUP=“plugdev” sudo /etc/init.d/udev restart
1.2.4 建立 modem 開發環境
與android 源代碼不同,modem 編譯工具使用的是 RVDS ,實際上只用到其中的 RVCT 編譯器,高通不提供該工具,我們必須從arm公司獲取相應的授權,RVDS 是 ADS 的升級版本,從 ADS 1.2 開始到 RVDS 3.1 我們公司都有其授權,按照高通的要求我們目前必須使用 RVDS 2.2 并且使用他的 349 patch。RVDS 2.2 安裝以及使用步驟如下:
1).RVDS 2.2 共享在 172.20.127.15:/home/shared/ 目錄 sudo mount-t nfs 172.20.127.15:/home/shared/ /mnt cd /mnt/qualcommon/RVDS-2.2/ linux下rvds2.2的安裝程序為:
./rvds2.2_linux-pentium/setuplinux.bin 執行以上命令,按照默認步驟安裝,安裝路徑為:~/ARM 注意事項:
安裝過程如果出現錯誤:
..................java.lang.UnsatisfiedLinkError: /tmp/ismp001/6073753.tmp: libstdc++-libc6.2-2.so.3: cannot open shared object file: No such file or directory 從網上下載 libstdc++-libc6.2-2.so.3 拷貝到 /usr/lib 目錄 ,或者從下面地址獲?。?/p>
http://172.20.127.15/repositories/DocsAndTools/Tools/Qualcomm/RVDS-2.2-patch/patch/libstdc++-libc6.2-2.so.3 工具的安裝通過腳本進行了簡化,具體過程請參考文檔: 80-N0216-2_A_M7630AABBQMAZM1170.pdf 80-VR881-7_B_M7630AABBQMLZA1200.pdf 80-VR192-1_C_AMSS_Linux_Software_Users_Guide.pdf 80-VR192-1_D_AMSS_Linux_Software_Users_Guide.pdf
2)安裝高通指定的 593 patch cd /mnt/qualcommon/RVDS2.2/下執行命令:./setup-patch-rvct2.2-bin593-lib349.sh
目前版本只支持 32 位的系統 1.2.4.1 補充
vim./AMSS/products/7x30/core/bsp/build/scripts/defaults.py 定義了工作線程
#num_jobs = num_cpu * 2 modified by mhf num_jobs = 2 if num_jobs < 4: num_jobs = 2 if num_jobs > 8: num_jobs = 8 env.SetOption('num_jobs', num_jobs)――――――― 獲取 RVDS 官方網站下載評估版本
https://silver.arm.com/browse http://www.tmdps.cn/wiki/QAEP#Branch_Releases http://www.tmdps.cn/wiki/QLBEP 下載 M7630AABBQMLZA1150 分支:
February 1, 2010 M7630AABBQMLZA1150 msm7630 eclair M7630AABBQMLZA1150.xml 命令如下:
mkdir-pv ~/workspace/gphone/eclair-M7630AABBQMLZA1150-20100201 cd ~/workspace/gphone/eclair-M7630AABBQMLZA1150-20100201 repo init-u git://codeaurora.org/platform/manifest.git-b eclair-m M7630AABBQMLZA1150.xml nohup repo sync 代碼下的 vendor/qcom-proprietary 來自包 HY11-VR881-5.zip 以上兩部分代碼已經下載并且合并,共享在:
http://172.20.127.15/repositories/TD1002/trunk/eclair-M7630AABBQMLZA1150---------------編譯 eclair 代碼
svn co http://172.20.127.15/repositories/TD1002/trunk/eclair-M7630AABBQMLZA1150 cd eclair-M7630AABBQMLZA1150 cd eclair-M7630AABBQMLZA1150$../setenv.sh../make-image.sh ======= modem代碼從高通網站:https://support.cdmatech.com/login/ 上獲取 我們目前使用的是: 共享在:
http://172.20.127.15/repositories/TD1002/trunk/modem-M7630AABBQMAZM1220-------編譯 modem 代碼
svn co http://172.20.127.15/repositories/TD1002/trunk/modem-M7630AABBQMAZM1220 cd modem-M7630AABBQMAZM1220../setenv-qualcomm.sh../make ======== 編譯結果分別如下:------------其中 adsp.mbn,amss.mbn,dbl.mbn,osbl.mbn,partition.mbn 位于以下目錄:./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/adsp.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/amss.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/dbl.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/osbl.mbn./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/partition.mbn------------appsboot.mbn,boot.img,system.img,userdata.img 位于以下目錄:./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/appsboot.mbn./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/boot.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img.ext3./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img.ext3------------eMMC 啟動使用的是 ext3 文件系統,需要使用鏡像 system.img.ext3 userdata.img.ext3 補充說明:
partition.mbn 文件的原始數據來自配置文件:
./AMSS/products/7x30/tools/jsdcc/partition_load_pt/partition.xml
1.3 高通平臺,android和 modem 編譯流程分析 android 代碼編譯流程分析 modem 代碼編譯流程分析 1.3.1 android代碼編譯流程分析
1.從服務器下載 android 源碼到當前目錄
http://smartphone/repositories/TD1014/branch/froyo_almond-M76XXTSNCJNLYA6050-drivers/ svn co http://172.20.127.15/repositories/TD1014/trunk/froyo_almond-M76XXTSNCJNLYA6050/ cd froyo_almond-M76XXTSNCJNLYA6050/../setenv.sh 設置環境變量 Setting Environment...通常情況下 generic 用于編譯模擬器版本 Options are: 1.generic 2.msm7627_surf 3.msm7627_ffa 4.tiny-system ====從以上列表中選擇==== Which would you like? [1]
燒錄的鏡像文件appsboothd.mbn appsboot.mbn boot.img system.img userdata.img persist.img 來自 android 源碼 appsboot.mbn 的主要功能是裝載 linux 內核,通過 linux 的引導來完成 android 系統的加載,appsboot.mbn 被燒寫在相應的分區,它的加載由 osbl.mbn 來完成,osbl.mbn 程序來自 modem。
7x30 7x27 系列 appsboot 不一樣,7x30 的 appsboot.mbn 是 7x27 appsboothd.mbn appsboot.mbn 兩個文件的合并
1)appsboot.mbn 生成過程解析
2)boot.img 生成過程解析,怎樣手動生成 boog.img
1.3.1.1 編譯工具檢測
make out/target/product/msm7630_surf/appsboot.mbn 1.3.1.1.1
1.3.1.2 appsboot.mbn 生成過程解析
make out/target/product/msm7630_surf/appsboot.mbn make out/target/product/msm7630_surf/nandwrite make out/target/product/msm7630_surf/emmc_appsboot.mbn 分別執行:
make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ msm7630_surf make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_EMMC_OBJ msm7630_surf EMMC_BOOT=1 生成 nandwrite =============== #build nandwrite as a part of Android Build TARGET_NANDWRITE := $(PRODUCT_OUT)/obj/nandwrite/build-$(TARGET_PRODUCT)_nandwrite/lk NANDWRITE_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/nandwrite
nandwrite_clean: $(hide)rm-f $(TARGET_NANDWRITE)$(hide)rm-rf $(NANDWRITE_OUT)
$(NANDWRITE_OUT): mkdir-p $(NANDWRITE_OUT)
$(TARGET_NANDWRITE): nandwrite_clean $(NANDWRITE_OUT)@echo $(TARGET_PRODUCT)_nandwrite $(MAKE)-C bootable/bootloader/lk BOOTLOADER_OUT=../../../$(NANDWRITE_OUT)$(TARGET_PRODUCT)_nandwrite BUILD_NANDWRITE=1 ================
vim./bootable/bootloader/lk/makefile:98: TARGET := msm7630_surf #./bootable/bootloader/lk/project/msm7630_surf.mk PLATFORM := msm7x30 #./bootable/bootloader/lk/target/msm7630_surf/rules.mk msm7x30 msm7630_surf.mk msm7630_surf_nandwrite ============================= include project/$(PROJECT).mk include target/$(TARGET)/rules.mk include target/$(TARGET)/tools/makefile include platform/$(PLATFORM)/rules.mk include arch/$(ARCH)/rules.mk include platform/rules.mk include target/rules.mk include kernel/rules.mk include dev/rules.mk include app/rules.mk...include make/module.mk...include make/build.mk ======================== vim bootable/bootloader/lk/make/module.mk INCMODULES := $(MODULES)$(info including $(INCMODULES))include $(addsuffix /rules.mk,$(INCMODULES))展開為:./bootable/bootloader/lk/app/nandwrite/rules.mk./bootable/bootloader/lk/dev/fbcon/rules.mk./bootable/bootloader/lk/dev/keys/rules.mk./bootable/bootloader/lk/lib/debug/rules.mk./bootable/bootloader/lk/lib/heap/rules.mk./bootable/bootloader/lk/lib/libc/rules.mk./bootable/bootloader/lk/lib/ptable/rules.mk ======================== bootable/bootloader/lk/make/build.mk:29: include arch/$(ARCH)/compile.mk
./bootable/bootloader/lk/project/msm7630_surf_nandwrite.mk 中有: MODULES += app/nandwrite./bootable/bootloader/lk/platform/msm7x30/rules.mk中有: MODULES += dev/fbcon./bootable/bootloader/lk/kernel/rules.mk 中有: MODULES += lib/libc lib/debug lib/heap./bootable/bootloader/lk/target/msm7630_surf/rules.mk 中有: MODULES += dev/keys lib/ptable 所以:
MODULES= app/nandwrite dev/fbcon dev/keys lib/debug lib/heap lib/libc lib/ptable 因為
ifeq($(BUILD_NANDWRITE), 1)APPSBOOTHDR_FILES := else out/host/linux-x86/bin/acp-fpt out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk out/target/product/msm7630_surf/nandwrite
25780 184 34000 59964 ea3c../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk arm-eabi-objcopy-O binary../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.bin generating listing:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.lst generating listing:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.debug.lst generating symbols:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.sym generating size map:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.size make[2]:正在離開目錄
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk make[1]:正在離開目錄
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk target Prebuilt:(out/target/product/msm7630_surf/nandwrite)
make-C bootable/bootloader/lk BOOTLOADER_OUT=./out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 make[2]: 正在進入目錄
`/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk` msm7630_surf_nandwrite make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/nandwrite msm7630_surf_nandwrite BUILD_NANDWRITE=1 ==》生成 mkheader 工具
gcc target/msm7630_surf/tools/mkheader.c-o target/msm7630_surf/tools/mkheader
$(BUILDDIR)/system-onesegment.ld: $(LOCAL_DIR)/system-onesegment.ld @echo generating $@ @$(MKDIR)$(NOECHO)sed “s/%MEMBASE%/$(MEMBASE)/;s/%MEMSIZE%/$(MEMSIZE)/” < $< > $@
generating../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/system-onesegment.ld compiling arch/arm/crt0.S compiling arch/arm/crt0.S。。compiling lib/ptable/ptable.c compiling lib/ptable/ptable.c
vim bootable/bootloader/lk/platform/msm7x30/rules.mk-----LINKER_SCRIPT += $(BUILDDIR)/system-onesegment.ld include platform/msm_shared/rules.mk-----
./build/core/product_config.mk:177:TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)./build/core/envsetup.mk:152:OUT_DIR := $(TOPDIR)out./build/core/envsetup.mk:159:TARGET_OUT_ROOT_release := $(OUT_DIR)/target./build/core/envsetup.mk:161:TARGET_OUT_ROOT := $(TARGET_OUT_ROOT_$(TARGET_BUILD_TYPE))./build/core/envsetup.mk:178: TARGET_PRODUCT_OUT_ROOT := $(TARGET_OUT_ROOT)/product./build/core/envsetup.mk:184:PRODUCT_OUT := $(TARGET_PRODUCT_OUT_ROOT)/$(TARGET_DEVICE)build/core/envsetup.mk:200:TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj bootable/bootloader/lk/AndroidBoot.mk:4:BOOTLOADER_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/BOOTLOADER_OBJ bootable/bootloader/lk/makefile:32:BUILDDIR := $(BOOTLOADER_OUT)/build-$(PROJECT)bootable/bootloader/lk/makefile:34:OUTELF := $(BUILDDIR)/lk 所以:
TARGET_PRODUCT_OUT_ROOT=out/target/product/ PRODUCT_OUT=out/target/product/msm7630_surf/ TARGET_OUT_INTERMEDIATES=out/target/product/msm7630_surf/obj/ BOOTLOADER_OUT=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/ 所以:
BUILDDIR=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf 所以:
OUTELF=out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk
make-C bootable/bootloader/lk BOOTLOADER_OUT=../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ msm7630_surf
bootable/bootloader/lk/makefile OUTELF := $(BUILDDIR)/lk./bootable/bootloader/lk/make/build.mk $(OUTELF): $(ALLOBJS)$(LINKER_SCRIPT)@echo linking $@ $(NOECHO)$(LD)$(LDFLAGS)-T $(LINKER_SCRIPT)$(ALLOBJS)$(LIBGCC)-o $@
vim./bootable/bootloader/lk/AndroidBoot.mk TARGET_NANDWRITE := $(PRODUCT_OUT)/obj/nandwrite/build-$(TARGET_PRODUCT)_nandwrite/lk $(TARGET_NANDWRITE): nandwrite_clean $(NANDWRITE_OUT)@echo $(TARGET_PRODUCT)_nandwrite $(MAKE)-C bootable/bootloader/lk BOOTLOADER_OUT=../../../$(NANDWRITE_OUT)$(TARGET_PRODUCT)_nandwrite BUILD_NANDWRITE=1
BOOTLOADER_EMMC_OUT := $(TOP)/$(TARGET_OUT_INTERMEDIATES)/BOOTLOADER_EMMC_OBJ
vim./bootable/bootloader/lk/make/build.mk $(OUTELF): $(ALLOBJS)$(LINKER_SCRIPT)@echo linking $@ $(NOECHO)$(LD)$(LDFLAGS)-T $(LINKER_SCRIPT)$(ALLOBJS)$(LIBGCC)-o $@
bootable/bootloader/lk/makefile:33:OUTBIN := $(BUILDDIR)/lk.bin bootable/bootloader/lk/makefile:34:OUTELF := $(BUILDDIR)/lk
./lk/platform/msm7x30/rules.mk:23:LINKER_SCRIPT += $(BUILDDIR)/system-onesegment.ld
==》鏈接 lk linking../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk linking../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk generating image:../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk.bin generating image:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin text data bss dec hex filename 29592 7388 42720 79700 13754../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk text data bss dec hex filename 25780 184 34000 59964 ea3c../../.././out/target/product/msm7630_surf/obj/nandwrite/build-msm7630_surf_nandwrite/lk
==》以 binary 格式,把文件
out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk 輸出到:
out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin arm-eabi-objcopy-O binary out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin ==》
生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.lst 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.debug.lst 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.sym 生成...out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.size make[1]:正在離開目錄 /opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/bootable/bootloader/lk ==》
make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=arm-eabi-msm7630-perf_defconfig make[1]: 正在進入目錄
/opt/workspace/gphone/qualcomm/eclair-M7630AABBQMLZA1150/kernel generating symbols:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.sym generating size map:../../.././out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.size
mkheader 從 lk.bin 生成 appsboothd.mbn 語法: mkheader
out/target/product/msm7630_surf/appsboot.mbn cat out/target/product/msm7630_surf/appsboothd.mbn out/target/product/msm7630_surf/obj/BOOTLOADER_OBJ/build-msm7630_surf/lk.bin > out/target/product/msm7630_surf/appsboot.mbn 刪除:out/target/product/msm7630_surf/appsboothd.mbn ==== 1.3.1.3 boot.img 生成過程解析,怎樣手動生成 boog.img boot.img 包括兩個部分: kernel 和 ramdisk,通過命令: make out/target/product/msm7630_surf/boot.img showcommands 會自動生成 kernel 和 ramdisk,然后把兩者合并制作成燒寫的鏡像文件:boot.img kernel 為
out/target/product/$TARGET_PRODUCT/obj/KERNEL_OBJ/arch/arm/boot/zImage 或者 out/target/product/$TARGET_PRODUCT/kernel , kernel 是 zImage 的拷貝
編譯內核之前必須獲取一個默認的配置文件.config ,此配置文件可以生成,或者來自默認配置,高通中 msm7630_surf 的
默認配置文件名為: msm7630-perf_defconfig 在文件: vendor/qcom/msm7630_surf/AndroidBoard.mk:45 中通過: KERNEL_DEFCONFIG := msm7630-perf_defconfig 進行了指定。我們可以通過命令:
make-j3 ARCH=arm CROSS_COMPILE=arm-eabi-kernel showcommands 或者通過如下命令一步步完成:
1.獲取默認的內核配置并生成.config 的命令如下: make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ ARCH=arm CROSS_COMPILE=arm-eabi-msm7630-perf_defconfig-C kernel 告訴 make 進入 kernel 工作目錄,到其下面尋找 makefile 文件
O 內核編譯的中間文件以及編譯結果等都存儲在該目錄下,此做法的好處是不會在kernel源代碼目錄下生成垃圾文件
ARCH=arm 告訴系統到./kernel/arch/$ARCH/configs/ 目錄下找文件 msm7630-perf_defconfig,生成的.config 保存在:
out/target/product/msm7630_surf/obj/KERNEL_OBJ/.config 2.手動編譯內核
make-C kernel O=../out/target/product/msm7630_surf/obj/KERNEL_OBJ/ 3.如果需要配置內核,使用下面的命令 make kernelconfig 他首先會進入 menuconfig 界面,用戶配置完成以后,會把修改后的配置文件$(KERNEL_OUT)/.config 更新為默認的配置文件
cp out/target/product/msm7627_ffa/obj/KERNEL_OBJ/.config kernel/arch/arm/configs/msm7627-perf_defconfig kernel/arch/arm/configs/$(KERNEL_DEFCONFIG)
4.手動生成 ramdisk 執行命令
make out/target/product/msm7630_surf/ramdisk.img showcommands 會用到命令:
out/host/linux-x86/bin/mkbootfs out/target/product/msm7630_surf/root | out/host/linux-x86/bin/minigzip > out/target/product/msm7630_surf/ramdisk.img 5.手動生成 boot.img 需要使用命令 mkbootimg ,語法如下: mkbootimg--kernel 內核--ramdisk ramdisk鏡像--cmdline 命令行--base 基地址--pagesize 大小--output 輸出的boot.img ========== KERNEL=out/target/product/$TARGET_PRODUCT/kernel KERNEL=out/target/product/$TARGET_PRODUCT/obj/KERNEL_OBJ/arch/arm/boot/zImage RAMDISK=out/target/product/$TARGET_PRODUCT/ramdisk.img CMDLINE=“console=ttyDCC0 androidboot.hardware=qcom” BASE=0x00200000 PAGESIZE=4096 OUTPUT=out/target/product/$TARGET_PRODUCT/boot.img out/host/linux-x86/bin/mkbootimg--kernel $KERNEL--ramdisk $RAMDISK--cmdline “$CMDLINE”--base $BASE--pagesize $PAGESIZE--output $OUTPUT =========================================
編譯 bootloader(appsboot.mbn),nandwrite 生成過程解析./vendor/qcom/msm7630_surf/AndroidBoard.mk:25: include bootable/bootloader/lk/AndroidBoot.mk =================== 因為有:
bootable/bootloader/lk/AndroidBoot.mk:3: TARGET_BOOTLOADER := $(PRODUCT_OUT)/appsboot.mbn INSTALLED_BOOTLOADER_TARGET := $(PRODUCT_OUT)/bootloader file := $(INSTALLED_BOOTLOADER_TARGET)
第四篇:Android平臺QQ空間概念視覺稿
一、前期的準備
制作這次風格稿的時候,問了身邊的一些使用QQ空間的朋友,問他們是如何理解QQ空間的?希望的QQ空間是什么樣子?得到了N多的答案,其中的一些關鍵字我摘錄了出來:“好玩些、讀寫方便、速度快操作流暢、酷一點、可以看到更多和PC用戶的內容、讓我們來選擇自己喜歡操作方式、精致漂亮、要有QQ空間自身的特點?”
在看完這些朋友們給的這些信息之后就到了揣摩消化分析理解體現階段,同時希望可以在風格上嘗試一個和以往的版本不同的地方,既可以體現出QQ空間自身的特點又可以讓用戶耳目一新,接下來就是草圖和素材收集階段,下面就是我對QQ空間的一些認識通過圖片表現一下吧:
你能在下面的視覺稿中發現這些圖片的影子。
二、設計展現階段:
用戶進入登錄界面后,在未輸入賬號的情況下界面中logo置灰顯示,用戶點擊賬號輸入框后logo變亮(在視覺上是從不可操作變化為可操作即可點擊狀態),當用戶輸入密碼后,點擊logo進行登錄。
進入個人中心大家可以看到這里界面的tab欄是做成隱藏狀態的,只露出一個可以點擊的向上按鈕,而且界面中的title和tab都設計成了半透明效果,這樣設計第一為了讓用戶在視覺上擁有更大的閱讀空間,第二也是為了讓用戶有一個愉快的操作體驗,其實用戶在進入個人中心后,他的觀注點會是個人中心里的各種操作,包括寫心情、拍照片、查看留言評論、回復等等,只有當觀注點改變的時候(目的性改變變強)比如需要進入我的主頁查看自己相關的內容、去玩一些應用這個時候用戶才會去切換相應界面,這也是把tab欄設計成隱藏狀態的一個原因。
在界面中為了讓用戶很輕易的識別出每條FEED的屬性設計了一些對應心情、日志、評論、相片、贊等一些圖標。
用戶進行頻道切換時點擊或向上拖動下面的向上按鈕,在觸覺上會有震動反饋,向上的按鈕變大,從視覺上看像是被手指壓住拖動。
這時轉盤形的tab欄從下方被喚出,當前為個人中心界面,所以對應在tab欄上的個人中心的圖標是被激活的,在對tab欄圖標設計處理的時候,均采用了擬物化的設計。
對tab欄操作的時候,用戶可以用2種方式進行頻道間的切換,點擊相應的圖標或拖動環形轉盤便可切換到對應的頻道中,這樣在保證快速切換的同時也增加操作的趣味性,每個頻道對應的icon移動中間位置被激活(效果為淡入淡出效果),同時頻道進行切換,下面2張圖分別代表手指觸控圓盤進行左右滑動時tab欄的變化:
下面是個人主頁、好友、應用界面
個人主頁界面
好友界面
應用界面 三、一些細節和擴展性
1、考慮到用戶的使用習慣和操作方式的不同,在這里把主動權交還給用戶,提供3種操作方式讓用戶自己定義,默認情況下的頻道切換為從下方喚出,用戶可以在設置界面中調整tab欄的操作方式。
2、目前的tab欄上有5個頻道圖標,考慮Qzone的強大整合性不能排除以后繼續增加頻道的可能,所以采用轉盤式的設計方式,也就是這個風格稿的主題之一——玩轉Qzone。
3、在輸入賬號密碼驗證的時候,系統會自動判定男女用戶,如果是女性用戶登錄后系統會自動選擇適合女性的皮膚樣式,對應的圖標也會發生改變,比如個人中心的圖標就會變成一個女孩的ICON。
在產品設計中用戶需求和具體的情景使用感受,也是一個設計師要去全面考慮的。(本文出自Tencent WSD Blog,轉載時請注明出處)
第五篇:Android 個人總結
Android 個人總結
通過本學期的的學習,我知道了android是由google開發的一款手機平臺,android的基本架構是基于linux內核,由內核向外的反別為庫和應用架構,然后就是我們手機上的可視化應用了,android是一個系統,但是并非是操作系統。
在開發之前,我們首先要搭建一個開發環境,用的是java編程的eclipse,我們從網上下載sdk包,里面包含了android開發常用的工具,android既是手機操作系統,也是跨平臺(windows,mac,linux)的開發工具,雖然是使用linux為核心的平臺,但是你可以在很多地方感覺到類似做網頁開發的感覺。具有本身獨特的進程管理方式,完整的上網功能,搭配了google地圖,Gmail等服務,即使像我們這些尚未入門的開發者也能開發出自己理想的應用程序來。
剛開始的時候,得知android開發需要使用java語言心里了小小的畏懼,但隨著學習的漸漸深入就會發現android平臺只是使用了java的語法而已,所以,即使我們不具備java語言開發的基礎,也可以放心地加入到android開發當中來。
第一節課,老師向我們詳細介紹了開發界面右邊窗口的內容,首先是src目錄,里面包含了我們開發界面的java文件以及各種我們創建的類組成的開發包。然后是gen目錄,里面涵蓋的是系統的類文件(如R.java,Buidconfig.java)與android系統的依賴文件(Android Dependencies)。再下來是assets(用戶資源文件),里面文件的訪問是通過文件路徑的形式調用。Bin文件里面包括了res資源文件,android項目配置文件androidmanifest以及我們開發之后產生的后綴為.apk的應用程序文件。Res是系統資源目錄,我們要用到得圖片資源,顏色資源,字符串資源都在里面。一般的開發都要用到界面文件也包含在里面。
Eclipse具有史上超豪華的手機控件,包括常用的文本文件,文本框,按鈕,進度條等,還有特殊形式的email,gmail文本框,在開發過程當中,很多控件都是以拖拉的形式拖拽到開發界面上,大大地減少了我們開發時候的工作量,在配置文件中,我們可以添加各種各樣的系統動作,以及系統服務,還可以建立用戶自己的文件庫。
當我們開發完成的時候,就可以運行手機模擬器,在上面,我們可以像操作當今市場上最流行的android手機一樣操作我們的模擬器,可視化的界面可以我們隨心所欲地下載我們開發的應用程序到模擬器上,就可以實現步步跟進,想要修改哪里就一目了然了,模擬器上人性化的設計界面大大方便了用戶與機器之間的交流。如果我們擁有一部android系統的手機的話,就可以把自己開發的應用程序下到手機上,看到自己的成果,頓生成就感,真的很有樂趣。也加大了我對學習android的信心。
總體來說,學習android就要不怕困難,迎難而上。Android不久可以滿足自己的成就感,還可以在未來的生活中找到自己理想的工作。用別人準備好的各種類,包來開發出自己獨特風格的應用程序,既省時又省力,何樂而不為呢。在這里,要感謝曾老師對我的栽培和關懷,他教給了我知識,使我在學習的時候少走了很多的彎路,也增加了我對未來工作的信心。