android根文件系統目錄結構

1.Android系統分區

 


2.根文件系統目錄結構

cache :是緩存臨時文件夾,

etc :指向 /system/etc ,衆所周知的配置文件存放目錄

system :是Android根文件系統中一個很重要的目錄,系統中的大部分東西都在這裏了

sys:用於掛載 sysfs文件系統。。

proc :/proc 文件系統下的多種文件提供的系統信息不是針對某個特定進程的,而是能夠在整個系統範圍的上下文中使用。

mnt:U盤等外部存儲設備掛載路徑

data :存放用戶安裝的軟件以及各種數據。

dev :設備節點文件的存放地。

tmp:寫權限最近在做一個項目,需要應用將一個程序(比如testcmd)放到/data/local/tmp中執行。

storage:外部SD卡所在目錄

Init: 是系統啓動到文件系統的時候第一個運行的程序

init.rc :系統初始化腳本


Android中的內核啓動後,kernel會啓動第一個用戶級別的進程:init,它是一個由內核啓動的用戶級進程。內核自行啓動(已經被載入內存,開始運行,並已初始化所有的設備驅動程序和數據結構等)之後,就通過啓動一個用戶級程序init的方式,完成引導進程。init始終是第一個進程。

 

2.2.2---init 進程

 

Init源碼位置:JB目錄下system/core/init/init.c中。

Init作用:

(1)、 創建一些linux根文件系統中的目錄

(2)、讀取並且解析init.rc文件

(3)、讀取並且解析硬件相關的init.magellanbroad.rc腳本文件

(4)、初始化動態設備管理,設備文件有變化時反應給內核

(5)、啓動系統屬性服務: system property service

(6)、啓動init.rc中定義的boot 等各種action和service.

………

 

 

2.2.2---system目錄結構

 

System 目錄結構分析

\system\app

這個裏面主要存放的是常規下載的應用程序,可以看到都是以APK格式結尾的文件, 在這個文件夾下的程序爲系統默認的組件,自己安裝的軟件將不會出現在這裏,而是\data\app。

\system\bin

這個目錄下的文件都是系統的本地程序,從bin文件夾名稱可以看出是binary二進制的程序,裏面主要是Linux系統自帶的組件

\system\etc

從文件夾名稱來看保存的都是系統的配置文件

\system\fonts

字體文件夾,除了標準字體和粗體、斜體外可以看到文件體積最大的可能是中文字庫

\system\framework

framework主要是一些核心的文件,從後綴名爲jar可以看出是是系統平臺框架

\system\lib

lib目錄中存放幾乎所有的共享庫(.so)文件

\system\media

鈴聲音樂文件夾,除了常規的鈴聲外還有一些系統提示事件音

\system\xbin

系統員管理工具

build.prop

系統全局屬性

……..

…….

特別說明:

build.prop 是一個屬性文件,在Android系統中.prop文件很重要,記錄了系統的設置和改變,類似於/etc中的文件。

1、查看build.prop

#getprop

……

[ro.secure]: [0]

[ro.serialno]: []

[ro.sf.lcd_density]: [160]

[ro.wifi.channels]: [14]

[service.adb.tcp.port]: [5555]

[service.bootanim.exit]: [1]

[sys.boot_completed]: [1]

[sys.usb.config]: [adb]

…..

 

# getprop ro.sf.lcd_density  //查看單個屬性

2、設置屬性

#setprop ro.sf.lcd_density  240

 

 

 

 

一、替換android系統文件

分別可通過U盤copy 和adb push等方式替換

U盤裏放需要替換的文件

1、  U盤插進板子USB接口、usb會自動mount在系統跟目錄的/mnt/udisk目錄下

2、  先刪除掉系統中需要替換的文件

3、  命令cp 相應文件到自己的目錄

adb push方式

1、  adb連接設備

2、  adb push 本地替換文件目錄  android系統相關目錄

 

ps:替換android 系統apk(atv.apk)

1、 系統apk 存放在/system/app目錄下,系統system分區默認爲只讀的,首選需要重新mountsystem 目錄 成爲可讀寫

#mount –o remount rw /system

2、 刪除atv.apk 

#rm /system/app/atv.apk

如需爲了push進系統的apk裏面生效我們還需刪除掉apk在/data/data目錄下生成的相應數據

#pm install com.realtek.atv

3、  push 新的apk進系統

#adb push d:\atv.apk /system/app

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、 android 獨立模塊的編譯(apk、so、jar檔等)

 

 android的編譯命令有m mm mmm等三個編譯命令

 

m:編譯所有的模塊 
mm:編譯當前目錄下的模塊,當前目錄下要有Android.mk文件 
mmm:編譯指定路徑下的模塊,指定路徑下要有Android.mk文件

 

想使用這些命令,首先需要在android源碼根目錄執行.build/envsetup.sh 腳本設置環境

#source ./build/envsetup.sh或者#. build/envsetup.sh

 

Ps:

1、編譯apk    Y:\Workspace\kernel\android\JB\device\realtek\app\atv

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./device/realtek/apps/Atv/

將會在下面的目錄下生成atv.apk

Y:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\app/atv.apk

 

2、編譯jar檔Y:\Workspace\kernel\android\JB\frameworks\base\services\java

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./ frameworks/base/services/java

將會在下面的目錄下生成services.jar

Y:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\framework\ services.jar

 

爲了每次都要輸入TARGET_PRODUCT對應的產品編號可以做如下操作:

 

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$lunch

You're building on Linux

 

Lunch menu... pick a combo:

 ……

13.rtk_magellan_tv001-eng

14. magellan_tv010-eng

…….

Which would you like? [full-eng] 14

….

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章