一生あなたと一緒に学びましょうXi、こちらはプログラマー Android です
おすすめの定番記事. この記事を読むことで以下の知識が得られます。
1. プロジェクトが存在するブランチを表示します
2. ターゲット ブランチに切り替えます
3. 現在のブランチを表示します
4. Android ソース コードをコンパイル
します 5. ソース Android コンパイル環境
6. 必要なコンパイル プロジェクトをランチします
7. 単一のコンパイル モジュール
8. モジュールをプッシュします変更が有効になっているかどうかを確認します
。 9.
1. プロジェクトが存在するブランチを確認します。
git branch -a
表現: 現在のプロジェクトのすべてのブランチを表示およびリストします。
クアルコムのプロジェクトの例は次のとおりです。
Test@Test:/Test/Qualcomm_p/E27M_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/E7M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
2. ターゲットブランチに切り替えます
git checkout 分支名
意味: ブランチに切り替えます。
クアルコムのプロジェクトの例は次のとおりです。git checkout linux_android_development
Test@Test:/Test/Qualcomm_p/E27M_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/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git checkout linux_android_development
3. 現在のブランチを表示する
git branch
示す: 現在のブランチを表示する
クアルコムのプロジェクトの例は次のとおりです。
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch
* linux_android_development
master
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
4. Android ソースコードをコンパイルする
Android
ソースコードのコンパイルでは、各プロジェクトに異なるスクリプトがあるため、コンパイルコマンドが異なる場合があります。
Google公式のコンパイルコマンドは以下の通り
1.source ./build/envsetup.sh
2.ランチプロジェクト
3.make -j8
Qualcomm プロジェクトのコンパイル コマンドは次のとおりです。
./buildall_userdebug.sh E5527M all
5. ソース Android コンパイル環境
まずAndroid
ソースコードのルートディレクトリに移動して実行してくださいsource ./build/envsetup.sh
。
そうしないとsource
、後からモジュールを個別にコンパイルすることができなくなります。
クアルコムのプロジェクトの例は次のとおりです。
Test@Test:/Test/Qualcomm_p/E27M_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/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
6. 昼食に必要な編集プロジェクト
コマンドを実行して、 lunch
コンパイルされたすべてのプロジェクトのリストを表示し、コンパイルされたプロジェクトを選択します。
クアルコムのプロジェクトの例は次のとおりです。
1. 昼食をとり、必要なコンパイル ブランチを選択します
Test@Test:/Test/Qualcomm_p/E7M_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/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
2. 直ランチ支店
たとえば、msm8937_64-userdebug
プロジェクトをコンパイルする必要がある場合、実際には最も単純な方法を実行して、lunch
プロジェクトの位置を直接配置できます。lunch 40
Test@Test:/Test/Qualcomm_p/E7M_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/27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
7. 単一モジュール
私たちは 単一のモジュールを使用しmmm
てmm
コンパイルすることがよくあります。mmm
主mm
な違いは、現在いるディレクトリの場所です。
現在モジュールをコンパイルしたい場所にいる場合は(需要有android.mk文件,才可以进行)
を使用し mm
、それ以外の場合は を使用しますmmm
。
クアルコムのプロジェクトの例は次のとおりです。
1. mmm の使用例 (現時点では FM ディレクトリにありません)
たとえば、単一の編集はディレクトリにFM
ないため、実行する必要があります。FM
mmm vendor/qcom/opensource/commonsys/fm/fmapp2/
Test@Test:/Test/Qualcomm_p/E27M_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/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$
2. mm の使用例 (FM ディレクトリ内)
たとえば、ディレクトリFM
内の単一のファイルを編集する場合は、次のコマンドを実行する必要があります。FM
mm
Test@Test:/Test/Qualcomm_p/E27M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ cd vendor/qcom/opensource/commonsys/fm/fmapp2/
Test@Test:/Test/Qualcomm_p/E27M_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/E7M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android/vendor/qcom/opensource/commonsys/fm/fmapp2$
8. プッシュモジュールは変更が有効かどうかを検証します
1. デバッグバージョンを使用して携帯電話をマウントします
adb shell getprop ro.build.type
主に現在使用しているバージョンを確認するために使用され、debug
デバッグに使用できるのはバージョンのみであり、user
デバッグはできません。
クアルコムのプロジェクトの例は次のとおりです。
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 をデスクトップにコピーし、携帯電話にプッシュします
adb push 本地文件 手机目录
adb push
主に携帯電話に搭載されているエディタの置き換えapk
や、単体のエディタが有効かどうかを確認するためのデバッグに使用されます。
クアルコムの 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.プッシュAPKのストレージデータをクリアする
adb shell pm clear 包名
現在のパッケージ名のデータをクリアするために使用されます。
例えば: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>
参考文献:
[Tencent ドキュメント] Android フレームワーク ナレッジベース
https://docs.qq.com/doc/DSXBmSG9VbEROUXF5
フレンドリーなおすすめ:
この時点で、この記事は終了です。編集者は、インターネットから転載された記事が優れていると考えています。クリックして元の記事を読み、元の著者をサポートしてください。権利侵害がある場合は、編集者に連絡して削除してください。ご提案や修正を歓迎します。ご注目をお待ちしております。読んでいただきありがとうございます。ありがとうございます!
クリックして元記事を読んで、ボスにいいね!