首页 » 网站建设 » php中nan技巧_u003c深入理解Android内核设计思惟u003e笔记1Android7简介

php中nan技巧_u003c深入理解Android内核设计思惟u003e笔记1Android7简介

访客 2024-11-23 0

扫一扫用手机浏览

文章目录 [+]

在网上搜索了一番,创造好的Android书本还是比较少,《深入理解Android内核设计思想(第2版)》 看上去评价还不错,打算阅读一下。
由于自己看书有写条记的习气,那么就随便分享到微信里吧,希望能起到一个督匆匆自己多读书的浸染,同时也希望能和更多人分享想法和知识。
套用别人的话,岛是没故意义的,除非别的岛可以到达它。
信息是没故意义的,除非别的信息可以链接。
文章里的内容并不博识,只是记录一些实用的东西,并且采取理论和实践相结合的方法,合营详细开拓板进行剖析,繁枝末节或者当前用不上的知识会被砍掉。

参考:

php中nan技巧_u003c深入理解Android内核设计思惟u003e笔记1Android7简介

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

php中nan技巧_u003c深入理解Android内核设计思惟u003e笔记1Android7简介
(图片来自网络侵删)

《Android系统源代码情景剖析》

序言Android出身于硅谷的缘故原由是什么斯坦福大学的人才辈出;便利的交通环境,海陆空都可以很好的和外界相连;鼓励创新,有完善的专利保护机制;完善而成熟的风投体系,能容忍高失落败率;第2版和第1版有什么差异基于Anroid N版本(即nougat,牛轧糖的意思),也便是 Android 7.x 版本。
市情上太多的Android书基于2.x或者4.x了,不太喜好旧版本。
部分章节保留和第1版一样,只能等作者下一次重版争取更新到Android最新版本;第一章Android系统简介Android系统有哪些特点开放和扩展性,高度自由,随便定制;合理的分层架构,全体软件栈条理清晰,分工明确,是一个值得所有程序员长期学习的精良开源项目,无论是C/C++/JAVA程序员。
易用强大的SDK;不断改进的交互界面,追求用户体验;逐步完善的生态系统,但是貌似Android平台的软件的盈利远远不如IOS平台。
Android的免费开源降落了手机开拓商的入门门槛,导致Android手机开拓商良莠不齐。
运行速率相对IOS偏慢,Google在不断提升运行速率中。
兼容性问题让Android APP开拓职员头疼,Android手机型号太多,屏幕尺寸分辨率五花八门,开拓职员难以适配,目前Google也没有好的办理办法。
Android系统的5层框架

从下往上依次为:

内核层(Linux+特定驱动):在Linux内核的根本上,添加了Google自己编写的Binder和shared memory驱动。

硬件抽象层(简称HAL):硬件厂商不愿意将自己的硬件驱动放在Linux里,那么Android就整出了一个HAL层,让硬件厂商将硬件的核心掌握逻辑保存在HAL里并且许可其闭源(即只供应.so库文件,不供应.c文件),在Linux内核驱动里只供应粒度最小的操作函数,如读写寄存器。
便是这种打擦边球的刺激行为保护了硬件厂商的利益,让各硬件厂商乐意为Android系统完善硬件驱动。

系统运行库层(Android Runtime,ART):多数是C/C++实现,大略地叫“C库层”都可以,包含了许多成熟的开源项目:webkit、opengl、sqlite等,我们学习Android该当只要理解Android是如何利用这些C库,而这些C库是如何实现的跟我们关系不大。

运用程序框架层:叫“Java库层”更好理解。
它为上层运用供应了API接口,同时也包括了不少系统级做事进程的实现。

运用程序层:各种系统原生运用和第三方运用,个人疑惑CPU厂商和手机厂商紧张是定制这一层。

第二章Android源码下载和编译

参考资料:

https://developer.android.com/guide/platform/?hl=zh-cn

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/zh

https://developer.android.com/studio/releases/platforms

如何管理Android源码弘大的源代码?

Android源码是由许多开源项目构成的,对付Google来说是要长期同时关注Android所有干系的开源项目的,这么多的开源项目用git来管理太吃力了,以是Google用Python编写了一个脚本工具repo,在git上多加了一层封装,用这个repo工具才能达到正常管理Android里的总多子项目的目的。
repo实质上还是调用git命令,以是repo在操作也挺类似git,如果你不熟习git,那么建议看看《pro git》这本书,有中文版,并且里面的内容挺大略实用的,有了git的根本再来实用repo会随意马虎很多,下面大略看看如何利用repo。

上述命令已经基本够用了,乃至如果只是用于个人学习,完备可以将Android源码初始化为一个单独的git项目,利用repo只是为了方便同步获取最新的Android源码。

