日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

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

一.文件創(chuàng)建

在device下創(chuàng)建如下目錄: cat --fish 就是說我們的公司是cat,我們的產(chǎn)品fish。然后在fish下創(chuàng)建四個(gè)文件:

1.1vendorsetup.sh

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

    1.2AndroidProducts.mk

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

    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??
  • 這個(gè)腳本在加載完AndroidProducts.mk后就會(huì)被加載,用來配置產(chǎn)品名稱等信息。因?yàn)樗^承了mini_common.mk,所以我們只需要配置幾個(gè)有差異的變量即可。

    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??
  • 這個(gè)腳本參考了device/generic/x86/BoardConfig.mk,基本不用修改。這樣,新增一個(gè)產(chǎn)品所需的四個(gè)文件都配置好了。以上三個(gè)文件具體加載流程可參考《android編譯系統(tǒng)分析(三)-make》。

    二.嘗試編譯

    首先source build/envsetup.sh,然后執(zhí)行l(wèi)unch : 菜單輸出如下: [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??
  • 可以看到我們的產(chǎn)品已經(jīng)出現(xiàn),這里選擇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 編譯結(jié)束后在out下生成對(duì)應(yīng)產(chǎn)品的文件:

    這只是一個(gè)簡單的嘗試,更加復(fù)雜的產(chǎn)品定制期待與大家共同探討。

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。