android系统是开源去哪里下载源代码??

栏目:资讯发布:2023-10-04浏览:1收藏

android系统是开源去哪里下载源代码??,第1张

“开源”就是“开放源代码”,Android大部分源代码以 Apache Licence 20 许可发布,其中的Linux内核源码以GNU GPL 方式发布, 下载源代码到这里:

http://sourceandroidcom/

“外部接口对外公开”,其实是说系统编程接口(API)对外公开,这个特点可是绝大多数操作系统都具备的,不管开不开源!否则其他软件厂商怎么开发在那种系统上运行的程序呢?比如Windows,提供了整套Windows API,用它就能开发各种Windows程序,但Windows并不开放源码。

Android不仅提供系统编程接口,也开放源代码。

步骤一:

安装Ubuntu系统。我们既可以通过虚拟机的方式安装Ubuntu,也可以直接在电脑上安装,为了获得更好的Linux操作体验,我建议直接在电脑上面安装Ubuntu,我在自己电脑上安装了win10和Ubunut Server1404双系统,使用的时候可以根据自己的需要随时切换系统,非常方便。关于如何搭建双系统,网上有很多教程,我就不在此叙述了,但是我想说明的一点是在安装Ununtu的时候,分配给Ubuntu的磁盘空间一定要尽可能大一点,至少60G,我分配了105G,编译完成之后还剩下50多G,也就是说差不多用了近50G的空间,所以安装Ubuntu的时候一定得分配大一点的磁盘空间,不然编译会因为空间不足而中断。

步骤二:

搭建好Ubuntu系统之后,我们需要下载一份Android60的源码,网上很多文章都介绍了如何通过repo的方式来下载源码,但是通过这种方式下载速度可能并不是很理想,直接下载百度云的Android60源码,

因为Android60的源码所占空间非常大,所以上传者把Android源码分成了很多个文件,待全部下载完毕之后,我们可以通过命令把这些分开的文件合并为一个文件。

步骤三:

如果我们是在Windows上下载的源码,那么当我们打开Ubuntu之后,要做的第一件事请就是把Windows中的Android源码拷贝到Ubuntu系统下面,我直接利用复制粘贴的方式将源码拷贝到了Ubuntu的Home目录下面,拷贝之后的目录结构Home/android6_r1/各个分开的源码文件。

步骤四:

合并这些被分开的源码文件。我们按下键盘上的ctrl + alt + T打开控制台,通过cd命令进入到Home/android6_r1/目录下面,然后执行命令:cat Android6_r1_ > Mtgz,不用多久,在Home/android6_r1/目录下面就会生成一个新的文件——Mtgz,Mtgz就是合并之后的压缩文件。

步骤五:

解压步骤四生成的压缩文件。同样是在Home/android6_r1/目录下面,我们在控制台执行命令:tar zxvf Mtgz,开始解压。解压的过程大概需要20分钟左右的时间,请耐心等待。解压好了之后,在Home/android6_r1/会生成一个mydroid的文件夹,这个文件夹就是Android源码的根文件夹了,里面有abi、devices、hardware、packages、sdk、art等文件夹和文件。

步骤六:

安装编译源码所需要的软件。在控制台中我们通过cd命令退回到Unbuntu用户的根目录下,然后依次执行以下命令:

sudo apt-get update

sudo apt-get install openjdk-7-jdk

sudo update-alternatives --config java

sudo update-alternatives --config javac

以上命令每一条都必须分开单独执行,目的是为了获取17版本的jdk并设置环境变量。当我们安装完Ubuntu之后可能会自带一个jdk,但是如果用自带的jdk编译Android源码很可能会提示jdk版本不符合要求的错误,因此我们需要重新下载17版本的jdk,我用openjdk-7-jdk编译未出现任何问题。

接下来继续执行以下命令,同样每一行都是分开单独执行的:

sudo apt-get install git gnupg flex bison gperf build-essential

sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386

sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos

sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGLso1 /usr/lib/i386-linux-gnu/libGLso

以上命令主要是安装编译源码时需要用到的各种软件,如果没有安装这些软件,编译的过程中会提示缺少必要的软件而无法继续编译,因此,在正式编译源码之前,一定要先安装这些软件。

步骤七:

开始编译。在控制台中通过cd命令进入到Home/android6_r1/mydroid/目录下,然后执行命令:source build/envsetupsh,导入编译Android源码所需的环境变量和其它参数。

步骤八:

