编译android源码环境-注1:Android7简介

最近工作中需要定制Android系统,突然意识到Android系统对于嵌入式开发的重要性。 大多数芯片厂商提供的BSP主要集中在构建Android平台,而Linux平台则稍显贬值。 这样,开发者首先应该了解芯片厂商提供的Android BSP,验证Android平台下的硬件功能,然后在此基础上移植建立Linux平台,这样在遇到问题时可以快速判断是否是是软件还是硬件。 问题。

在网上搜索了一下,发现好的Android书籍还是比较少。 《深入理解Android内核设计思想(第2版)》好像评价不错,也去看看。 因为我看书有写笔记的习惯,所以随时在陌陌上分享。 希望它能起到督促我多读书的作用,也希望能与更多的人分享我的观点和知识。 套用其他人的话说,一个岛屿没有意义,除非另一个岛可以到达它。 除非可以将其他信息链接到信息,否则信息毫无意义。 文章中的内容并不难,只是记录了一些实际的东西,并且采用理论与实践相结合的方法,结合具体的开发板进行分析。

参考:

《深入理解Android内核设计思想(第2版)》

《Android系统源码情况分析》

前言 Android之所以诞生于硅谷,是因为这里有很多来自哈佛大学的人才; 交通环境便利,海、陆、空均可与外界良好联系; 鼓励创新,有健全的专利保护机制; 成熟、成熟的风险投资体系能够容忍较高的失败率; 版本 2 和版本 1 有什么区别? 基于AnroidN版本(即nougat,意思是牛轧糖),也就是Android7.x版本。 市面上基于2.x或4.x的Android书籍太多了,我不太喜欢旧版本。 部分章节与第一版保持一致,只能等待作者下次重印尝试更新到Android最新版本; 第一章 Android系统简介 Android系统有哪些特点? 开放可扩展、高度自由、可随意定制; 分层结构,整个软件栈组织良好,分工明确。 是一个值得所有程序员常年学习的优秀开源项目,无论是C/C++/JAVA程序员。 简单易用且功能强大的SDK; 不断改进交互界面,追求用户体验; 逐渐建立起来的生态系统,似乎Android平台上的软件盈利能力远远不及IOS平台。 Android的免费开源增加了手机开发者的进入门槛,导致Android手机开发者良莠不齐。 运行速度比IOS慢,谷歌正在不断提高运行速度。 兼容性问题一直是让Android APP开发者头疼的问题。 安卓手机型号太多,屏幕规格、码率五花八门。 开发者无法适应。 目前谷歌还没有好的解决方案。 Android系统5层框架

从下到上它们是:

内核层(Linux+特定驱动):在Linux内核的基础上,增加了Google编译的Binder和共享内存驱动。

硬件表示层(简称HAL):硬件厂商不愿意把自己的硬件驱动放在Linux中,因此Android创建了HAL层,允许硬件厂商将硬件的核心控制逻辑存储在HAL中并允许其封闭源码(即只提供.so库文件,不提供.c文件)。 Linux内核驱动中只提供了最小的操作函数,比如读写寄存器。 正是这些令人恼火的玩边缘的行为,保护了硬件厂商的利益,让他们愿意为Android系统构建硬件驱动。

系统运行库层(AndroidRuntime、ART):大部分都是用C/C++实现的,简称为“C库层”,其中包括很多成熟的开源项目:webkit、opengl、sqlite等,我们只需了解一下即可Android来学习Android如何使用这个C库,以及这个C库是如何实现的,与我们关系不大。

应用框架层:更好理解为“Java库层”。 它为底层应用程序提供API套接字,还包括许多系统级服务进程的实现。

应用层:各种系统原生应用和第三方应用。 我个人怀疑CPU厂商和手机厂商主要定制这一层。

第二章 Android源码下载与编译

参考:

如何管理庞大的Android源码?

Android源代码由许多开源项目组成。 对于Google来说,需要常年关注Android的所有相关开源项目。 用git管理这么多开源项目太费力了,所以Google用Python编译了一个脚本工具repo。 ,对git多加了一层封装,这个repo工具可以达到正常管理Android中子项目总数的目的。 repo本质上调用了git命令,所以repo的操作和git非常相似。 如果你对git不熟悉,我建议你看一下《progit》这本书。 有英文版本,但是上面的内容非常简单实用。 有了 git 的基础,使用 repo 会容易很多。 让我们简单了解一下如何使用该存储库。

上面的命令基本上就够了。 即使只是个人学习,也可以将Android源码初始化为单独的git项目,使用repo只是同步获取最新的Android源码。

