日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Android编译系统分析四:实战-新增一个产品

發布時間:2025/3/21 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android编译系统分析四:实战-新增一个产品 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通過上一節“android編譯系統(三)-make”的分析,初步理清楚了編譯初期加載產品相關信息的流程,整個過程主要涉及三個文件:1.AndroidProducts.mk,2.具體產品的配置文件,3.BoardConfig.mk,加上lunch需要的vendorsetup.sh文件,總共只需要四個文件就可以了,所以我們不妨成熱打鐵,趕緊嘗試下如何新增一個產品。因此,android編譯系統鏡像文件的創建過程方到下一節。

一.文件創建

在device下創建如下目錄: cat --fish 就是說我們的公司是cat,我們的產品fish。然后在fish下創建四個文件:

1.1vendorsetup.sh

這個文件內容如下: [plain]?view plaincopy
  • add_lunch_combo?fish-eng??
  • 當我們執行source build/envsetup.sh的時候,就會找到我們的這個文件,lunch的時候就會在菜單中顯示我們的產品。具體這個文件的加載過程可以參考《android編譯系統分析一<source build/envsetup.sh與lunch>》。

    1.2AndroidProducts.mk

    [plain]?view plaincopy
  • PRODUCT_MAKEFILES?:=?\??
  • ????$(LOCAL_DIR)/fish.mk??
  • 也是只有一行,就是指明產品的配置文件是哪個。這個腳本會在執行make后,product_config.mk下通過查找命令找到,找到后就會加載進來。

    1.3fish.mk

    [plain]?view plaincopy
  • $(call?inherit-product,?device/generic/armv7-a-neon/mini_common.mk)??
  • ??
  • PRODUCT_NAME?:=?fish??
  • PRODUCT_DEVICE?:=?fish??
  • PRODUCT_BRAND?:=?Android??
  • 這個腳本在加載完AndroidProducts.mk后就會被加載,用來配置產品名稱等信息。因為它繼承了mini_common.mk,所以我們只需要配置幾個有差異的變量即可。

    1.4BoardConfig.mk

    [plain]?view plaincopy
  • TARGET_NO_BOOTLOADER?:=?true??
  • TARGET_NO_KERNEL?:=?true??
  • ??
  • TARGET_ARCH?:=?x86??
  • TARGET_CPU_ABI?:=?x86??
  • ??
  • SMALLER_FONT_FOOTPRINT?:=?true??
  • MINIMAL_FONT_FOOTPRINT?:=?true??
  • #?Some?framework?code?requires?this?to?enable?BT??
  • BOARD_HAVE_BLUETOOTH?:=?true??
  • BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR?:=?device/generic/common/bluetooth??
  • ??
  • #?Build?OpenGLES?emulation?libraries??
  • BUILD_EMULATOR_OPENGL?:=?true??
  • BUILD_EMULATOR_OPENGL_DRIVER?:=?true??
  • USE_OPENGL_RENDERER?:=?true??
  • ??
  • BOARD_USE_LEGACY_UI?:=?true??
  • ??
  • #?share?the?same?one?across?all?mini-emulators??
  • BOARD_EGL_CFG?:=?device/generic/goldfish/opengl/system/egl/egl.cfg??
  • ??
  • #?PDK?does?not?use?ext4?image,?but?it?is?added?here?to?prevent?build?break.??
  • TARGET_USERIMAGES_USE_EXT4?:=?true??
  • BOARD_SYSTEMIMAGE_PARTITION_SIZE?:=?576716800??
  • BOARD_USERDATAIMAGE_PARTITION_SIZE?:=?419430400??
  • BOARD_CACHEIMAGE_PARTITION_SIZE?:=?69206016??
  • BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE?:=?ext4??
  • BOARD_FLASH_BLOCK_SIZE?:=?512??
  • TARGET_USERIMAGES_SPARSE_EXT_DISABLED?:=?true??
  • 這個腳本參考了device/generic/x86/BoardConfig.mk,基本不用修改。這樣,新增一個產品所需的四個文件都配置好了。以上三個文件具體加載流程可參考《android編譯系統分析(三)-make》。

    二.嘗試編譯

    首先source build/envsetup.sh,然后執行lunch : 菜單輸出如下: [plain]?view plaincopy
  • Lunch?menu...?pick?a?combo:??
  • ?????1.?aosp_arm-eng??
  • ?????2.?aosp_arm64-eng??
  • ?????3.?aosp_mips-eng??
  • ?????4.?aosp_mips64-eng??
  • ?????5.?aosp_x86-eng??
  • ?????6.?aosp_x86_64-eng??
  • ?????7.?fish-eng??
  • ?????8.?mini_emulator_arm64-userdebug??
  • ?????9.?m_e_arm-userdebug??
  • ?????10.?mini_emulator_mips-userdebug??
  • ?????11.?mini_emulator_x86_64-userdebug??
  • ?????12.?mini_emulator_x86-userdebug??
  • 可以看到我們的產品已經出現,這里選擇7: [plain]?view plaincopy
  • Which?would?you?like??[aosp_arm-eng]?7??
  • ??
  • ============================================??
  • PLATFORM_VERSION_CODENAME=REL??
  • PLATFORM_VERSION=6.0??
  • TARGET_PRODUCT=fish??
  • TARGET_BUILD_VARIANT=eng??
  • TARGET_BUILD_TYPE=release??
  • TARGET_BUILD_APPS=??
  • TARGET_ARCH=x86??
  • TARGET_ARCH_VARIANT=x86??
  • TARGET_CPU_VARIANT=??
  • TARGET_2ND_ARCH=??
  • TARGET_2ND_ARCH_VARIANT=??
  • TARGET_2ND_CPU_VARIANT=??
  • HOST_ARCH=x86_64??
  • HOST_OS=linux??
  • HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty??
  • HOST_BUILD_TYPE=release??
  • BUILD_ID=MRA58K??
  • OUT_DIR=out??
  • ============================================??

  • 可以看到打印出了配置信息,TARGET_PRODUCT=fish,TARGET_BUILD_TYPE=eng等。 最后嘗試編譯,首先make clean,然后再make 編譯結束后在out下生成對應產品的文件:

    這只是一個簡單的嘗試,更加復雜的產品定制期待與大家共同探討。

    總結

    以上是生活随笔為你收集整理的Android编译系统分析四:实战-新增一个产品的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。