在控制台中执行命令:lunch,运行命令之后会提示我们选择编译目标。这里我选择的的默认目标,即aosp_arm_eng。

步骤九:

在控制台中执行命令:make -j8,开始编译。注意,make -j8命令中的数字8和我们电脑的CPU核心数以及线程数有关系,一般这个数字的数值最大不能超过CPU线程数的2倍,例如我电脑的处理器是i5 6200U,为双核四线程,因此编译Android源码的时候,我可以设置的最大工作线程数量为4 2 = 8。在执行make命令的时候我们应该根据自己的CPU参数设置合理的工作线程数值。

以上步骤执行完之后,就是一段非常漫长的等待了,我从中午十二点多开始编译,一直到晚上九点多编译完成,整个编译过程耗时九个多小时,幸好我的运气还不错,编译过程中没有出现任何错误,只是中途意外中断了一次,但是Android源码是可以接着上次中断的位置继续编译的,已经编译的部分不会重复编译,因此并未对我造成大的影响。同志们,我想说的是,编译的过程中一定要有耐心哟!

整个源码编译完成之后,如果提示如下信息,那么Congratulations, you are successful!!!

将apk文件拷贝至sdcard上。

命令顺序如下:

进入Android sdk文件夹/tools目录下

输入adb shell

输入su

输入cd data

输入cd app

这时就可以看到你安装的所有的apk文件。输入cp 空格 对应的apk 空格 /sdcard/

这样就将apk文件拷贝出来了。

将apk文件后缀直接变成rar格式,可以看到熟悉的目录结构了,

其中xml文件打开后都是二进制的,无法查看。

这时就用到了一个android4me的AXMLPrinter2工具。(请自行百度搜索)

输入以下命令,将xml文件解析出来

java -jar AXMLPrinter2jar showtimes_listxml

此命令是在命令行中查看此showtimes_listxml

将showtimes_listxml生成xml文件,则输入以下命令:

java -jar AXMLPrinter2jar showtimes_listxml > hxml

目前进行到这一步,只能看到xml文件的内容,其工程中的java源文件还是看不到,看目录结构下有一个classesdex文件,我们需要将dex文件变为jar文件。

这里用到了另一个工具dex2jar。(自行搜索下载)

在Windows下解压之后的目录如下图所示:

在命令行中,进入到此目录下:

在Windows下,输入以下命令:

dex2jarbat c:\classesdex

运行完之后,在C盘会多一个classesdexdex2jarjar文件,此文件就是我们需要的jar文件。

利用jd-gui,将jar文件反向工程为java代码。(请自行搜索下载)

它分为Windows、Linux、和max三个版本,这里我下载的是Windows版本的。

解压之后,双击运行exe文件,选择classesdexdex2jarjar文件,相应的jar文件中的Java文件就被反向工程显示出来了!

Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到781%。 [1]  2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。

Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l'Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。

Android的Logo是由Ascender公司设计的,诞生于2010年,其设计灵感源于男女厕所门上的图形符号, [1]  于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根天线,Android小机器人便诞生了。其中的文字使用了Ascender公司专门制作的称之为“Droid ” 的字体。Android是一个全身绿色的机器人,绿色也是Android的标志。颜色采用了PMS 376C和RGB中十六进制的#A4C639来绘制,这是Android操作系统的品牌象徵。有时候,它们还会使用纯文字的Logo。

如果只是想看看一些常用类的实现, 在Android包管理器里把源码下载下来, 随便一个IDE配好Source Code的path看就行

但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结

知识

Java

Java是AOSP的主要语言之一 没得说, 必需熟练掌握

熟练的Android App开发

Linux

Android基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 1204 所以熟练的使用并了解Linux这个系统是必不可少的 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发 如果再深入到驱动层, 那么Kernel相关的知识也要具备

Make

AOSP使用Make系统进行编译 了解基本的Makefile编写会让你更清晰了解AOSP这个庞大的项目是如何构建起来的

Git

AOSP使用git+repo进行源码管理 这应该是程序员必备技能吧

C++

Android系统的一些性能敏感模块及第三方库是用C++实现的, 比如: Input系统, Chromium项目(WebView的底层实现)

硬件

流畅的国际网络

AOSP代码下载需要你拥有一个流畅的国际网络 如果在下载代码这一步就失去耐心的话, 那你肯定没有耐心去看那乱糟糟的AOSP代码 另外, 好程序员应该都会需要一个流畅的Google

一台运行Ubuntu 1204的PC

