<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Android系統(tǒng)編譯指南

          共 7081字,需瀏覽 15分鐘

           ·

          2020-12-22 22:17

          和你一起終身學(xué)習(xí),這里是程序員Android

          經(jīng)典好文推薦,通過閱讀本文,您將收獲以下知識(shí)點(diǎn):

          一、查看項(xiàng)目所在分支
          二、切換到目標(biāo)分支
          三、查看當(dāng)前所在分支
          四、編譯Android源碼
          五、source Android 編譯環(huán)境
          六、lunch 所需的編譯項(xiàng)目
          七、單編 模塊
          八、push 模塊 驗(yàn)證修改是否生效

          一、查看項(xiàng)目所在分支

          git branch -a
          表示:查看并列出當(dāng)前項(xiàng)目所有分支

          高通項(xiàng)目舉例如下:

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch -a

          * linux_android_development
          master
          remotes/origin/A/B_update_linux_android_development
          remotes/origin/HEAD -> origin/master
          ... ...
          remotes/origin/secure_linux_android_development
          remotes/origin/streamlined_code_engineering
          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

          二、切換到目標(biāo)分支

          git checkout 分支名
          表示:切換到某個(gè)分支。

          高通項(xiàng)目舉例如下:
          git checkout linux_android_development

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch -a

          * linux_android_development
          master
          remotes/origin/A/B_update_linux_android_development
          remotes/origin/HEAD -> origin/master
          remotes/origin/cts_development_branch
          ... ...
          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git checkout linux_android_development

          三、查看當(dāng)前所在分支

          git branch
          表示:查看當(dāng)前所在分支

          高通項(xiàng)目舉例如下:

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch

          * linux_android_development
          master
          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

          四、編譯Android源碼

          Android?源碼編譯,每個(gè)項(xiàng)目由于腳本各不相同,編譯的命令 有時(shí)候也會(huì)有說差異。

          google 官方編譯命令如下

          1.source ./build/envsetup.sh
          2.lunch 項(xiàng)目
          3.make -j8

          高通項(xiàng)目編譯命令 如下:

          ./buildall_userdebug.sh E5527M all

          五、source Android 編譯環(huán)境

          首先進(jìn)入Android?源碼根目錄,執(zhí)行source ./build/envsetup.sh,
          如不source,后續(xù)則無法單編模塊。

          高通項(xiàng)目舉例如下:

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ source ./build/envsetup.sh

          including device/generic/car/vendorsetup.sh
          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/generic/uml/vendorsetup.sh
          including device/google/muskie/vendorsetup.sh
          including device/google/taimen/vendorsetup.sh
          including device/qcom/common/vendorsetup.sh
          including device/qcom/qssi/vendorsetup.sh
          including vendor/partner_gms/products/vendorsetup.sh
          including vendor/qcom/opensource/core-utils/vendorsetup.sh
          including vendor/qcom/proprietary/common/vendorsetup.sh
          including vendor/qcom/proprietary/prebuilt_HY11/vendorsetup.sh
          Created 9 symlinks out of 9 mapped links..
          including sdk/bash_completion/adb.bash
          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

          六、lunch 所需的編譯項(xiàng)目

          執(zhí)行?lunch?命令,查看所有 編譯項(xiàng)目列表,然后選擇 編譯項(xiàng)目。
          高通項(xiàng)目 舉例如下:

          1. lunch ,然后選擇所需編譯分支

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ lunch


          You're building on Linux

          Lunch menu... pick a combo:
          1. aosp_arm-eng
          2. aosp_arm64-eng
          3. aosp_mips-eng
          ... ...
          40. msm8937_64-userdebug
          41. msm8937_64-user
          ... ...
          65. taimenb2-userdebug
          // 選擇要編譯的分支名
          Which would you like? [aosp_arm-eng] msm8937_64-userdebug

          device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"

          ... ...
          OUT_DIR=out
          ============================================
          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

          2. 直接lunch 分支

          比如我們需要編譯msm8937_64-userdebug項(xiàng)目,其實(shí)我們可以執(zhí)行最簡單的方法,直接lunch這個(gè)項(xiàng)目所排列的位置,比如lunch 40

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ lunch 40

          device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"

          ============================================
          PLATFORM_VERSION_CODENAME=REL
          PLATFORM_VERSION=9
          TARGET_PRODUCT=msm8937_64
          ... ...

          HOST_CROSS_2ND_ARCH=x86_64
          HOST_BUILD_TYPE=release
          BUILD_ID=PKQ1.190601.001
          OUT_DIR=out
          ============================================
          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

          七、單編 模塊

          我們常用?mmm?以及mm?來及對(duì)單模塊進(jìn)行編譯。
          mmm?與mm?主要區(qū)別在于你當(dāng)前所在的目錄位置。
          如果當(dāng)前正在所要編譯模塊的地方(需要有android.mk文件,才可以進(jìn)行),請使用?mm,否則使用mmm

          高通項(xiàng)目舉例如下:

          1. mmm使用舉例(此時(shí)不在FM 目錄)

          比如單編FM,不在FM目錄下,需要執(zhí)行mmm vendor/qcom/opensource/commonsys/fm/fmapp2/

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ mmm vendor/qcom/opensource/commonsys/fm/fmapp2/


          /Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2/
          Restriction Checker not present, skipping..
          device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"
          ============================================
          ... ...
          OUT_DIR=out
          ============================================
          QSSI: not enabled for msm8937_64 target as vendor/qcom/proprietary/release/QSSI/QSSI_enforced_targets_list.txt was not found.

          ... ...
          #### build completed successfully (7 seconds) ####

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

          2. mm使用舉例(在FM 目錄下)

          比如單編FM,在FM目錄下,需要執(zhí)行mm

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ cd vendor/qcom/opensource/commonsys/fm/fmapp2/

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2$ mm
          Restriction Checker not present, skipping..
          device/qcom/msm8937_64/msm8937_64.mk:42: warning: "Build with 4.9 kernel"
          ============================================
          PLATFORM_VERSION_CODENAME=REL
          PLATFORM_VERSION=9
          ... ...
          OUT_DIR=out
          ============================================
          QSSI: not enabled for msm8937_64 target as vendor/qcom/proprietary/release/QSSI/QSSI_enforced_targets_list.txt was not found.
          ninja: no work to do.
          ... ...
          build/make/core/base_rules.mk:412: warning: ignoring old commands for target `out/target/product/msm8937_64/vendor/lib64/hw/fingerprint.default.so'
          ninja: no work to do.

          #### build completed successfully (41 seconds) ####

          Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2$

          八、 push 模塊 驗(yàn)證修改是否生效

          1. 使用debug版本,掛載手機(jī)

          adb shell getprop ro.build.type?主要用來查看當(dāng)前使用的版本,調(diào)試只能使用debug?版本,user版本無法調(diào)試。

          高通項(xiàng)目舉例如下:

          C:\Users\Administrator>adb shell getprop ro.build.type

          userdebug

          C:\Users\Administrator>adb root

          C:\Users\Administrator>adb remount
          remount succeeded

          C:\Users\Administrator>
          2.將生成的單模塊編譯的apk 拷貝到桌面并push到手機(jī)中

          adb push 本地文件 手機(jī)目錄
          adb push主要用來 替換手機(jī)中的apk,調(diào)試驗(yàn)證單編是否生效。

          高通?FM?舉例如下:

          C:\Users\Administrator>adb push C:\Users\Administrator\Desktop\FM2.apk /system/app/FM2

          C:\Users\Administrator\Desktop\FM2.apk: 1 file pushed. 9.7 MB/s (861880 bytes in 0.085s)

          C:\Users\Administrator>
          3. 清除 push apk 的存儲(chǔ)數(shù)據(jù)

          adb shell pm clear 包名
          用來清除當(dāng)前包名的數(shù)據(jù)。
          比如:adb shell pm clear com.caf.fmradio

          高通?FM apk舉例如下:

          C:\Users\Administrator>adb shell dumpsys activity | findstr Run
          Running activities (most recent first):
          Run #0: ActivityRecord{3bc8d7d u0 com.caf.fmradio/.FMRadio t52}
          Running activities (most recent first):
          Run #0: ActivityRecord{89df584 u0 com.android.launcher3/com.android.searchlauncher.SearchLauncher t51}
          C:\Users\Administrator>adb shell pm clear com.caf.fmradio
          Success

          C:\Users\Administrator>

          至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請聯(lián)系小編刪除。同時(shí)感謝您的閱讀,期待您的關(guān)注。

          點(diǎn)個(gè)在看,方便您使用時(shí)快速查找!

          瀏覽 113
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩一级爱爱 | 亚洲性爱一区二区 | 欧美日韩亚洲一区二区三区 | 又粗又大又黄又爽无遮挡 | 午夜性福利 |