和你一起终身学习,这里是程序员Android
本文主要包含以下内容
gitbranch-a
表示:查看并列出当前项目所有分支
高通项目举例如下:
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$gitbranch-a*linux_android_developmentmasterremotes/origin/A/B_update_linux_android_developmentremotes/origin/HEAD-origin/masterremotes/origin/secure_linux_android_developmentremotes/origin/streamlined_code_engineeringwangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$二、切换到目标分支
gitcheckout分支名
表示:切换到某个分支。
高通项目举例如下:
gitcheckoutlinux_android_development
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$gitbranch-a*linux_android_developmentmasterremotes/origin/A/B_update_linux_android_developmentremotes/origin/HEAD-origin/masterremotes/origin/cts_development_branchwangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$gitcheckoutlinux_android_development三、查看当前所在分支
gitbranch
表示:查看当前所在分支
高通项目举例如下:
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$gitbranch*linux_android_developmentmasterwangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$四、编译Android源码
Android源码编译,每个项目由于脚本各不相同,编译的命令有时候也会有说差异。
google官方编译命令如下
1.source./build/
2.lunch项目
3.make-j8
高通项目编译命令如下:
./buildall_
首先进入Android源码根目录,执行source./build/,
如不source,后续则无法单编模块。
高通项目举例如下:
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$source./build//generic/car//generic/mini-emulator-arm64//generic/mini-emulator-armv7-a-neon//generic/mini-emulator-x86_64//generic/mini-emulator-x86//generic/uml//google/muskie//google/taimen//qcom/common//qcom/qssi//partner_gms/products//qcom/opensource/core-utils//qcom/proprietary/common//qcom/proprietary/prebuilt_HY11/.includingsdk/bash_completion/@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$六、lunch所需的编译项目
执行lunch命令,查看所有编译项目列表,然后选择编译项目。
高通项目举例如下:
1.lunch,然后选择所需编译分支
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$lunch
You'rebuildingonLinux
Lunchmenupickacombo:
1.aosp_arm-eng
2.aosp_arm64-eng
3.aosp_mips-eng
40.msm8937_64-userdebug
41.msm8937_64-user
65.taimenb2-userdebug
//选择要编译的分支名
Whichwouldyoulike?[aosp_arm-eng]msm8937_64-userdebug
device/qcom/msm8937_64/msm8937_64.mk:42:warning:""
OUT_DIR=out
============================================
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$
2.直接lunch分支
比如我们需要编译msm8937_64-userdebug项目,其实我们可以执行最简单的方法,直接lunch这个项目所排列的位置,比如lunch40
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$lunch40device/qcom/msm8937_64/msm8937_64.mk:42:warning:""============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=9TARGET_PRODUCT=msm8937_64HOST_CROSS_2ND_ARCH=x86_64HOST_BUILD_TYPE=releaseBUILD_ID=_DIR=out============================================wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$七、单编模块
我们常用mmm以及mm来及对单模块进行编译。
mmm与mm主要区别在于你当前所在的目录位置。
如果当前正在所要编译模块的地方(需要有文件,才可以进行),请使用mm,否则使用mmm。
高通项目举例如下:
1.mmm使用举例(此时不在FM目录)
比如单编FM,不在FM目录下,需要执行mmmvor/qcom/opensource/commonsys/fm/fmapp2/
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$mmmvor/qcom/opensource/commonsys/fm/fmapp2//wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android/vor/qcom/opensource/commonsys/fm/fmapp2/RestrictionCheckernotpresent,skipping..device/qcom/msm8937_64/msm8937_64.mk:42:warning:""============================================OUT_DIR=out============================================QSSI:notenabledformsm8937_64targetasvor/qcom/proprietary/release/QSSI/QSSI_enforced_targets_(7seconds)wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$
2.mm使用举例(在FM目录下)
比如单编FM,在FM目录下,需要执行mm
wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android$cdvor/qcom/opensource/commonsys/fm/fmapp2/wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android/vor/qcom/opensource/commonsys/fm/fmapp2$mmRestrictionCheckernotpresent,skipping..device/qcom/msm8937_64/msm8937_64.mk:42:warning:""============================================PLATFORM_VERSION_CODENAME=RELPLATFORM_VERSION=9OUT_DIR=out============================================QSSI:notenabledformsm8937_64targetasvor/qcom/proprietary/release/QSSI/QSSI_enforced_targets_:/make/core/base_:412:warning:ignoringoldcommandsfortarget`out/target/product/msm8937_64/vor/lib64/hw/'ninja:(41seconds)wangjie@wangjie:/wangjie/Qualcomm_p/E5527M_MSM8917_QM215_r26//LINUX/android/vor/qcom/opensource/commonsys/fm/fmapp2$八、push模块验证修改是否生效
1.使用debug版本,挂载手机
主要用来查看当前使用的版本,调试只能使用debug版本,user版本无法调试。
高通项目举例如下:
C:\Users\:\Users\AdministratoradbrootC:\Users\AdministratoradbremountremountsucceededC:\Users\Administrator
2.将生成的单模块编译的apk拷贝到桌面并push到手机中
adbpush本地文件手机目录
adbpush主要用来替换手机中的apk,调试验证单编是否生效。
高通FM举例如下:
C:\Users\AdministratoradbpushC:\Users\Administrator\Desktop\/system/app/FM2C:\Users\Administrator\Desktop\:1/s(861880)C:\Users\Administrator
3.清除pushapk的存储数据
adbshellpmclear包名
用来清除当前包名的数据。
比如:
高通FMapk举例如下:
C:\Users\Administratoradbshelldumpsysactivity|findstrRunRunningactivities(mostrecentfirst):Run0:ActivityRecord{89/}C:\Users\:\Users\Administrator
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。