編輯:關於Android編程
Linux:Root == Windows:Adminstrator
操作系統 = 系統內核 + 文件系統
Linux發行版:Linux內核 + 文件系統(ext3/4)
Android:Linux內核 + 文件系統(ext3/4)
Android 沒有本地窗口系統
而Linux是可以脫離X窗口的。
Android 沒有glibc library
Android並不包括一整套標准的Linux應用程序
而Linux也是可以脫離這兩點的。
Android內置了專有的驅動程序
然並卵。Linux的內核也分主次,驅動程序也不是不能脫離的,只是去掉後無法識別對應的設備,並不影響Linux的內核的裝載和運行。而且在Linux Kernel Configuration裡可以自由配置需要卸載的項目。不能因為增加了驅動就認為不是Linux。並不是決定操作系統性質的關鍵。判斷操作系統種類的並不是其上層建築,而是深層的系統內核和文件結構。
Linux內核中與驅動相關且比較核心的是驅動接口(Linux驅動運行和安裝規范),是一套二進制規范。
綜上,Android實質上是Linux。
那麼,Root對於Android意味著什麼?
用su命令切換到root用戶
擁有root權限後直接復制 根據Android Rom復制 通過Recovery升級包方式復制
方法一:在bootloader模式下復制整個文件系統
方法二:在Recovery模式將文件復制到Android設備的指定目錄
刷入Clockwork Recovery
通過adb reboot bootloader命令或者關機下按組合按鍵進入bootloader模式。
fastboot:
危險的命令:
fastboot flash bootloader bootloader.img
// 如果bootloader.img錯誤,則需要更換主板
自毀命令:
fastboot erase bootloader
// 擦除
刷Recovery:
fastboot flash recovery recovery.img
重啟設備<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxibG9ja3F1b3RlPg0KCTxwPmZhc3Rib290IHJlYm9vdDwvcD4NCjwvYmxvY2txdW90ZT4NCjxoNCBpZD0="2改造su命令的源代碼">2.改造su命令的源代碼
Android自帶的su命令只允許root和shell用戶(adb shell)調用
主要由待復制的文件和Edify語言(用於對文件和目錄進行操作)編寫的腳本文件組成
編寫Recovery升級包中的updater-script腳本文件,將su命令復制到/system/xbin目錄中。
改造後的su命令,可以被終端和App調用。
不然進入終端執行su命令後才擁有Root權限。
Android內嵌腳本語言,用於編寫updater-script腳本文件。
updater-script是Recovery Rom和升級包的核心。完全由函數組成。
用於在Recovery界面輸出字符串,至少需要一個參數。指定多個參數,會將參數值連起來輸出。
該函數用於執行程序,prog參數是必需的,表示要執行程序文件的完整路徑。其他參數可選。如:
run_program(“/sbin/busybox”,”mount”,”/system”);
刪除一個或多個文件,參數為文件的路徑。如:
delete(“/system/xbin/su”);
用於提取刷機包指定目錄package_path的所有文件到目標目錄destination_path。
設置一個或多個文件的權限。
uid是用戶id。gid是用戶組id。
如果想讓文件的用戶和用戶組都是Root,需要將uid和gid設為0。
掛載分區。如:
mount(“ext4”, “EMMC”, “/dev/block/paltform/s3c-sdhci.0/by-name/system”, “/system”);
卸載分區。如:
unmount(“/system”);
前言:在進入今天正題前,還是老樣子先談談感想吧,最近感覺整個都失去了方向感,好迷茫!找工作又失敗了,難道Android真的飽和了?這兩天我一直沒出門,除了下樓哪外賣就是宅
第1節 選擇Arduino開發板1.1 Arduino是什麼對Arduino,官方有一堆解釋。作為一個軟件程序猿,在我眼裡,Arduino是學習“可怕硬件&r
實現更新下載進度的功能1. 通過廣播交互Server端將目前的下載進度,通過廣播的方式發送出來,Client端注冊此廣播的監聽器,當獲取到該廣播後,將廣播中當前的下載進度
先看演示: 一個Handler允許你發送和處理消息(Message)以及與一個線程的消息隊列相關的Runnable對象。每個Handler實例都和單個線程以及該線程的消息