原创 淺談Binder

前言 最近沉迷於Android源碼中無法自拔,只是苦於內功淺薄,很多東西看得雲裏霧裏。起初對Android圖形系統比較感興趣,一頭扎進去,不到片刻,就再也找不到“線頭”。原因之一在於Android在啓動一個activity到從LC

原创 C和內存

1.當聲明一個變量時,編譯器就爲這個變量申請了若干大小(視該變量類型而定,如32位系統中申請了整形變量,則內存大小爲4個字節) 的內存用來存儲該變量的內容,同時將該變量的名稱和該變量在內存中的地址關聯起來,這樣程序在訪問變量時,相當於訪問

原创 一個實用性很廣的C語言鏈表實例 [轉]

鏈表的c語言實現(一) 準備:動態內存分配 一、爲什麼用動態內存分配 但我們未學習鏈表的時候,如果要存儲數量比較多的同類型或同結構的數據的時候,總是使用一個數組。比如說我們要存儲一個班級學生的某科分數,總是定義一個float型(存在0.5

原创 Zygote的啓動流程

前言 Android系統開發,zygote顯然是接觸很多的一個術語。那zygote是什麼呢?好奇查了下zygote的中文翻譯:受精卵。這是我見過最形象和最正確的命名。顧名思義,就是孵化下一代。Android中,Zygote是所有A

原创 Android源碼閱讀神器-openGrok的搭建

前言 閱讀Android源碼這樣龐大的代碼,沒有一個趁手的工具,會比較難受。之前都是通過vim來閱讀源碼,但沒有做相關的vim插件配置,所以每次都需要進行grep,效率極低。後來嘗試在ubuntu中使用sourceinsight,

原创 MTK平臺Android9.0 NVRAM的讀寫---上層實現SN和MAC讀寫

前言 MTK平臺有自己的序列號和MAC地址燒錄工具,但只能用於個人的調試,如果產品要量產,還使用MTK平臺自己的燒錄工具,則就不合適了,因爲滿足不了工廠生產的一些客製化功能,比如SN號和MAC地址拼湊在一起同時燒錄,MTK燒錄工具

原创 Android系統升級流程---下篇

前言 緊接着Android系統升級流程上篇,在上篇中,大概介紹了調用installPackage方法後發生的一系列的事,在這期間,系統準備好升級包,向misc分區中寫入升級指令,接着重啓進入recovery模式,本篇文章作爲And

原创 Android系統升級流程---上篇

前言 大部分Android設備出廠時的軟件大都是帶着bug風險(低風險)出貨的,後期再通過OTA的方式去升級修訂補丁。在滿足主要功能正常使用的情況下產品搶先出貨,其他小功能再通過迭代更新。這個功能的重要性不言而喻。今天就來看看An

原创 Java中的CRC校驗

前言 最近客戶有CRC校驗的需求,即希望Android端對字符串進行校驗,並將生成的2個字節的CRC校驗碼追加到字符串中,然後一起寫入文件。當系統聯網後,會通過寫入的字符串去向服務器請求設備序列號,服務器會根據該字符串的原始字符串(不含校

原创 踩坑之默認輸入法配置

前言 在實際項目開發過程中,需要集成客戶的輸入法,但Android原生並不支持輸入法的配置。在這裏記錄下實際操作。 支持默認輸入法配置 Android原生並不支持默認輸入法的設置,默認就是谷歌原生的輸入法。如果要默認配置使用搜狗輸入法或者

原创 Android的自救---RescueParty

前言 不知道你有沒有遇過,就是有時系統開機異常,會直接進入到一個機器人的error界面。我這邊就遇到,在OTA升級後,開機後會自動重啓,且進入到機器人error界面。經查找,是由於有一個進程在系統開機的時候,不斷重啓,觸發了Res

原创 Android9.0的默認配置

前言 Android系統的一些默認配置,需要根據客戶的需求進行具體的配置。在這裏記錄Android9.0的一些默認配置方法。 方法論 在源碼中尋找某個配置的默認值時,先確認這個配置是否存在默認值,且該配置是否有狀態保存,一般來說,

原创 TCP socket

socket之TCP 什麼是socket? 說道socket,就得說到客戶端和服務端。通俗點講,客戶端是指就在我們旁邊的,我們需要通過客戶端去訪問服務端, 做一些數據互動,起到通訊的作用。而服務端則是“遠在天邊”,但通過建立socket,

原创 Android9.0 如何實現動態權限白名單

前言 此次使用Android9.0做一個動態權限白名單的功能,即客戶要求他們的app默認就該應用所有的權限,在運行過程中,不需要去動態申請權限,即不彈窗。 在Android M之前, Runtime permissions是直接被

原创 Android9.0勿擾模式【Do Not Disturb】

前言 最近使用客戶的launcher設置音量時,會彈出一個界面,用於授權,用於給【勿擾模式】進行授權。 授權界面的源碼 通過adb shell 指令獲取當前的包名和界面,發現顯示如下: com.android.Settings.S