我已經下載了Android源代碼。現在我想爲我自己的設備(LG GT540)製作。我聽說你需要爲此創建一些「設備配置」。雖然有幾位開發人員已經爲我的設備創建了設備配置,但我想創建自己的設備,僅供學習。
我看到很多像BoardConfig.mk,AndroidProducts.mk等文件,但不知道他們做了什麼。除了它們包含很多配置。除此之外,沒有一個好的文檔。
任何具有Android移植和設備配置經驗的人都能幫助我嗎?針對AOSP的Android設備配置
回答
右...所以你想要建立你自己的設備樹,閱讀。
免責聲明:這決不是完整的,而且會有不作爲已經解釋過我的頭這一切的頂部和複製粘貼的某些位,我這裏有我自己的設備樹。
設備樹,例如,/device/lg/gt540
將包括以下讓文件:
- Android.mk - 這將告訴構建系統包括和專門搭建來源爲您的設備。例如,請參閱下面的內容。這取決於設備和硬件上,你可以有libsensors,liblights,libcamera子目錄中的示例設備樹下,即
/device/lg/gt540/libsensors
,/device/lg/gt540/liblights
,/device/lg/gt540/libcamera
等 - AndroidBoard.mk - 這是爲內核,構建系統使用它來放下內核映像(更多關於這個在幾分鐘內)
- AndroidProducts.mk - 指定適當的設備的構建文件,用於建設。即
/device/lg/gt540/device_gt540.mk
,這也是特定的。 - device_xxxxx.mk - 指定的屬性和額外複製了進入決賽的輸出,在這種情況下,它可能是例如,
device_gt540.mk
- BoardConfig.mk - 這是這一切的肉,這是設置編譯器條件標誌,分區佈局,引導地址,ramdisk大小等的地方。
讓我們窺視到每個那些給一目瞭然,以它在所有的擬合
Android.mk:
ifeq ($(TARGET_BOOTLOADER_BOARD_NAME),xxxxx)
include $(call all-named-subdir-makefiles, recovery libsensors liblights libcamera ....)
endif
這是構建將如何使用即建立恢復,傳感器,燈光和相機(當然會有更多),它的說法'呦建設者,進入每個指定的目錄,並建立各自的來源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
它告訴編譯爲「呦生成器,讀取設備請創建文件並在完成構建後處理它。'
* device_xxxxx.mk:(在這個例子中,device_gt540.mk)*
這是所有的細節的裝置,例如驅動器,專有庫,支持腳本專門爲該設備在這種情況下被複制到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構建生成文件的內部結構。
現在,到了它的vendor/
一部分,AOSP,簡單地說,再次,相關性,對應與device/
樹,在這個例子中,vendor/lg/gt540/
它獲取由lunch
拾起繼續。在那裏有更多的make文件,但一般的共識是有一個名爲proprietary
的目錄,其中包含專有庫(由於近源等)被複制。在文件中指定了對庫的複製,在device-vendor-blobs.mk中,在這種情況下,gt540-vendor-blobs.mk
。
當奇蹟發生通過執行以下操作:
. build/envsetup.sh
這在每個device/
子目錄發現整個條目讀,「記得他們」,因此構建系統知道是什麼類型的目標使用等
當調用. lunch
時,會出現一個菜單,提示選擇構建所需的設備。現在最後的,也是最後一步做構建...
make -j5 > buildlog.log 2>&1
我另一個終端上運行multitail
和監視buildlog.log
文件,檢查並確保它的建設。
這最後一步將取決於您擁有多少核心(通常n個核心+ 1),需要一段時間才能構建,我的筆記本電腦上運行Arch Linux 64位需要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(讓·巴蒂斯特缺乳的事 - 在「老闆」用於管理/分發來自Google的源代碼),他的構建步驟是...
make -j32
是! 32核心!那.....非常強大。
如果你正在尋找進入事物的硬件方面可能是最豐富的資料,我發現已經:
http://source.android.com/compatibility/overview.html
仔細閱讀他們爲尋求構建android設備的製造商編寫的文檔,這是您將找到的最全面/最完整的參考資料。
的人建立的Android的設備的優秀資源是在這裏: http://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?bid=98
(一種實用的現實世界的方法到Android平臺開發在ODROID)
雖然有些東西在裏面是特別對於ODROID董事會來說,它仍然能夠深入瞭解Android的內部運作情況以及新董事會的必要定製。
- 1. 針對虛擬設備配置的Android Studio「建議」
- 2. Android設備配置
- 3. 專門針對Android設備
- 4. 針對android移動設備
- 5. 添加新的設備AOSP
- 6. 針對單個AOSP或CyanogenMod java應用程序的Eclipse設置
- 7. Android設備配置問題
- 8. Android移植設備配置
- 9. Android虛擬設備配置
- 10. 「配對」2 Android設備
- 11. 針對不同的Android設備
- 12. 針對多種設備開發的Android
- 13. 針對不同用戶配置文件的Android搜索設置
- 14. 配對的Android設備Bluetooth配置文件
- 15. 分別針對iPhone,iPad和Android設備
- 16. Android中配對設備的狀態
- 17. 構建我的HTC設備的AOSP
- 18. 建立自定義設備的AOSP
- 19. Android設備通過配對的藍牙設備喚醒
- 20. Android的,怎樣才能讓BLE裝置配對設備(保稅)
- 21. Eclipse/Android - 調試配置 - 設備?
- 22. Android虛擬設備配置有誤?
- 23. 以編程方式配置Android設備
- 24. AOSP香草Android端口到非連接設備 - 編寫設備樹和內核
- 25. Android與藍牙LE設備配對
- 26. 配對設備在android中爲null
- 27. 尋找Android藍牙配對設備
- 28. Android BLE ACTION_ACL_CONNECTED未呼叫配對設備
- 29. 在Android Studio中配對藍牙設備
- 30. 需要針對不同類型設備的相同設計android
我一直在尋找這個!,很好的答案! – DGomez 2012-07-18 18:49:44
你知不知道,我可以閱讀一些文檔,開始在這個東西? – DGomez 2012-07-18 18:50:17
這不能更有幫助。謝謝。 – korro 2013-02-05 22:33:06