和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、查看项目所在分支
二、切换到目标分支
三、查看当前所在分支
四、编译Android源码
五、source Android 编译环境
六、lunch 所需的编译项目
七、单编 模块
八、push 模块 验证修改是否生效

一、查看项目所在分支

git branch -a
表示:查看并列出当前项目所有分支

高通项目举例如下:

Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ git branch -a
* linux_android_developmentmasterremotes/origin/A/B_update_linux_android_developmentremotes/origin/HEAD -> origin/master... ...remotes/origin/secure_linux_android_developmentremotes/origin/streamlined_code_engineering
Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$

二、切换到目标分支

git checkout 分支名
表示:切换到某个分支。

高通项目举例如下:
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_developmentmasterremotes/origin/A/B_update_linux_android_developmentremotes/origin/HEAD -> origin/masterremotes/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

三、查看当前所在分支

git branch
表示:查看当前所在分支

高通项目举例如下:

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

四、编译Android源码

Android 源码编译,每个项目由于脚本各不相同,编译的命令 有时候也会有说差异。

google 官方编译命令如下

1.source ./build/envsetup.sh
2.lunch 项目
3.make -j8

高通项目编译命令 如下:

./buildall_userdebug.sh E5527M all

五、source Android 编译环境

首先进入Android 源码根目录,执行source ./build/envsetup.sh,
如不source,后续则无法单编模块。

高通项目举例如下:

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 所需的编译项目

执行 lunch 命令,查看所有 编译项目列表,然后选择 编译项目。
高通项目 举例如下:

1. lunch ,然后选择所需编译分支
Test@Test:/Test/Qualcomm_p/E5527M_MSM8917_QM215_r26/LA.UM.7.6.2/LINUX/android$ lunchYou're building on LinuxLunch menu... pick a combo:1. aosp_arm-eng2. aosp_arm64-eng3. aosp_mips-eng... ...40. msm8937_64-userdebug41. msm8937_64-user... ...65. taimenb2-userdebug
// 选择要编译的分支名
Which would you like? [aosp_arm-eng] msm8937_64-userdebugdevice/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项目,其实我们可以执行最简单的方法,直接lunch这个项目所排列的位置,比如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 来及对单模块进行编译。
mmm 与mm 主要区别在于你当前所在的目录位置。
如果当前正在所要编译模块的地方(需要有android.mk文件,才可以进行),请使用 mm,否则使用mmm

高通项目举例如下:

1. mmm使用举例(此时不在FM 目录)

比如单编FM,不在FM目录下,需要执行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目录下,需要执行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 模块 验证修改是否生效

1. 使用debug版本,挂载手机

adb shell getprop ro.build.type 主要用来查看当前使用的版本,调试只能使用debug 版本,user版本无法调试。

高通项目举例如下:

C:\Users\Administrator>adb shell getprop ro.build.type
userdebugC:\Users\Administrator>adb rootC:\Users\Administrator>adb remount
remount succeededC:\Users\Administrator>
2.将生成的单模块编译的apk 拷贝到桌面并push到手机中

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. 清除 push apk 的存储数据

adb shell pm clear 包名
用来清除当前包名的数据。
比如:adb shell pm clear com.caf.fmradio

高通 FM apk举例如下:

C:\Users\Administrator>adb shell dumpsys activity | findstr RunRunning 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
SuccessC:\Users\Administrator>

至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除。同时感谢您的阅读,期待您的关注。

点个在看,方便您使用时快速查找!

