Android下载、编译系统源码和刷机(很是详细)

下载源代码

1)安装repo,repo是一个批量管理git库的脚本html

准备环境变量目录,并添加到环境变量
 $  mkdir ~/bin
 $  PATH=~/bin:$PATH
执行以下语句,将repo下载到你的环境变量目录下(例如~/bin)java

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo  (若是这个地址被墙, 请自行在google上搜索相应的repo)android

固然,你也能够去GitHub下载这个repo文件,地址:git

https://github.com/Jhuster/AOSP/blob/master/repogithub

修改执行权限 macos

chmod a+x ~/bin/repoubuntu

B) 创建你的工做目录(随便什么名字,例如work),并进入api

mkdir workandroid-studio

cd workoracle

C)  设置你的邮箱和用户名(例如)

git config --global user.email xiaoming@xxx.com

git config --global user.name xiaoming

2)repo init初始化,根据下面网址,

    repo init -u https://android.googlesource.com/platform/manifest

注:须要先cd进你想下载的目录,否则下在根目录

3)开始同步,时长超过1小时,中间遇到各种问题网上搜索尝试解决

     $ repo sync -j4

更多信息能够用repo sync -help查看

若是出现exited sync due to fetch errors,尝试增长-f选项

注: repo init会出现一个.repo文件(隐藏的)。在下载过程当中对应文件夹下并无文件,要等下载完了才有的。

安装编译Android源码须要的相关包,安装JDK

 请参考 http://source.android.com/source/initializing.html

安装JDK,编译不一样的安卓版本时须要不一样的JDK,注意切换,可参考如下安装步骤,或按须要安装:

Android Version

Ubuntu JDK Requirements

Mac OS

master branch OpenJDK 8 jdk 8u45 or newer
Android 7.x (Nougat) OpenJDK 8 jdk 8u45 or newer
Android 5.x (Lollipop) - Android 6.0 (Marshmallow) OpenJDK 7 jdk-7u71-macosx-x64.dmg
Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat) Java JDK 6 Java JDK 6
Android 1.5 (Cupcake) - Android 2.2.x (Froyo) Java JDK 5

openjdk-7 (Android L使用)
 $ sudo apt-get update
 $ sudo apt-get install openjdk-7-jdk
 若是在加入上述的源后,仍是不可以成功,那么能够尝试加入源 sudo add-apt-repository ppa:ferramroberto/java 而后update
 通常不用配置环境变量    
注意:使用ppa时可能存在加载超时等问题
解决办法:修改源,从新添加。

openjdk-8-jdk
     AOSP master 分支须要, Ubuntu >= 15.04: sudo apt-get install openjdk-8-jdk

     若是系统是Ubuntu16.04或者基于Ubuntu16.04的衍生版,在安装openjdk8后编译miui时会产生相似以下错误:Your version is: openjdk1.8.x , The required version is: 1.7.x  Please follow the machine setup instructions at https://source.android.com/source/initializing.html

     openjdk7已经从ubuntu官方软件源中移除,这时能够在每次编译源码时,在执行make 这一步加入EXPERIMENTAL_USE_JAVA8,如:

make bootimage EXPERIMENTAL_USE_JAVA8=true

编译源码的时候可能须要切换jdk

经过如下指令切换java jdk和javac版本

sudo update-alternatives --config java

sudo update-alternatives --config javac

安装Jack

本地编译Android 7.x版本的源码时,须要使用jack-server
sudo apt-get install jack-tools

编译MIUI源代码生成刷机包

1.编译系统源代码(前提是已经下好源代码)

 (1)进入已源码目录(例:cd cancro-kk-alpha)

 (2)source build/envsetup.sh(或  . build/envsetup.sh)

 (3)lunch    选择机型(如cancro:高通)

 (4)make -j4   target-files-package   开始编译(4表明使用几个线程编译) (如要编译系统设置执行 make -j4 Settings)

 (5)编译成功会显示#### make completed successfully (24:37 (mm:ss)) ####而且生成一个out目录,里面有新生成的镜像

 (6)当某个模块编译成功后,对该模块代码进行修改后再次编译可进入对应模块目录下(含Android.mk文件)执行mm命令,可更快完成编译 (如在根目录下执行make -j4 Settings后再次编译可进入package/apps/Settings目录下执行mm)

 (7)编译framework:   在根目录下执行make framework,将编译生成的out路径下的两个文件framework.jar和framework-res.apk用adb push命令装到system/framework下,以后要重启手机修改才会生效

刷机

  1. 手机打开USB权限,链接到计算机
  2. adb reboot bootloader (手机进入fastboot)或者音量下+开机键+米键手动进入fastboot
  3. cd到编译后源码生成的out/target/product下,里面会有编译是选择的平台的文件夹,进入之
  4. 使用fastboot flash boot boot.img烧写boot分区,使用fastboot flash system system.img烧写系统分区
  5. 使用erase清除制定分区的数据,例如erase userdata清除用户数据
  6. 更多功能使用fastboot --help
     

注:Linux: fastboot 须要Root权限: sudo <脚本名>

可能刷机不成功,须要安装一下fastboot

sudo apt-get install android-tools-fastboot

若是遇到一下问题:

fastboot flash boot out/target/product/generic/boot.img无论用,提示< waiting for device >

缘由查找:

用fastboot命令查看设备提示无权限,以下:

$ fastboot -l devices
no permissions         fastboot usb:2-1.3

因而知道是由于权限问题,是fastboot没有权限, 解决步骤:

1. 将fastboot的全部者属性改为root

用which fastboot命令找到fastboot所在的目录,而后进入此目录;再用命令chown改其属性:

sudo chown root:root fastboot

2. 将其权限更改一下:

sudo chmod a+s fastboot

Android Studio 导入系统源码

  1. 登陆http://www.android-studio.org/ 下载Android studio的Linux版本,默认下载目录是~/下载,解压,cd到bin目录下运行studio.sh便可
  2. Android studio导入源码  

          建议先修改development/tools/idegen /exclude-paths文件,在文件最后面逐行添加^external,^vendor,^.*\.jar$,可加快执行速度,避免遍历不须要的文件,并且IDE能够查找到SDK源码当中,有助于代码分析。

  • 执行以下命令生成idegen.jar文件
    mmm development/tools/idegen/ -B
  • 执行idegen.sh脚本
    development/tools/idegen/idegen.sh

        这条命令执行完成后就在Android源码的根目录中生成了android.iml, android.ipr和android.iws三个文件。

  • 最后用Android studio打开android.ipr文件便可
相关文章
相关标签/搜索