嵌入式物联网需要学习的东西很多,所以不要学错路线和内容,这样会导致你丢薪水!

免费分享给大家一个数据包,150G左右。 以上学习内容、面经、项目都比较新、完整! 网上买一条鱼,恐怕至少要几十块钱。

点击这里找0元分发小助手:添加Momo分发信息

如何下载Android源代码 如何下载原始Android源代码

在国外从谷歌官网下载Android源代码一直很困难,复旦大学制作了Android源代码的镜像。 参考:

首先获取仓库:

$ 卷曲-orepo

$chmod+xrepo

$mvrepo/usr/bin/

下载Android源码包最快的方式是使用初始化包进行初始化,并自动下载初始化包:

30G左右编译android源码环境,下载后校准MD5:

$md5sum-caosp-latest.tar.md5

aosp-latest.tar:好的

由于所有代码都是从隐藏的 .repo 目录中检出的,因此仅保留 .repo 目录。 下载后,再次解压并重新同步即可得到完整目录。 参考如下命令:

如何确定您当前使用的 Android 版本

$cat.repo/manifest.xml|greprevision

在manifest中跟踪的是android-7.0.0_r1,同步的就是android-7.0.0_r1,也可以通过查看源码来确定:

$catbuild/core/version_defaults.mk|grep "PLATFORM_SDK_VERSION:="

平台_SDK_版本:=24

参考:

24号是安卓7.0。

如何退出特定版本的 Android

如何基于真实开发板下载Android源码

如果你不想使用原生Android源码来模拟运行Android,但又想在开发板上体验Android系统,可以参考这篇文章:

文中介绍的开发板为NanoPCT4(基于RK3399芯片),对应的Android7源码存放在gitlab上。 Android7没有使用repo,而是初始化为git项目,放在gitlab上,以提高下载速度。 顺便说一句,相应的编译步骤在WiKi中也有。 如果您是开发板爱好者,可以关注WiKi网站中的开发板。 种类很多,性价比和文档都还不错。

如何编译Android构建环境

仅考虑在64bitUbuntu14.04LTS以上版本编译Android7。 Android其他版本的编译条件相同。

硬盘上安装了64BitUbuntu14.04LTS或以上版本。 PC硬件性能越高越好。 建议使用8G显存+256GSSD以上配置。 Android源代码非常庞大,所以不要使用虚拟机来编译Android系统。

$ sudoapt-getinstallbisong++-multilibgitgperflibxml2-utilsmakepython-networkxzip

$ sudoapt-getinstallflexcurllibncurses5-devlibssl-devzlib1g-devgawkminicom

$sudoapt-getinstallopenjdk-8-jdk

$sudoapt-getinstallexfat-fuseexfat-utilsdevice-tree-compilerliblz4-tool

不同版本的Android需要不同版本的JDK。 Android7需要open-JDK-8.0。 选择JDK版本:

$update-alternatives--configjava

$update-alternatives--configjavac

如何编译原生Android7

$cdaosp

$source./build/envsetup.sh#导入环境变量

$lunch#查看可选择的编译目标

$lunchaosp_arm64-eng#选择编译目标、arm64架构、eng工程师版本

$make-j4#开始编译,先去吃饭吧,大多数机器要等几个小时才能编译Android。

编译错误:

Android 7.0 上默认使用 JACK 编译器。 在显存较小的机器上编译时可能会出现上述问题。 解决办法是:

$exportJACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8-XX:+TieredCompilation-Xmx4g"

$./prebuilts/sdk/tools/jack-adminkill-server

$./prebuilts/sdk/tools/jack-adminstart-server

然后重新执行source/lunch/make命令,编译完成时的提示信息如下:

####makecompletedsuccessful(03:54(mm:ss))####

如果不再source/lunch,而是直接make,就不会出现makecompletedsuccessively的提示编译android源码环境,但终究会编译成功。

如何模拟运行原生Android7

使用Android模拟器Emulator来模拟运行。 模拟器是Google基于开源项目qemu开发的。 它使用的核心技术是虚拟化。 对于我们来说,可以简单理解为通过虚拟化技术在基于X86的PC上虚拟出基于ARM的手机。 我们根本不需要分析Emulator的源码,只要用它来启动Android系统就可以了。 编译系统后,执行以下命令启动Android:

治疗效果如下:

使用的核心文件包括:

这5个文件就可以构成一个完整的Android系统。

第二章内容尚未完,待续……

文章链接:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 源码编译 编译android源码环境-注1:Android7简介 https://www.wkzy.net/game/184531.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务