• Android6.0源码下载编译刷入真机


    编译环境是Ubuntu12.04。手机nexus 5,编译安卓6.0.1源码并烧录到真机。

    源码用的是科大的镜像:http://mirrors.ustc.edu.cn/aosp-monthly/,下载完之后会有一个aosp-latest.tar文件,然后新建一个仓库,把它解压到你的仓库里。这里下载会需要点时间。

    然后repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b 你的版本,比如现在我们编译6.0.1的版本,就直接repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-6.0.1_r1

    完了之后执行 repo sync ,同步更新你的代码,这里会花费点时间。

    注:这里有些人如果第一次用repo的话,得先要安装repo。然后才能用

    repo sync 完了之后,会在你的仓库里面出现很多文件。如下图,刚开始第一次编译的时候是没有out生成的。

    因为还要刷入真机,所以我们还需要驱动,你们可以看自己用的是什么机型,然后去官网找相对应的驱动,

    驱动网址 https://developers.google.com/android/nexus/drivers#hammerheadmra58k

    我这里用的是Nexus5,所以我自己下了一个,如果官网进不了的话,我这里有一个Nexus5的驱动,链接:https://pan.baidu.com/s/1kx4J8pf2CV3yH54tgwEXUA 密码:s9n6

    里面有三个.sh文件,把它们放在你们项目的根目录,然后分别执行.sh文件,执行之后,它会有说明,一直按回车,这时要注意,在执行每个文件最后的时候,它会提示让你输入 I ACCEPT。输入完了之后,就会在当前目录生成vendor文件。

    这时所有东西都就绪了,下一步就可以开始编译源码。

    source build/envsetup.sh

    执行lunch命令,选择你要编译的手机的版本,我这里nexus 5选择hammerhead。如下图所示

    选择完之后,然后执行以下make clobber,清除无用的编译。

    然后执行prebuilts/misc/linux-x86/ccache/ccache -M 50G设置缓存大小。

    通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍.

    查看核心数量

    grep 'core id' /proc/cpuinfo | sort -u | wc -l

    查看线程数

    grep 'processor' /proc/cpuinfo | sort -u | wc -l

    比如,我现在的笔记本是双核四线程的,因此根据公式,最快速的编译可以make -j8.

    然后就直接等编译了。

    PS:在编译的过程中有可能会遇到以下的失败:

    out/host/linux-x86/bin/jack-admin: 行 37: SETTING_VERSION: 为绑定变量
    make: *** [out/host/linux-x86/framework/jack.jar] 错误 1
    make: *** 正在删除文件“out/host/linux-x86/framework/jack.jar”

    修改方法:在./prebuilts/sdk/tools/jack-admin里面SETTING添加SETTING_VERSION=2
    在“SETTING_VERSION -lt 2”改为“SETTING_VERSION -eq 2”。然后重新编译即可。

    大概编译2个多小时,就编译成功了。生成的镜像文件在out/target/product/文件下面。

    这时候可以烧录到真机了。把调试模式打开,然后接上USB调试。

    输入一个命令提示符:adb reboot bootloader。

    然后手机屏幕显示 等待bootloader界面在屏幕上出现: fastboot oem unlock

    接着一个unlock bootloader的选择确认页面会出现。用音量来选择到“YES,”,用电源键来确定。

    这时你手机上的所有数据都将被抹去,LOCK STATE将变成unlocked。不应该超过一两分钟。

    重新开机后的画面下面出现了一个打开的锁,以后刷机都会在解锁状态下了。

    然后进入到你刚刚的那个目录下,里面有.img镜像文件。通过fastboot刷入即可,首先你先看看你的fastboot 能不能识别到设备,输入fastboot devices

    如果出现 no permissions fastboot ,就直接进入到out/host/linux-x86/bin 下面输入以下的命令:

    sudo chown root:root fastboot

    sudo chmod +s fastboot

    然后再重新看下设备是否能识别到,输入fastboot devices

    如果识别到了,再进入到镜像文件img那个文件里面执行以下命令进行烧录。

    fastboot flash boot boot.img
    fastboot flash cache cache.img
    fastboot flash recovery recovery.img
    fastboot flash system system.img
    fastboot flash userdata userdata.img
    fastboot reboot

    最后一条命令是重启命令,等大约两分钟,就会出现

    至此,源码编译烧录真机完成。

  • 相关阅读:
    List、Set、Map集合大杂烩
    Android的DatePicker和TimePicker-android学习之旅(三十八)
    Ubuntu 启动项、菜单 改动 防止隐藏
    Ehcache 整合Spring 使用页面、对象缓存
    Spring MVC 相关资料整理
    Spring + Spring MVC+Hibernate框架整合详细配置
    @RequestMapping 用法详解之地址映射
    关于时间统计问题
    Oracle之物化视图
    Oracle:高效插入大量数据经验之谈
  • 原文地址:https://www.cnblogs.com/suicode/p/9484574.html
Copyright © 2020-2023  润新知