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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

android系统源代码添加新产品的支持

發(fā)布時間:2025/4/16 windows 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android系统源代码添加新产品的支持 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

不同項目共用一個CPU等核心平臺,項目外圍有些差異,需要共用絕大部分代碼,比如我們基于高通msm8937 64位CPU開發(fā)3款產品(每款產品定義為一個項目的體現(xiàn)形式),我們用DEVELOP_PROJECT來記錄并區(qū)分,DEVELOP_PRODUCT對應這3個項目的名稱為evb(評估板)、ht_v8(手持機v8型號設備),dr_v2(門禁設備V2型號設備)。

我們是基于msm8937_64上來擴展為支持幾個項目共用一套代碼,為驗證這套機制的基本實現(xiàn),我們以修改“設置--->關于手機--->型號”來驗證,這個對應device\qcom\msm8937_64\msm8937_64.mk的PRODUCT_MODEL的值。其他部分的兼容性在此基礎上展開。

  • 查找包含msm8937_64的目錄
  • 查找了device、system、hardware、vendor和build目錄

    Msm8937下lk部分是對應msm8952目錄,但lk目錄修改較少

    ?

    這里面的device/qcom/8937_64是針對8937 64位的,目錄如下:

    我們是基于框CPU來開發(fā)幾款產品,所以可以在此目錄下把共同部分保持原來的目錄結構,產品可能不同的就放在新創(chuàng)建的對應的目錄下,比如針對于evb(評估板),我們在device\qcom\msm8937_64下新建device_evb文件夾,把差異性部分放在這里,其他產品類似。

    ?

  • 編譯設置
  • 先來看看高通默認的編譯之前的操作配置

    (1)?? source build/envsetup.sh

    (2)?? lunch msm8937_64-userdebug

    ?

    2.1? source build/envsetup.sh

    使當前shell讀入build/envsetup.sh的shell文件并依次執(zhí)行文件中的所有語句,通常用于重新執(zhí)行剛修改的初始化文件,使之立即生效,而不必注銷并重新登錄

    ?

    打印的信息

    WARNING: Only bash is supported, use of other shell would lead to erroneous results

    including device/generic/mini-emulator-arm64/vendorsetup.sh

    including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh

    including device/generic/mini-emulator-x86_64/vendorsetup.sh

    including device/generic/mini-emulator-x86/vendorsetup.sh

    including device/qcom/common/vendorsetup.sh

    including vendor/forge/vendorsetup.sh

    fatal: Not a git repository (or any of the parent directories): .git

    FORGE_VERSION ==> 1B62.XXXXXXX.180823.100.V01.T01

    FORGE_AP_VERSION ==> SLM757MG_EQ0_XXXXXXX_180823_100_V01_T01

    including vendor/qcom/proprietary/common/vendorsetup.sh

    including sdk/bash_completion/adb.bash

    ?

    (1)?? 找出包含有vendorsetup.sh的文件并執(zhí)行

    這來會找到并執(zhí)行其中的device\qcom\common\vendorsetup.sh,此sh相關的有

    add_lunch_combo msm8937_32-userdebug

    add_lunch_combo msm8937_64-userdebug

    add_lunch_combo msm8953_32-userdebug

    也就是調用add_lunch_combo這個函數(shù),將各自產品添加到LUNCH_MENU_CHOICES變量中去。

    (2)?? add_lunch_combo()

    # Clear this variable.? It will be built up again when the vendorsetup.sh# files are included at the end of this file.unset LUNCH_MENU_CHOICESfunction add_lunch_combo(){local new_combo=$1local cfor c in ${LUNCH_MENU_CHOICES[@]} ; doif [ "$new_combo" = "$c" ] ; thenreturnfidoneLUNCH_MENU_CHOICES=(${LUNCH_MENU_CHOICES[@]} $new_combo)}這里重點

    是收集所有的vendor清單,用echo ${LUNCH_MENU_CHOICES[@]}打印出來的值

    aosp_arm-eng aosp_arm64-eng aosp_mips-eng aosp_mips64-eng aosp_x86-eng aosp_x86_64-eng mini_emulator_arm64-userdebug m_e_arm-userdebug mini_emulator_x86_64-userdebug mini_emulator_x86-userdebug msm8974-userdebug msm8610-userdebug msm8226-userdebug apq8084-userdebug mpq8092-userdebug msm_bronze-userdebug msm8916_32-userdebug msm8916_32_512-userdebug msm8916_32_k64-userdebug msm8916_64-userdebug msm8994-userdebug msm8996-userdebug msm8909-userdebug msm8909_512-userdebug msm8992-userdebug msm8952_64-userdebug msm8952_32-userdebug msm8937_32-userdebug?msm8937_64-userdebug?msm8953_32-userdebug msm8953_64-userdebug msm8998-userdebug msm8998_32-userdebug msmfalcon_64-userdebug msmfalcon_32-userdebug msmskunk-userdebug

    (3)?? adb.bash

    在sdk/bash_completion目錄下的adb.bash文件也會加載到當前終端來,它是用來實現(xiàn)adb命令的bash completion功能的。也就是說,加載了該文件之后,我們在運行adb相關的命令的時候,通過按tab鍵就可以幫助我們自動完成命令的輸入。關于bash completion的知識,可以參考官方文檔:?http://www.gnu.org/s/bash/manual/bash.html#Programmable-Completion。

    2.2? lunch msm8937_64-userdebug

    說明下,如果沒有前面的source build/envsetup.sh,將會提示-sh: lunch: command not found

    輸出的信息

    ============================================

    PLATFORM_VERSION_CODENAME=REL

    PLATFORM_VERSION=7.1.1

    TARGET_PRODUCT=msm8937_64

    TARGET_BUILD_VARIANT=userdebug

    TARGET_BUILD_TYPE=release

    TARGET_BUILD_APPS=

    TARGET_ARCH=arm64

    TARGET_ARCH_VARIANT=armv8-a

    TARGET_CPU_VARIANT=generic

    TARGET_2ND_ARCH=arm

    TARGET_2ND_ARCH_VARIANT=armv7-a-neon

    TARGET_2ND_CPU_VARIANT=cortex-a53

    HOST_ARCH=x86_64

    HOST_2ND_ARCH=x86

    HOST_OS=linux

    HOST_OS_EXTRA=Linux-4.4.0-62-generic-x86_64-with-Ubuntu-16.04-xenial

    HOST_CROSS_OS=windows

    HOST_CROSS_ARCH=x86

    HOST_CROSS_2ND_ARCH=x86_64

    HOST_BUILD_TYPE=release

    BUILD_ID=NMF26F

    OUT_DIR=out

    ?

    (1)?? build_build_var_cache()

    lunch()--->build_build_var_cache()

    這里會執(zhí)行build/core/config.mk

    (2)?? printconfig

    lunch()--->printconfig()--->get_build_var(),此函數(shù)的參數(shù)是report_config,在core/dumpvar.mk中的print_build_config_vars對應上面打印的信息,但他們的值怎來的呢

    ?

    (3)?? ?

    2.3? ?

  • 增加DEVELOP_PRODUCT記錄我們開發(fā)的設備型號
  • ,DEVELOP_PRODUCT對應這3個項目的名稱為evb(評估板)、ht_v8(手持機v8型號設備),dr_v2(門禁設備V2型號設備)。

    ?

    3.1? DEVELOP_PRODUCT能夠手動選擇并全局生效

    手動輸入,默認為evb

    要實現(xiàn)這個多產品選項

    /build/envsetup.sh的lunch()調用新增的choose_develop_product(),如下:

    PRODUCT_CHOICES=(evb ht_v8 dr_v2)# check to see if the supplied variant is validfunction check_develop_product(){for v in ${PRODUCT_CHOICES[@]}doif [ "$v" = "$1" ]thenreturn 0fidonereturn 1}function choose_develop_product(){echo $1T=$(gettop)echo "product choices are:"local index=1local vfor v in ${PRODUCT_CHOICES[@]}do# The product name is the name of the directory containing# the makefile we found, above.echo "???? $index. $v"index=$(($index+1))donelocal default_value=evblocal ANSWERexport DEVELOP_PRODUCT=while [ -z "$DEVELOP_PRODUCT" ]doecho -n "Which would you like? [$default_value] "if [ -z "$1" ] ; thenread ANSWERelseecho $1ANSWER=$1fiif [ -z "$ANSWER" ] ; thenexport DEVELOP_PRODUCT=$default_valueelif (echo -n $ANSWER | grep -q -e "^[0-9][0-9]*$") ; thenif [ "$ANSWER" -le "${#PRODUCT_CHOICES[@]}" ] ; thenexport DEVELOP_PRODUCT=${PRODUCT_CHOICES[$(($ANSWER-1))]}fielseif check_develop_product $ANSWERthenexport DEVELOP_PRODUCT=$ANSWERelseecho "** Not a valid project: $ANSWER"fifiif [ -n "$1" ] ; thenbreakfidone}function lunch(){local answerchoose_develop_product $2…}

    3.2? 我們以修改“設置--->關于手機--->型號”來驗證

    這個對應device\qcom\msm8937_64\msm8937_64.mk的PRODUCT_MODEL的值,默認為

    PRODUCT_MODEL := msm8937 for arm64

    ?

    實現(xiàn)這個驗證的主要實現(xiàn)如下:

    (1)?? 創(chuàng)建product_evb文件夾

    在device\qcom\msm8937_64下創(chuàng)建product_evb文件夾

    (2)?? product_evb文件夾創(chuàng)建msm8937_64_evb.mk文件

    此文件下的內容PRODUCT_MODEL := evb

    (3)?? msm8937_64.mk把msm8937_64_evb.mk文件包含進來

    include device/qcom/msm8937_64/product_$(DEVELOP_PRODUCT)/msm8937_64_$(DEVELOP_PRODUCT).mk

    這里用到了記錄產品型號的DEVELOP_PRODUCT變量。

    ?

    參考鏈接:

    深入淺出 - Android系統(tǒng)移植與平臺開發(fā)(十一)- Android系統(tǒng)的定制

    https://blog.csdn.net/mr_raptor/article/details/30113417?readlog

    ?

    為android源碼添加新設備支持概述

    https://blog.csdn.net/felix_wangq/article/details/49834207

    ?

    為android系統(tǒng)添加產品的過程

    https://blog.csdn.net/getnextwindow/article/details/48158873

    ?

    Android 系統(tǒng)添加新項目及配置

    https://blog.csdn.net/zhbpd/article/details/50274715

    ?

    msm8909+android5.1.1編譯前配置及增加新項目和產品所需分支

    https://www.2cto.com/kf/201602/491312.html

    ?

    Android集成一個新產品時,lunch的product name和device name注意事項

    https://www.2cto.com/kf/201512/454247.html

    總結

    以上是生活随笔為你收集整理的android系统源代码添加新产品的支持的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 超碰2021 | 日本xxxxxwwwww | 一级特黄aaa | 国产精品久久久久久亚洲毛片 | 亚洲精品一区二区三区蜜桃久 | 人妻熟女一区二区三区 | 日本欧美色| 777亚洲| 午夜激情啪啪 | 日b免费视频 | 精品少妇人妻av一区二区 | 99热最新在线 | 男人视频网 | 天天综合永久 | 免费网站污 | 影音先锋婷婷 | 青青草狠狠干 | 国产妞干网 | av免费成人 | 国产麻豆成人精品av | 综合国产一区 | 亚洲AV成人无码精品久久盆瓶 | 69精品在线 | 瑟瑟视频免费观看 | 日韩成人av一区二区 | 天天综合视频 | 午夜欧美视频 | 黄色网址在线免费播放 | 一级特黄aa大片免费播放 | 99国产热| 亚洲av无码一区二区乱子仑 | 黑人黄色大片 | 日韩精品电影在线 | 最新中文字幕在线 | 国产一区二区三区在线观看免费 | 少妇一级淫片免费观看 | 久久泄欲网 | 九色蝌蚪视频 | 精品中文在线 | 黄色的网站免费观看 | 一本大道久久精品 | 国产精品久久一区二区三区 | 夜夜夜操| 国产一区二区日韩 | 黑白配在线观看免费观看 | 欧洲丰满少妇做爰 | 操日韩 | 国产麻豆精品一区二区 | 日韩高清国产一区在线 | gogo人体做爰大胆视频 | 中文字幕日本 | aaaaaaa毛片 | 高清毛片aaaaaaaaa郊外 | 性欧美成人播放77777 | 免费黄色av网站 | 91人人干| 电影《两个尼姑》免费播放 | 欧美日韩在线不卡 | 四虎成人av | 亚洲黄色在线观看视频 | eeuss鲁丝片一区二区三区 | 欧美日韩一区二区三区在线观看 | 亚洲一区免费 | 少妇熟女一区二区三区 | 日韩中文字幕 | 成人免费看aa片 | 国产成人福利在线 | 玖玖爱av | 成人一级视频在线观看 | 小情侣高清国产在线播放 | 青青青视频免费观看 | 窝窝在线视频 | 台湾佬美性中文网 | 91黄色免费网站 | 成人免费无码大片a毛片抽搐色欲 | 国产又粗又大又爽视频 | 91午夜视频在线观看 | 射久久久 | 日本理论片在线 | 亚洲一级淫片 | 欧美性猛交乱大交3 | 日本精品久久久 | 青青青青青操 | av色图| 亚洲视频在线观看网址 | av55 | 免费高清av在线看 | 岛国片在线播放 | 手机看片1024久久 | 超碰97人人射妻 | 国产偷v| 国产a网站 | 久久久网站 | 美女性生活视频 | av一二三| 欧美黄色大全 | 天堂资源在线 | 国产精品成av人在线视午夜片 | 亚洲 美腿 欧美 偷拍 | 麻豆精品在线 |