Android系统编译及单模块编译简介

前言

  本文的介绍是基于有一套Android系统源码供你玩耍之上的,主要介绍Android系统的编译流程及系统app的模块化编译。我的源码是放在Linux服务器上的,如果你对Linux常用命令感兴趣可以看一下Linux常用命令。

系统编译流程

1. 检查jdk版本(java -version)

 这一步并非必须,根据自身的实际情况决定,对于部分系统的编译需要用到特定的jdk版本,否则编译会失败,

会报如下错误:

Android系统编译及单模块编译简介_第1张图片

2. source build/envsetup.sh

 利用cd命令切换到android源码的目录下,也就是拥有下图文件夹的目录,执行 source build/envsetup.sh命令。

Android系统编译及单模块编译简介_第2张图片

3. make clean

 make clean命令是用来清除前一次编译结果的,所以这一步是非必须的,这一步应该执行在lunch之前,

因为lunch之后会生成一个out文件夹,而make clean会删除该文件夹。

4. lunch

 系统源码可以编译生成不同版本的系统,lunch过后如下图,然后选择对应的版本。

Android系统编译及单模块编译简介_第3张图片

5. make update-api -j30

 用来更新系统api的,非必须执行,-j30用来指定编译的线程数,根据自己的硬件的性能来决定。

6. make -j30>makelog01.log 2>&1

 编译系统,并将编译log输出到log文件中,如果不需要保存log信息可以直接使用make -j30进行编译。

然后漫长的等待。。。

在编译完成后在android目录out目录下,保存着编译生成的各种文件。

7. 利用自己的打包脚本,将编译生成的文件打包然后烧进手机,至此系统编译已经完成。


单模块编译

注意:单模块编译需要在系统编译成功一次后才能顺利进行的,在系统没有编译前或者执行了make clean之后,单模块编译是不能成功的!

如果你在编译系统后退出过编译的终端或关闭过编译设备,在进行单模块前你需要重新执行系统编译的1,2,4步骤,然后就可以进行单模块编译了。

如:编译Calculator这个app

先切到Bluetooth工程目录下:cd packages/apps/Calculator/

然后在该文件夹下执行 mm,进行编译,成功的话会在下面显示出一个apk的存放路径,如下图:


编译成功后就需要把apk运行到手机上看效果了,因为编译的是系统级的应用,安装过程和第三方的应用有些不一样,在终端需要执行如下操作:

1. adb devices :检测手机是否连接上;

2. adb root :获取root权限;

3. adb renount:获取手机system分区的读写权限;

4. adb push 你的apk存放路径 /system/app/

注意:你编译的apk可能是经过定制的,编译生成的apk是存放在 xxxx/system/priv-app/apk名,这时候上面4步骤如下:adb push 你的apk存放路径 /system/priv-app/

整个安装流程截图:

Android系统编译及单模块编译简介_第4张图片

你可能感兴趣的:(android,系统)