原创 服務的註冊

Server獲得了Service Manager遠程接口之後,就要把自己的Service添加到Service Manager中去,然後把自己啓動起來,等待Client的請求。本文將通過分析說明Server的啓動過程是怎麼樣的。我們

原创 Android Binder原理篇

繼Android Binder實列篇之後對binder通信原理進行簡潔的說明。 先上張圖對整個機制有個全局的認識。 上圖虛線表示代理 本系列文章將會按照上圖過程進行講解: 1. ServiceManager守護進程的

原创 MTK安卓第三方內核模塊編譯

在原生的linux環境中編譯第三方驅動的資料比較多。只需要在驅動的makefile中指定交叉編譯器和編譯後內核的路徑就可以開始編譯了。具體可以參考linux驅動編譯系統。 我不知道是安卓的原因還是變態的mtk不兼容原生驅動編譯方

原创 linux驅動編譯系統

前言 從Linux內核2.6開始,Linux內核的編譯採用Kbuild系統,這同過去的編譯系統有很大的不同,尤其對於Linux內核模塊的編譯。在新的系統下,Linux編譯系統會多次掃描Linux的Makefile。 範列 下面我們

原创 Android Binder實列篇

前言 Binder是安卓應用最寬泛的進程間的通信方式,在分析安卓源碼時少不了要和其打交道。對於一般開發人員而言只要知會其如何使用,如何實現進程間的通信即可,本文就是爲了達到這個目的而寫,一是給自己做一個備忘,二是讓想了解binde

原创 基於安卓的本地編譯環境

或許您有過這樣的需求,需要單獨的編譯一個c代碼在安卓機器上運行,但又不想去編寫Android.mk.對Android.mk情有獨鍾的您可以略過。因爲linux的工具實在是太多,相比Android toobox較爲完善, 有些工具能

原创 linux 常用命令

拷貝 拷貝指定的文件到指定的目錄並保持原始的目錄結構: tar c $(find . -type f -name '*.src*') | tar x -C destDir tar c $(find . -type f -ctime

原创 USB之概述

最近在安卓系統上開發usb應用,剛開始並不順利自己也走了不少彎路。網上的資料也是參差不齊,或是講解不夠詳細看完還是一頭霧水,爲了給遇到usb問題的同仁快速得定位問題,同時也作爲自己的備忘錄,將這段時間自己對usb的認識加以總結。該

原创 MTK效率最高編譯命令

當修改一些代碼時,使用什麼編譯命令可以提高編譯效率! ./mk n(r) kernel ./mk bootimage 當修改kernel相關代碼時,要使用此命令,具體如下: alps/kernel/ alps/mediate

原创 ServiceManager守護進程的註冊

Service Manager是整個Binder機制的守護進程,用來管理開發者創建的各種Server,並且向Client提供查詢Server遠程接口的功能。Service Manager作爲本地服務由Init進程啓動。在Init.

原创 安卓的數字簽名技術

什麼是簽名 實際生活中我們自己的簽名是爲了證明簽名的材料是出自於你手,是否有人更改,是辨別真假的一種最簡單直接的方式。那麼什麼是數字世界的簽名呢?其實和現實世界的簽名一樣,是爲了保證數字內容的完整性,保證傳輸的內容沒有經過非法的更

原创 ServiceManager遠程代理的獲取

ServiceManager管理着系統中所有的服務,無論是service 還是client只要跟系統中的服務打交道,必先獲取ServiceManager的代理,才能獲取ServiceManager提供的各項服務。在安卓系統中Ser

原创 設計模式分類

設計模式是什麼 克里斯托弗·亞歷山大說過:“每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題解決方案的核心。” 設計模式的四個基本要素: 1.模式名稱:對模式解決的問題和模式解決方案的簡略描述 2.問題:描述

原创 設計原則

單一職責原則 定義 一個類只負責一項職責,不要存在多於一個導致類變更的原因。 描述 問題由來:類T負責兩個不同的職責:職責P1,職責P2。當由於職責P1需求發生改變而需要修改類T時,有可能會導致原本運行正常的職責P2功能發生

原创 安卓OTA升級系統解析上

在MTK安卓環境中只需要在alps 目錄執行./mk otapackage即可打包ota升級包,下面我們來分析下這個過程中。 alps/mk代碼片段 sub chkDep { my $module = $_[0]; my