android系統鏡像
㈠ android 5.1 怎麼編譯為鏡像
Android編譯系統在初始化的過程中,會通過根目錄下的Makefile腳本載入build/core/main.mk腳本,接著build/core/main.mk腳本又會載入build/core/Makefile腳本,而Android系統鏡像文件就是由build/core/Makefile腳本負責打包生成的。
在build/core/main.mk文件中,與Android系統鏡像文件打包過程相關的內容如下所示:
[plain] view plain
......
ifdef FULL_BUILD
# The base list of moles to build for this proct is specified
# by the appropriate proct definition file, which was included
# by proct_config.make.
proct_MODULES := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES)
# Filter out the overridden packages before doing expansion
proct_MODULES := $(filter-out $(foreach p, $(proct_MODULES), \
$(PACKAGES.$(p).OVERRIDES)), $(proct_MODULES))
$(call expand-required-moles,proct_MODULES,$(proct_MODULES))
proct_FILES := $(call mole-installed-files, $(proct_MODULES))
......
else
# We're not doing a full build, and are probably only including
# a subset of the mole makefiles. Don't try to build any moles
# requested by the proct, because we probably won't have rules
# to build them.
proct_FILES :=
endif
......
moles_to_install := $(sort \
$(ALL_DEFAULT_INSTALLED_MODULES) \
$(proct_FILES) \
$(foreach tag,$(tags_to_install),$($(tag)_MODULES)) \
$(call get-tagged-moles, shell_$(TARGET_SHELL)) \
$(CUSTOM_MODULES) \
)
# Some packages may override others using LOCAL_OVERRIDES_PACKAGES.
# Filter out (do not install) any overridden packages.
overridden_packages := $(call get-package-overrides,$(moles_to_install))
ifdef overridden_packages
# old_moles_to_install := $(moles_to_install)
moles_to_install := \
$(filter-out $(foreach p,$(overridden_packages),$(p) %/$(p).apk), \
$(moles_to_install))
endif
......
# Install all of the host moles
moles_to_install += $(sort $(moles_to_install) $(ALL_HOST_INSTALLED_FILES))
# build/core/Makefile contains extra stuff that we don't want to pollute this
# top-level makefile with. It expects that ALL_DEFAULT_INSTALLED_MODULES
# contains everything that's built ring the current make, but it also further
# extends ALL_DEFAULT_INSTALLED_MODULES.
ALL_DEFAULT_INSTALLED_MODULES := $(moles_to_install)
include $(BUILD_SYSTEM)/Makefile
moles_to_install := $(sort $(ALL_DEFAULT_INSTALLED_MODULES))
ALL_DEFAULT_INSTALLED_MODULES :=
......
.PHONY: ramdisk
ramdisk: $(INSTALLED_RAMDISK_TARGET)
......
.PHONY: userdataimage
userdataimage: $(INSTALLED_USERDATAIMAGE_TARGET)
......
.PHONY: bootimage
bootimage: $(INSTALLED_BOOTIMAGE_TARGET)
......
如果定義在FULL_BUILD這個變數,就意味著我們是要對整個系統進行編譯,並且編譯完成之後 ,需要將編譯得到的文件進行打包,以便可以得到相應的鏡像文件,否則的話,就僅僅是對某些模塊進行編譯。
在前面Android編譯系統環境初始化過程分析一篇文章中,我們提到,變數INTERNAL_PRODUCT描述的是執行lunch命令時所選擇的產品所對應的產品Makefile文件,而變數PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_PACKAGES描述的是在該產品Makefile文件中通過變數PRODUCT_PACKAGES所定義的模塊名稱列表。因此,我們得到的變數proct_MODULES描述的就是要安裝的模塊名稱列表。
我們知道,Android源碼中自帶了很多默認的APK模塊。如果我們想用自己編寫的一個APK來代替某一個系統自帶的APK,那麼就可以通過變數PACKAGES.<new>.OVERRIDES := <old>來說明。其中,<new>表示用來替換的APK,而<old>表示被替換的APK。在這種情況下,被替換的APK是不應該被打包到系統鏡像中去的。因此,我們需要從上一步得到的模塊名稱列表中剔除那些被替換的APK,這是通過Makefile腳本提供的filter-out函數來完成的。
一個模塊可以通過LOCAL_REQUIRED_MODULES變數來指定它所依賴的其它模塊,因此,當一個模塊被安裝的時候,它所依賴的其它模塊也會一起被安裝。調用函數expand-required-moles獲得的就是所有要安裝的模塊所依賴的其它模塊,並且將這些被依賴的模塊也一起保存在變數proct_MODULES中。
注意,這時候我們得到的proct_MODULES描述的僅僅是要安裝的模塊的名稱,但是我們實際需要的這些模塊對應的具體文件,因此,需要進一步調用函數mole-installed-files來獲得要安裝的模塊所對應的文件,也就是要安裝的模塊經過編譯之後生成的文件,這些文件就保存在變數proct_FILES中。
最終需要安裝的文件除了變數proct_FILES所描述的文件之後, 還包含以下四類模塊文件:
1. 變數ALL_DEFAULT_INSTALLED_MODULES描述的文件。
2. 變數CUSTOM_MODULES描述的文件。
3. 與當前編譯類型對應的模塊文件。例如,如果當前設定的編譯類型為debug,那麼所有通過將變數LOCAL_MODULE_TAGS將自己設置為debug的模塊也會被打包到系統鏡像文件中去。
4. 與當前shell名稱對應的模塊文件。例如,如果當前使用的shell是mksh,那麼所有通過將變數LOCAL_MODULE_TAGS將自己設置為shell_mksh的模塊也會被打包到系統鏡像文件中去。
最後,moles_to_install就描述當前需要打包到系統鏡像中去的模塊文件。實際上,我們除了可以通過PACKAGES.$(p).OVERRIDES來描述要替換的APK之後,還可以在一個模塊中通過LOCAL_OVERRIDES_PACKAGES來描述它所替換的模塊。因此,我們需要通過函數get-package-overrides來獲得此類被替換的模塊文件,並且將它們從moles_to_install中剔除,這樣得到的模塊文件才是最終需要安裝的。
確定了要安裝的所有模塊文件之後,就可以將build/core/Makefile文件載入進來了。注意,文件build/core/Makefile是通過變數ALL_DEFAULT_INSTALLED_MODULES來獲得當前所有要打包到系統鏡像文件中去的模塊文件的。
文件build/core/Makefile主要就是用來打包各種Android系統鏡像文件的,當然它也是通過make規則來執行各種Android系統鏡像文件打包命令的。每一個Android鏡像文件都對應有一個make偽目標。例如,在build/core/main.mk文件中,就定義了三個make偽目標ramdisk、userdataimage和bootimage,它們分別依賴於變數INSTALLED_USERDATAIMAGE_TARGET、INSTALLED_USERDATAIMAGE_TARGET和INSTALLED_BOOTIMAGE_TARGET所描述的文件,並且它們分別表示的就是ramdisk.img、userdata.img和boot.img文件。
㈡ 安卓系統鏡像可以幹嘛
安卓鏡像是一種文件,通過模擬器什麼的可以在手機上實現電腦上的各種軟體等等,就比如是把自己的手機當成電腦。
㈢ 安卓手機鏡像怎麼做會不會很復雜
通常有兩種辦法,一種辦法比較傳統,一種辦法比較主流也比較簡單。
採用傳統辦法製作的安卓手機鏡像會比較穩定,可是它有一個非常明顯的缺點那就是操作難度非常之在。一般不是專業的手機維修人員是很難通過程序代碼這個傳統方式來製作手機鏡像的。因為想要採用這個辦法,除了精通程序代碼之外,還要對安卓手機的系統文件等非常地熟悉,知道什麼時候應該調用哪個系統文件,什麼時候應該輸入相關的繁瑣指令。所以一般手機達人都不建議新手用傳統的辦法來製作安卓手機鏡像。而是採用另一種主流的製作辦法。
這另一種主流的安卓手機鏡像製作辦法其實就是利用手機軟體來完成。之所以說它主流,主要是非常地容易操作。只要下載一個赤兔DE,無論新老手都可以完成安卓手機鏡像。這款軟體在安卓手機鏡像製作方面非常出色,而且操作也相對簡單,很適合大眾使用。
(注意)無法通過dd來製作鏡像的情況:
安裝手機驅動以及jdk,android sdk。手機驅動等可以用360手機助手安裝,jdk只能用32位的jdk不管系統是否是32位。
android sdk的安裝目錄在:C:-sdk
其中需要通過AVD Manager. exe安裝android sdk tools才有adb程序。或者直接調用第三方程序中包含的adb程序也可以。
其中,調用飛信中的adb程序,或者直接用甜椒刷機助手裡的adb很方便。
㈣ 怎樣才能把android手機屏幕鏡像到電視上
1. 手機和超級電視處於同一區域網內。將超級電視的「多屏互動」功能開啟。該選項在「設置」--> "系統」-->「多屏互動」。
㈤ 如何將安卓手機系統打包成鏡像
讓安卓手機系統打包成鏡像的話,其實你直接就是利用備份就好了,輩分的話他就可以多一份。
㈥ 請問安卓系統的鏡像是什麼意思如何刷鏡像
這是一種刷機的模式,先刷底包,然後開機後再運行升級工具,刷升級包,對手機進行優化和修改UI,一般刷升級包前要ROOT。MOTO的機子一般是用這種刷法,因為MOTO是鎖BL的。刷機過程是用工程模式軟體刷底包(MOTO是RSD),刷完開機,修改成工程調試模式(DEBUG模式),然後用專門的工具ROOT,ROOT完後,刷工具包升級,over。
㈦ 如何修改android系統的ramdisk以及boot鏡像
ramdisk 是一種基於內存的虛擬磁碟技術,採用ext2文件系統。ramdisk.gz是ramdisk文件再壓縮後的格式。查看ramdisk.gz根文件系統,或者對原有的文件系統進行修改,只需解壓,再把獲得的鏡像文件掛載即可。
修改步驟如下:
解壓:轉到ramdisk.gz所在文件夾#gunzip ramdisk.gz
注意,解壓後會得到ramdisk鏡像文件,該鏡像文件會把原有的ramdisk.gz覆蓋,因此如果想保留ramdisk.gz復制到其他文件夾後再解壓。掛載: #mkdir /mnt/loop
#mount –o loop ramdisk /mnt/loop //掛載鏡像到loop目錄
#cd /mnt/loop這里可以看到, 就是ramdisk.gz成功載入後的目錄。修改文件系統的內容比如設置固定的IP地址,MAC地址。
umount /mnt/loop卸載 /mnt/loop0。
重新壓縮成.gz壓縮文件
#gzip –v9 ramdisk//生成新的ramdisk.gz壓縮文件。
㈧ android x86 6鏡像怎麼安裝
方法/步驟
1
將U盤插入電腦,備份U盤中的文件 格式U盤 ,打開UltraISO。
2
在菜單欄依次點擊【文件】->【打開】,選擇剛才下載好的安卓x86安裝鏡像。
3
鏡像打開後,在菜單欄依次點擊【啟動】->【寫入硬碟映像】。
4
檢查硬碟驅動器是否是剛才插入的U盤,寫入方式選擇「USB-HDD+」,然後點擊【寫入】按鈕。
END
方法/步驟2
1
鏡像寫入完成後,不要拔U盤,重新啟動電腦。進入Boot Menu,選擇U盤啟動。
2
從U盤啟動進入Android x86安裝菜單,從上至下四個選項依次為:直接運行Android x86、VESA模式、Debug模式以及硬碟安裝向導;
3
硬碟安裝第一步時創建一個專為存放Android系統的分區。選擇【Create/Modify partitions】,進入磁碟分區界面。
END
方法/步驟3
1
在分區創建界面,按左右方向鍵將游標移動到【New】。
2
選擇【Primary】首先創建一個主分區,這是由於系統必須安裝在主分區上
3
然後輸入需要創建的主分區容量大小,單位為MB。2g夠了.
4
設置完分區後選擇菜單的【Bootale】選項將分區設置成可啟動分區(類似於Windows中的活動分區)。
5
5.選擇【Write】,提示「warning!!...」輸入「YES」回車即可完成分區新建,然後選擇【Quit】選項返回安裝分區選擇界面。
END
方法/步驟4
1
主分區創建好之後,就可以將Android x86系統安裝到之前創建的分區中。
1.返回到系統安裝分區選擇界面,剛才創建好的分區已經顯示在菜單的列表中了,選擇該分區作為你的系統分區,然後按回車鍵確定。
2
接下來選擇分區的文件系統,建議選擇【EXT3】,這是在移動版Android系統上最常用的分區之一,對安卓應用的兼容性更好。
3
安裝引導載入程序確認,選擇【YES】。
4.設置系統文件夾為可讀寫許可權,選擇【Yes】。適合開發者進行Debug,但會佔用一點硬碟空間。如果不需要可以選擇【No】。
5.當提示「...installed successfully」 安卓x86系統已經成功安裝到硬碟上了。
6.在此界面上你還可以選擇創建一個虛擬SD卡(Create a fake SD card),某些應用如微信就必須要使用SD卡才能正常運行。
7.虛擬SD卡創建出成功後,選擇【Run Android-x86】。
8.後面的安裝步驟只需按照提示操作就可以了,都是中文的。
㈨ 如何製作安卓平板系統鏡像
對Android系統的所有模塊進行編譯之後,對編譯出來的模塊文件進行打包。
打包結果就是是獲得一系列的鏡像文件,例如system.img、boot.img、ramdisk.img、userdata.img和recovery.img等。
些鏡像文件最終可以燒錄到手機上運行。
Android編譯系統在初始化的過程中,會通過根目錄下的Makefile腳本載入build/core/main.mk腳本,接著build/core/main.mk腳本又會載入build/core/Makefile腳本,而Android系統鏡像文件就是由build/core/Makefile腳本負責打包生成的。
system.img鏡像文件描述的是設備上的system分區,即/system目錄,它是在build/core/Makefile文件中生成的
build/core/main.mk文件定義了boot.img鏡像文件的依賴規則,我們可以通過執行make bootimage命令來執行。其中,bootimage是一個偽目標,它依賴於INSTALLED_BOOTIMAGE_TARGET。
build/core/main.mk文件定義了ramdisk.img鏡像文件的依賴規則,我們可以通過執行make ramdisk命令來執行。其中,ramdisk是一個偽目標,它依賴於INSTALLED_RAMDISK_TARGET。
userdata.img鏡像描述的是Android系統的data分區,即/data目錄,裡麵包含了用戶安裝的APP以及數據等等。
recovery.img是設備進入recovery模式時所載入的鏡像。recovery模式就是用來更新系統的,我們可以認為我們的設備具有兩個系統。一個是正常的系統,它由boot.img、system.img、ramdisk.img和userdata.img等組成,另外一個就是recovery系統,由recovery.img組成。平時我們進入的都是正常的系統,只有當我們需要更新這個正常的系統時,才會進入到recovery系統。因此,我們可以將recovery系統理解為在Linux Kernel之上運行的一個小小的用戶空間運行時。這個用戶空間運行時可以訪問我們平時經常使用的那個系統的文件,從而實現對它的更新。
㈩ 如何修改Android系統的Ramdisk以及boot鏡像
ramdisk 是一種基於內存的虛擬磁碟技術,採用ext2文件系統。ramdisk.gz是ramdisk文件再壓縮後的格式。查看ramdisk.gz根文件系統,或者對原有的文件系統進行修改,只需解壓,再把獲得的鏡像文件掛載即可。 修改步驟如下: 解壓:轉到ramdisk.gz所在文件夾 #gunzip ramdisk.gz 注意,解壓後會得到ramdisk鏡像文件,該鏡像文件會把原有的ramdisk.gz覆蓋,因此如果想保留ramdisk.gz復制到其他文件夾後再解壓。 掛載: #mkdir /mnt/loop #mount –o loop ramdisk /mnt/loop //掛載鏡像到loop目錄 #cd /mnt/loop 這里可以看到, 就是ramdisk.gz成功載入後的目錄。 修改文件系統的內容 比如設置固定的IP地址,MAC地址。 umount /mnt/loop卸載 /mnt/loop0。 重新壓縮成.gz壓縮文件 #gzip –v9 ramdisk//生成新的ramdisk.gz壓縮文件。