对于一个Android工程师而言,没有玩过源码是很悲哀的一件事情,我们的开发不能只是停留在上层的应用开发,这篇文章就是教大家如何搭建源码的编译环境,环境的搭建主要是以下几个步骤:
1、准备一台运行linux系统或者一台mac笔记本,下载一份源码。
2、根据源码的版本安装好jdk的版本。
3、使用make命令整体编译一遍源码。
4、新建一个apk文件,写好对应的makefile文件,编译好之后push到手机里面就搞定了(手机需要有root权限,也可以push到模拟器里面)。
在源码下开发大致的步骤就是这样的,玩过之后你会发现其实也不难,下面我来具体的给大家讲解一下上面的4个步骤。
第一步:准备工作
mac电脑的话就不说了,主要介绍如何使用普通的电脑来搭建环境。根据我的经验,你最好是给机子安装成linux系统,不要使用虚拟机来玩,最好安装ubuntu系统,因为基本大家都是在这下面编译的,碰到什么问题也可以上网查到资料,当然如果你对别的linux玩的比较溜的话也可以。看google的官方介绍说最好使用14.04LTE版本的ubuntu系统,4.4以后的话就只能使用64位的系统了,所以我给的建议就是如果你现在是window的电脑,那最好是现在压缩两个盘出来一个大概20G左右一个和你的机器的内存一样大的盘,分别用来作为ubuntu的安装目录和交换空间,这样可以保存现在的window系统不被破坏然后ubuntu也能安装,这样就可以实现双系统无干扰并存,千万不要使用直接安装的方式来实现双系统,一定要我教你的这种方式来实现。然后网上去下载一份源码,如果你可以翻墙的话也可以到这里去下载:官方下载
第二步:搭建编译环境
根据你系统的版本和需要编译的源码的版本来安装对应的jdk版本,看下面的建议:
- The master branch of Android in AOSP: Ubuntu - OpenJDK 8, Mac OS - jdk 8u45 or newer
- Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - OpenJDK 7, Mac OS - jdk-7u71-macosx-x64.dmg
- Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - Java JDK 6, Mac OS - Java JDK 6
- Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - Java JDK 5
就是说如果你是5.0到6.0的源码,就需要安装64位的OpenJDK7.0的,如果是2.3到4.4的就需要安装oracle版本的64位的JDK6,如果是6.0以上就需要安装64位的OpenJdk8,注意分清Openjdk和oracleJdk,前面的版本你直接可以在Ubuntu的终端里面可以下载到,后一个版本需要你到甲骨文的官网去下载。你可以安装多个jdk版本在系统里面,然后根据需要来动态的切换,限于篇幅我这里就不写的那么详细了,如有不懂的可以百度也可以给我留言。
ubuntu 14.04LTE及以下版本安装openjdk8:
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
第三步:整体的编译一遍源码
一套源码往往包括多套机子,也就是说你下载一套源码可以编译出多款机子的刷机包。是的,可以直接从源码中编译出来一个刷机包来刷你的手机,通过这里我们就可以定制出属于我们自己的刷机包,比如去掉内置的一些apk,添加上一些你喜欢的图片到手机里面等等一些贴上你自己的logo的刷机包。make大概分为三步:
1、source命令把编译脚本导入到终端中。
2、lunch命令选择需要make出的刷机包版本。
3、make命令开始编译,如果电脑的性能够好也可以开多条线程来加快编译速度。
需要注意的是一定要执行第二个步骤,要不然第三步的时候一定会报错!
编译大概需要几个小时的时间,这要看你的电脑的性能了,如果是intel I系类的处理器,固态硬盘,8G以上的内存,可能只要2 3个小时。等待编译好了之后整个的源码环境就搭建好了,你可以在源码中新建自己的应用,在源码中开发app,源码开发的好处是可以使用很多sdk中不能使用的api,当然你也可以给源码中添加上你自己的api,反正一句话:有了源码就有了一切,任何你想干的事都可以去做!玩的溜不溜就得看你目前的水平了,注意的是源码编译完成之后可能要占用200G以上的存储空间,注意给出足够多的空间,很幸运的是linux可以识别window的NTFS格式的分区,所以你可以给源码放在window的分区中,这样就可以做到最小程度的破坏现在的电脑环境!
最后一步:在源码中新建自己的应用然后push到手机里面来调试
在packages/apps/目录下面新建一个文件夹,文件夹的名字就是你应用的名字,注意不要使用中文,新建一个makefile脚本文件用来编译开发的app,这里需要提醒你的是,源码下开发就不能和使用上层开发一样,直接在Android Studio里面点击运行就可以了,需要使用makefile文件编译出来一个apk文件然后push到手机里面的/system/private-app/xxx下面,xxx是你应用的名字,你需要先在这里mkdirs一个这样的文件夹,push进去之后重启手机就可以在手机的桌面上面看到你的app图标了。以后调试的时候如果没有修改过manifest文件,你就不用每次重启手机来看效果,只需要给原来的app杀死掉然后重新打开app就可以看到修改后的效果了。我们的用来调试的工具也就是我们怎么来写我们的app里面的代码,最好使用2.2以上的AS来开发,不要使用eclipse这种已经淘汰的东西了。写代码和我们在上层开发的步骤一样,只是写好之后我们不能直接点击AS上面的运行来直接安装到手机里面,需要使用我们自己写的makefile脚本来编译出apk,然后push到手机里面看修改后的效果。
总结:
好了,这里就给大家介绍了如何搭建源码编译环境,如何在源码下面开发我们自己的app。对于从来没有接触过源码环境的同学来说,也许这些步骤还是有很多的困难的,碰到困难不要着急,冷静的分析一些是那步出错了,然后查资料来解决问题,争取做到每解决一个问题都学到新的知识,有新的认识,我们要做到对原理熟悉,而不是对类似的问题熟悉,只有做到对原理熟悉了,以后再遇到相似的问题就很容易解决了。多做几次上面的步骤,用不了几天你就会对源码的开发很熟练了,我给大家的建议是:开发之前,先熟悉一下linux的基本操作、adb常用的命令、git的使用,这些对于从window过来的人来说是很陌生的东西,一定要针对性的加强一下!好了,Good Luck For You!不懂留言~~~~