嵌入式物联网须要学的东西真的非常多,千万不要学错了路线和内容,导致人为要不上去!

无偿分享大家一个资料包,差不多150多G。
里面学习内容、面经、项目都比较新也比较全!
某鱼上买估计至少要好几十。

点击这里找小助理0元领取:加微信领取资料

如何下载Android源码如何下载原汁原味的Android源码

在海内已经很难从Google的官网高下载到Android源码了,清华大学做了Android源码的镜像。
参考:

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

先获取repo:

$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

$ chmod +x repo

$ mv repo/usr/bin/

最快捷的下载Android源码包的办法是利用初始化包进行初始化,手动下载初始化包:

https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar

大约30G,下载完成后校验一下MD5:

https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar.md5

$ md5sum -c aosp-latest.tar.md5

aosp-latest.tar: OK

由于所有代码都是从隐蔽的.repo 目录中 checkout 出来的,只保留了.repo 目录,下载后解压再 repo sync 一遍即可得到完全的目录,参考下列命令:

如何确定当前是哪个版本的Android

$ cat.repo/manifest.xml | grep revision

<defaultrevision="refs/tags/android-7.0.0_r1"

manifests里跟踪的是android-7.0.0_r1,sync出来的便是android-7.0.0_r1,也可以通过查看源码来确定:

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

PLATFORM_SDK_VERSION:= 24

参考:

https://developer.android.com/studio/releases/platforms

24便是Android7.0。

如何切换出某个版本的Android

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

如果你不想用原生的Android源码来仿照运行Android,而是想在开拓板上体验Android系统,可以参考这篇文章:

http://wiki.friendlyarm.com/wiki/index.php/NanoPC-T4/zh

文章里描述的开拓板为NanoPC T4(基于RK3399芯片),对应的Android7源码是保存在gitlab上的,没有利用repo,而是将Android7初始化为了一个git项目,放在gitlab上是为了提高下载的速率。
对了,对应的编译步骤也在WiKi里,如果你是一个开拓板爱好者,可以关注一下该WiKi网站里的开拓板,品种浩瀚,性价比和文档资料都还不错。

如何编译Android搭建环境

只考虑在64bit Ubuntu14.04 LTS以上的版本里编译Android7,编译其他版本的Android须要准备的环境是雷同的。

硬盘安装的64BitUbuntu14.04 LTS或者以上版本。
PC机硬件性能越高越好,建议利用8G内存 + 256G SSD的以上配置,Android源码很弘大,不要用虚拟机编译Android系统。

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils makepython-networkx zip

$ sudo apt-get install flex curl libncurses5-dev libssl-dev zlib1g-devgawk minicom

$ sudo apt-get install openjdk-8-jdk

$ sudo apt-get install exfat-fuse exfat-utils device-tree-compilerliblz4-tool

不同版本的Android须要不同版本的JDK,Android7哀求open-JDK-8.0,选择JDK版本:

$ update-alternatives --config java

$ update-alternatives --config javac

如何编译原生Android7

$ cd aosp

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

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

$ lunch aosp_arm64-eng # 选择编译目标,arm64架构,eng工程师版本

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

编译出错:

Android7.0上默认利用JACK编译器,在内存较小的机器编译时可能会涌现上述问题,办理办法:

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

$ ./prebuilts/sdk/tools/jack-admin kill-server

$ ./prebuilts/sdk/tools/jack-admin start-server

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

#### make completedsuccessfully (03:54 (mm:ss)) ####

如果没有再次source/lunch,而是直接make,会没有make completed successfully的提示,但实在也是编译成功了。

如何仿照运行原生Android7

利用Android的仿照器Emulator来仿照运行。
Emulator是Google基于开源项目qemu定制开拓的,它用到核心技能是虚拟化,对付我们来说可以大略地理解为通过虚拟化技能在X86架构的PC机上虚拟了一台ARM架构的手机。
我们完备没必要去剖析Emulator的源码,只要会用它来启动Android系统就可以了。
在编译完系统后,实行下列命令启动Android:

效果如下:

用到的核心文件包括:

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

第二章的内容未完,待续...

文章链接:https://mp.weixin.qq.com/s/-4JJn_ibmXChgwJx0sRmTg

转载自:老吴嵌入式 ,作者可爱的东东

文章链接:<深入理解Android内核设计思想>条记1:Android7简介_下载_编译_运行

标签:

相关文章

今日头条算法如何打造个化推荐系统

信息爆炸的时代已经到来。人们每天都要面对海量的信息,如何在海量信息中找到自己感兴趣的内容,成为了许多人关注的焦点。今日头条作为一款...

网站建设 2025-01-31 阅读1 评论0