目录

Android-源码下载以及编译指南

Android 源码下载以及编译指南

https://i-blog.csdnimg.cn/img_convert/fbb7ea86e217c687751db05d989c92ae.gif

和你一起终身学

习,这里是程序员Android

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

一、下载AOSP前的准备

二、国内网络下 clone 清华大学开源软件镜像

三、编写Python脚本,开始下载android 源码

四、源码下载工具包

五、编译

一、下载AOSP前的准备

想在国内网络下载AOSP源码,需要电脑配置如下环境

  • 1.安装Git
  • 2.安装 Python
  • 3.配置python脚本,硬盘大于100G

1. 安装 Git Bash

Git官网下载地址:https://git-scm.com/download/win

2.安装Python

Python 官网下载地址:https://www.python.org/downloads/

二、国内网络下 clone 清华大学开源软件镜像

1. clone 命令

// 没有翻墙网络 只能clone 清华镜像
git clone https://aosp.tuna.tsinghua.edu.cn/platform/manifest.git

2.操作截图

https://i-blog.csdnimg.cn/img_convert/44b15a509b45df6c154a2fb5cf45ae72.jpeg

使用命令如下 clone 清华镜像操作步骤如上

3.操作结果

https://i-blog.csdnimg.cn/img_convert/484a0a871dc7e4bc07bd891996867a70.jpeg

Clone 结束如上

4. 切换要下载的Android源码分支

比如我想下载到 android-10.0.0_r40 的源码,可以使用如下命令:

git switch -c android-10.0.0_r40

操作结果如下

https://i-blog.csdnimg.cn/img_convert/0412e7d37f40deb5a76ca1177cf6c05b.jpeg

切换要选择下载的Android版本分支

三、编写Python脚本,开始下载android-10.0.0_r40 源码

1. 自动化下载Android 10 脚本参考如下

import xml.dom.minidom
import os
from subprocess import call

## 注意地址中使用的是 "/" 而不是"\", unbantu 跟Windows 是有区别的

#代码保存位置,硬盘建议大于100G
rootdir ="E:/AOSP/android_10_0_0_r40"

#git 安装路径,可以使用 where git 命令查看 
git ="E:/software/git/path/mingw64/bin/git.exe"

# 刚刚切换 android-10.0.0_r40 目录下的defaul.xml 文件
dom = xml.dom.minidom.parse("E:/AOSP/clone_tsinghua/manifest/default.xml")
root = dom.documentElement

# clone 清华大学镜像库地址 
prefix= git +" clone https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/"
suffix=".git"

if not os.path.exists(rootdir):
    os.mkdir(rootdir)

for node in root.getElementsByTagName("project"):
    os.chdir(rootdir)
    d = node.getAttribute("path")
    last= d.rfind("/")
    iflast!=-1:
        d = rootdir +"/"+ d[:last]
        if not os.path.exists(d):
            os.makedirs(d)
        os.chdir(d)
    cmd =prefix+ node.getAttribute("name")+suffix
    call(cmd)

2. 执行下载Android 10 的脚本

双击 downloadAOSP.py 或者执行 python downloadAOSP.py 既可以开始下载Android 10 源码,经过一段时间漫长等待,就可以查看Android Q的源码了。

3. 开始成功下载源码截图

https://i-blog.csdnimg.cn/img_convert/e133ee7a38eafadc093a61971e7c3367.jpeg

双击downloadAOSP.py 即可开始Android 10的源码下载

四、源码下载工具包

1.源码下载工具包地址

百度网盘下载地址:https://pan.baidu.com/s/1GkGiKROmcfPD7oSL8EYhOw: 提取码: uiv4

链接: https://pan.baidu.com/s/1GkGiKROmcfPD7oSL8EYhOw 
提取码: uiv4

2.源码下载工具包内容

https://i-blog.csdnimg.cn/img_convert/23394dce005f7d48fea46aea5e13e31b.jpeg

源码下载工具包

五 、编译指南

1. 查看项目所在分支

git branch -a

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

Test@Test:/Test/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

编译方法

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

google 官方编译命令如下

1.source ./build/envsetup.sh

2.lunch 项目

3.make -j64

单编 模块

我们常用 mmm 以及 mm 来及对单模块进行编译。

mmmmm 主要区别在于你当前所在的目录位置。

如果当前正在所要编译模块的地方 (需要有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/
RestrictionCheckernot 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
RestrictionCheckernot 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$

3.frameworks/av/camera/目录:

make cameraserver -j32

cameraserver目录下:编译module是 —> make cameraserver -j32

ndk目录下:编译module是 —> make libcamera2ndk -j32

4.frameworks/av/services/camera/目录:

make libcameraservice -j32

libcameraservice目录下:编译module是 —> make libcameraservice -j32

编译生成的文件是:out/target/product/平台/system/lib/libcameraservice.so

5.vendorimage.img 镜像编译

make vendorimage

6.bootimage.img镜像编译

make bootimage

push 模块 验证修改是否生效

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

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>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>

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

https://i-blog.csdnimg.cn/img_convert/4bbc5f9b29545a0af343f6d077c7e3ba.jpeg

点个在看,为大佬点赞!