2024年Android最全Android系统编译指南(2),面试高频算法题

结语

  • 现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。
  • 音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。
  • 要学习好NDK,其中的关于C/C++,jni,Linux基础都是需要学习的,除此之外,音视频的编解码技术,流媒体协议,ffmpeg这些都是音视频开发必备技能,而且
  • OpenCV/OpenGl/这些又是图像处理必备知识,下面这些我都是当年自己搜集的资料和做的一些图,因为当年我就感觉视频这块会是一个大的趋势。所以提前做了一些准备。现在拿出来分享给大家。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • linux_android_development

    master

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$ 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`项目,其实我们可以执行最简单的方法,直接`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

userdebug

最后笔者收集整理了一份Flutter高级入门进阶资料PDF

以下是资料目录和内容部分截图



里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

8269948)]

[外链图片转存中…(img-jrY5s9W1-1715618269948)]
里面包括详细的知识点讲解分析,带你一个星期入门Flutter。还有130个进阶学习项目实战视频教程,让你秒变大前端。

[外链图片转存中…(img-GCAeQbus-1715618269948)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 18
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值