Android系统编译指南相关推荐

  1. Android系统编译时集成三方APK

    1. 前言 最近在学习Android系统开发,在开发过程中可能要到将三方apk集成到系统中的需求.目前我了解的方法有两种. 一种是在系统编译完毕之后,再将三方apk文件放置到系统目录之下.参考如何将a ...

  2. Android系统编译aosp

    Android系统编译 公号文字版本:https://mp.weixin.qq.com/s/y6ReUNd3EDUctNVO_x3ZwQ 博客文字版本:http://liuwangshu.cn/bat ...

  3. Android系统编译小总结

    Android系统编译 简介 搭建编译环境 系统编译命令 常见小知识点 Android编译版本 Android.mk文件 编译系统中的变量和宏 native layer 编译碰到的问题 安装lib32 ...

  4. Android系统编译优化:使用Ninja加快编译

    背景 环境 关键编译阶段和耗时分析 阶段一:Soong bootstrap 阶段二:Kati遍历.mk搜集与ninja生成 阶段三:Ninja编译 编译优化 对比汇总 背景 Android系统模块代码 ...

  5. Android系统编译

    Android系统编译 先执行环境初始化: source build/envsetup.sh && lunch aosp-eng 再执行make 模块名,模块根据需求自选,例如: ma ...

  6. 全志A40i开发板Android系统编译

    Android系统编译 A40i &T3 板卡用户可以通过飞凌嵌入式提供的网盘链接获取OKA40i-C开发板软件和硬件的文档及源码.软件和硬件的文档及源码下载方法不清楚的可联系飞凌嵌入式客服索 ...

  7. Android 系统编译环境设置及源代码编译

    一. 摘要    虽然已经在Android系统工作了一段时间, 但是每次需要重新setup环境的时候,都需要花一点时间, 所以就想借着这次在ubuntu 12.04 64bits系统上重新安装的机会, ...

  8. 有用的博客整理(Android系统编译相关)

    //在Ubuntu18.04中Android Studio开发环境搭建 http://baijiahao.baidu.com/s?id=1604117887374452787&wfr=spid ...

  9. Android反编译指南

    反编译 我们都知道,Android程序打完包之后得到的是一个APK文件,这个文件是可以直接安装到任何Android手机上的,我们反编译其实也就是对这个APK文件进行反编译.Android的反编译主要又 ...

最新文章

  1. 解决AS gradle下载同步卡慢的问题
  2. 强行终止python_中国的真实离婚率:一点也不高,反而低的惊人 | 用python计算离婚率...
  3. python初学小游戏_python学习(小游戏)
  4. SpringBoot2.0之四 简单整合MyBatis
  5. OpenShift 4 - 用容器提升MySQL的可用性
  6. [转载] 面试常见问题总结
  7. 分布式与集群的联系与区别
  8. 基于STM32构建EtherCAT主站(SOEM方案)2
  9. Google发布Chrome Web Store应用商店
  10. 2022年烟花爆竹经营单位安全管理人员培训试题及模拟考试
  11. c语言编译器tc2.0,深入认识 Turbo C 编译器 C语言 TC2.0.doc
  12. 第二篇 自制系统内核
  13. 小米 2021 秋招面试总结
  14. Java基础语法,函数的定义与调用(比较两个数的大小)
  15. Linux系统的基本介绍
  16. 深圳租房数据可视化分析【Plotly库绘图】
  17. Ubuntu 20.04系统中Sage(sagemath)安装及使用详细过程
  18. BSV上的高效 zk-SNARK:技术解释
  19. 47.continue终止本次循环进入下一次循环
  20. python vlookup_多条件python中的Vlookup

热门文章

  1. 今年全网活跃得高危漏洞跟踪记录表
  2. 用计算机能开通余利宝吗,余利宝怎么开通 余利宝开通流程和方法介绍
  3. 从lT视角深度解析PMP证书含金量
  4. 学计算机的电脑用i5还是i7好,家用电脑,选酷睿i7还是选i5,这些常识让你不纠结...
  5. Android使用BACnet协议进行数据读写测试
  6. ENCODE30篇论文全摘要 聚焦人基因组功能研究
  7. 学习前端 css day3.md
  8. android自定义彩虹,在Android中绘制彩虹色环
  9. 基于 Wi-Fi 的室内定位系统
  10. Android中顶部Tab带滑动选项卡之二选一,仿淘宝宝贝收藏和店铺收藏