如果只是阅读源码而不做太多修改的话, 其实不需要太高的配置

一台Nexus设备

AOSP项目默认只支持Nexus系列设备 没有也没关系, 你依然可以读代码 但如果你想在大牛之路走的更远, 还是改改代码, 然后刷机调试看看吧

高品质USB线

要刷机时线坏了, 没有更窝心的事儿了

软件

Ubuntu 1204

官方推荐, 没得选

Oracle Java 16

注意不要用OpenJDK 这是个坑, 官方文档虽然有写, 但还是单独提一下

安装:

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:webupd8team/java

sudo apt-get update

sudo apt-get install oracle-java6-installer

sudo apt-get install oracle-java6-set-default

Eclipse

估计会有不少人吐槽, 为什么要用这个老古董 其实原因很简单, 合适 刚开始搞AOSP时, 为了找到效率最优的工具, 我尝试过Eclipse, IntelliJ IDEA, Vim+Ctags, Sublime Text+Ctags 最终结果还是Eclipse 主要优点有:

有语法分析 (快速准确的类, 方法跳转)

支持C++ (IntelliJ的C++支持做的太慢了)

嵌入了DDMS, View Hierarchy等调试工具

为了提高效率, 花5分钟背下常用快捷键非常非常值得

调整好你的classpath, 不要导入无用的代码 因为AOSP项目代码实在是太多了 当你还不需要看C++代码时, 不要为项目添加C++支持, 建索引过程会让你崩溃

Intellij IDEA

开发App必备 当你要调试系统的某个功能是, 常常需要迅速写出一个调试用App, 这个时候老旧的Eclipse就不好用了 Itellij IDEA的xml自动补全非常给力

巨人的肩膀

这个一定要先读 项目介绍, 代码下载, 环境搭建, 刷机方法, Eclipse配置都在这里 这是一切的基础

这个其实是给App开发者看的 但是里面也有不少关于系统机制的介绍, 值得细读

此老罗非彼老罗 罗升阳老师的博客非常有营养, 基本可以作为指引你开始阅读AOSP源码的教程 你可以按照博客的时间顺序一篇篇挑需要的看但这个系列的博客有些问题:

早期的博客是基于旧版本的Android;

大量的代码流程追踪 读文章时你一定要清楚你在看的东西在整个系统处于什么样的位置

邓凡平老师也是为Android大牛, 博客同样很有营养 但是不像罗升阳老师的那么系统 更多的是一些技术点的深入探讨

Android官方Issue列表 我在开发过程中发现过一些奇怪的bug, 最后发现这里基本都有记录 当然你可以提一些新的, 有没有人改就是另外一回事了

一定要能流畅的使用这个工具 大量的相关知识是没有人系统的总结的, 你需要自己搞定

其它

代码组织

AOSP的编译单元不是和git项目一一对应的, 而是和Androidmk文件一一对应的 善用mmm命令进行模块编译将节省你大量的时间

Binder

这是Android最基础的进程间通讯 在Application和System services之间大量使用 你不仅要知道AIDL如何使用, 也要知道如何手写Binder接口 这对你理解Android的Application和System services如何交互有非常重要的作用 Binder如何实现的倒不必着急看

HAL

除非你对硬件特别感兴趣或者想去方案公司上班, 否则别花太多时间在这一层

CyanogenMod

这是一个基于AOSP的第三方Rom 从这个项目的wiki里你能学到很多AOSP官方没有告诉你的东西 比如如何支持Nexus以外的设备

DIA

这是一个Linux下画UML的工具, 能够帮你梳理看过的代码

XDA

需要把反编译的apk存放到apktools同级文件夹目录下,然后运行要查看的安装包,具体操作如下:

1、首先把反编译的apk存放到apktools同级文件夹目录下,如下图所示。

2、按住shift+鼠标右键打开命令窗口,运行代码 apktool d ydapk(安装包的名字)。

3、apk后缀名改成zip,解压双击打开xml格式文件如下图所示。

4、打开cmd命令窗口,如下图所示依次输入命令。

5、将classesdex打包成jar包 需要用到dex2ja。

6、然后就可以查看需要的源代码,如下图所示。

android系统是开源去哪里下载源代码??

“开源”就是“开放源代码”,Android大部分源代码以 Apache Licence 20 许可发布,其中的Linux内核源码以GNU GPL 方式发布, 下载...
点击下载
热门文章
    确认删除?
    回到顶部