[英]Android device configuration for AOSP
我已經下載了Android源代碼。 現在我想為自己的設備(LG GT540)制作它。 我聽說你需要為此創建一些“設備配置”。 雖然有幾位開發人員已經為我的設備創建了設備配置,但我想創建自己的設備,僅供學習。
我看到很多文件,如BoardConfig.mk,AndroidProducts.mk等。但不知道他們做了什么。 除了它們包含很多配置。 在那之上,沒有一個好的文檔。
任何有Android移植和設備配置經驗的人都可以幫助我嗎?
對...所以你想建立自己的設備樹,繼續閱讀。
免責聲明:這絕不是完整的,並且會有遺漏,因為已經解釋了所有這些我的頭腦並復制粘貼在我自己的設備樹上的某些位。
設備樹,例如/device/lg/gt540
將包含以下make文件:
/device/lg/gt540/libsensors
, /device/lg/gt540/liblights
, /device/lg/gt540/libcamera
等 /device/lg/gt540/device_gt540.mk
,這也是具體的。 device_gt540.mk
讓我們看看每一個,看看它們適合的位置。
Android.mk:
ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),xxxxx)
include $(call all-named-subdir-makefiles, recovery libsensors liblights libcamera ....)
endif
這就是構建將如何使用它來構建恢復,傳感器,燈光和攝像頭(當然會有更多),它說' Yo Builder,進入指定的每個目錄,並構建各自的源plskthxbai '
AndroidBoard.mk:
LOCAL_PATH := device/lg/gt540/
#
# Boot files
#
TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/kernel
file := $(INSTALLED_KERNEL_TARGET)
ALL_PREBUILT += $(file)
$(file): $(TARGET_PREBUILT_KERNEL) | $(ACP)
$(transform-prebuilt-to-target)
現在,這是告訴構建系統,能夠將此內核放入out/target/product/lg/gt540
(注意與設備樹目錄的相關性?)
AndroidProducts.mk:
PRODUCT_MAKEFILES := \
$(LOCAL_DIR)/device_gt540.mk
它告訴構建在' Yo Builder中,請讀取該設備制作文件並在構建完成后處理它。 “
* device_xxxxx.mk :(對於此示例,device_gt540.mk)*
PRODUCT_NAME := lg_gt540
PRODUCT_DEVICE := gt540
PRODUCT_MODEL := LG GT 540
PRODUCT_COPY_FILES += \
... specific ...
PRODUCT_PROPERTY_OVERRIDES := \
ro.com.android.dateformat=dd-MM-yyyy \
... more stuff ...
這就是設備的所有細節,例如驅動程序,專有庫,專用於設備的支持腳本,在這種情況下被復制到out/target/product/lg/gt540/system/
。 請注意屬性的覆蓋如何,最終會出現在Android ROM的/system
根目錄中的build.prop
中。
BoardConfig.mk:
LOCAL_PATH:= $(call my-dir)
TARGET_NO_BOOTLOADER := true
TARGET_PREBUILT_KERNEL := device/lg/gt540/kernel
TARGET_PREBUILT_RECOVERY_KERNEL := device/lg/gt540/recovery_kernel
# This will vary from device!
TARGET_BOARD_PLATFORM := msm7k
TARGET_ARCH_VARIANT := armv6-vfp
TARGET_CPU_ABI := armeabi
TARGET_CPU_ABI := armeabi-v6l
TARGET_CPU_ABI2 := armeabi
# OpenGL drivers config file path
BOARD_EGL_CFG := device/lg/gt540/egl.cfg
# Dependant, not to be taken literally!
BOARD_GLOBAL_CFLAGS += -DHAVE_FM_RADIO
# Dependant, not to be taken literally!
BOARD_KERNEL_BASE := 0x02600000
# this will be device specific, and by doing cat /proc/mtd will give you the correct sizes
BOARD_BOOTIMAGE_PARTITION_SIZE := 0x00480000
BOARD_RECOVERYIMAGE_PARTITION_SIZE := 0x00480000
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 0x0cf80000
BOARD_USERDATAIMAGE_PARTITION_SIZE := 0x0d020000
BOARD_FLASH_BLOCK_SIZE := 131072
這是一段摘錄,注意我們如何指定內核的基地址,這是在編譯完成后生成boot.img
方式,然后又被放入out/target/product/lg/gt540/boot.img
。 另外,更重要的是,我們告訴構建系統使用目標平台來交叉編譯源代碼(* TARGET_BOARD_PLATFORM * / * TARGET_CPU_ABI *)那里會有更多信息,例如條件標志傳遞給編譯器,一個例子。 我們指定了指令HAVE_FM_RADIO
來告訴它,當涉及到處理FM無線電系統的源時,有條件地編譯部分源。 同樣,這是特定於硬件的,里程也會有所不同,這也適用於引導地址。 簡而言之,這就是說' Yo Builder,讀取該死的變量並記住它們並在交叉編譯這些源文件時應用它們! “
現在顯示了每個Android構建make文件的內部。
現在,在AOSP的vendor/
部分上,簡單地,再次,相關並與device/
樹對應,如繼續這個例子, vendor/lg/gt540/
被lunch
拿走。 那里有更多的make文件,但普遍的共識是有一個名為proprietary
的目錄,其中包含被復制的專有庫(由於close-source等)。 模塊的復制在文件device-vendor-blobs.mk中指定,在本例中為gt540-vendor-blobs.mk
。
當通過執行以下操作發生魔術:
. build/envsetup.sh
這是讀取每個device/
子目錄中的所有條目並“記住它們”,因此構建系統知道使用了什么類型的目標等。
什么時候. lunch
. lunch
被調用,會出現一個菜單,提示您選擇需要構建的設備。 現在是進行構建的最后一步也是最后一步......
make -j5 > buildlog.log 2>&1
我在另一個終端上運行multitail
並監視buildlog.log
文件以檢查並確保它的構建。
最后一步將取決於您擁有多少核(n核+ 1作為規則)並且需要一段時間才能構建,GB構建在運行Arch Linux 64bit的筆記本電腦上需要40分鍾,ICS構建需要大約2小時30分鍾。 因此,里程將根據您的機器具有何種類型的馬力而變化。
構建完成后,一個小鈴聲響起,在所述日志文件的底部,我看到:
Combining NOTICE files: out/target/product/xxxxx/obj/NOTICE.html
Target system fs image: out/target/product/xxxxx/obj/PACKAGING/systemimage_intermediates/system.img
Install system fs image: out/target/product/xxxxx/system.img
out/target/product/xxxx/system.img+ total size is 108776448
感興趣的是JBQ(Jean Baptiste Queru--管理/分發谷歌來源的'老板'),他的構建步驟是......
make -j32
對! 32核! 那......非常強大。
這里有一些信息: http : //elinux.org/Android_Device
對於為設備構建Android的人來說,這是一個很好的資源: http : //com.odroid.com/sigong/nf_file_board/nfile_board_view.php?bid = 98
(ODROID中Android平台開發的實用實際方法)
雖然其中的一些東西特別適用於ODROID主板,但它仍然可以深入了解Android的內部工作原理以及新主板的必要定制。
如果你想進入硬件方面,可能是我發現的最具信息量的資源:
http://source.android.com/compatibility/overview.html
閱讀他們為希望構建Android設備的制造商編寫的文檔,這是您將找到的最徹底/完整的參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.