动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

来自:https://www.jianshu.com/u/e94ea7ab2e19

当你打开这个文档的时候,你已经做好准备了,话不多说开搞。

这里参考 Google官网文档,地址是:https://source.android.google.cn/

以及清华镜像文档,地址是:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

/ 正文 /

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

先上图,其他的文档有些不是很全,我这个我只能说我现在刷机成功了,有图有真相。我买的Pixel 一代欧版手机 欧版 欧版 欧版,刷的 android-10.0.0_r5 分支。下图请忽略相机名称(这个我自己修改的)和WiFi图标显示图标显示问题,那个刷官方的ROM包WiFi图标也那样,但是可以正常上网。

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

硬件要求

电脑

内存推荐16G,硬盘推荐150G以上,最好250G以上。我之前搞内存4G的电脑编译各种问题换成16G一次成功,8G能不能编译过我不知道。

协程能轻量到什么程度?就算你在一个线程中创建1000个协程,也不会有什么影响。

软件要求

Ubuntu下载

Ubuntu系统,谷歌建议的14.04坑太多,本人安装的Ubuntu 20.04 LTS版的系统。Android源码对Ubuntu版本是有要求的,6.0版本最低要求14.04版本,默认网址下载就是LTS版本,个人推荐安装15.04以上。

JDK下载

15.04版本及以上的JDK下载。

sudo apt-get updatesudo apt-get install openjdk-8-jdk

14.04 版本的JDK下载,它没有直接支持JDK 8版本。

可以下载JDK8U45版本。

sudo apt-get updatecd Downloads                 到下载目录,Downloads为默认目录sudo dpkg -i   openjdk-8-jdk_8u45-b14-1_amd64.deb解决缺少依赖项的问题:sudo apt-get -f install

安装的时候可能会出现找不到deb文件 有同学说强制安装,我没试过。

sudo apt-get updatecd Downloads                   到下载目录sudo dpkg -i --ignore-depends=libxml2-utils  openjdk-8-jdk_8u45-b14-1_amd64.deb解决缺少依赖项的问题:sudo apt-get -f install

工具下载

sudo apt install gitsudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g -multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzipsudo apt-get install python-devsudo apt install adb

下载代码

下载 repo 工具

清华镜像步骤如下所示:

mkdir ~/bin PATH=~/bin:$PATH curl https://aosp.tuna.tsinghua.edu.cn/git-repo-downloads/repo > ~/bin/repochmod a x ~/bin/repo

谷歌步骤如下所示:

mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a x ~/bin/repo

初始化名称和邮箱

mkdir Aosp     (名称随意,我这里叫Aosp)cd Aospgit config --global user.name "bin zhang" git config --global user.email "you@example.com"

初始化repo

清华镜像的(默认下载master分支,后期也可以切换再下载)如下所示:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest或者repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r5

谷歌的(默认下载master分支,后期也可以切换再下载)如下所示:

repo init -u https://android.googlesource.com/platform/manifest或者repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r5

分支情况和对应手机,只截取一部分,这个太多了。

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

下载并且输出下载的日志

repo sync -j4 2>&1 | tee sync_log.txt

这里有时会掉线,建议写一个shell脚本

fn_repo_sync(){    repo sync -j8 2>&1 | tee sync_log.txt}fn_get_source_code(){    echo "fn_get_source_code:$(pwd)"    fn_repo_sync    FETCH_ERROR=`grep -i "error: Exited sync" -A 1  sync_log.txt`    echo  "${FETCH_ERROR}"    while [ -n "${FETCH_ERROR}" ]    do        echo "需要重新拉取代码"        fn_repo_sync        FETCH_ERROR=`grep -i "error: Exited sync" -A 1  sync_log.txt`    done    echo "leave begin download source"    #repo start ${DATE_TIME} --all}fn_get_source_code

下载驱动

下载驱动(专有的二进制文件),官网地址这个时候细分版本那栏就用到了,先找到Pixel手机,搜索QP1A.191005.007.A1 有几个下载几个。

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

下载完成之后每个目录里面有一个shell脚本,将两个shell脚本放在Aosp 目录下,chmod 777 XXX.sh 然后执行 ./XXX.sh 先按一个回车,一直按回车只到出现 I ACCEPT输入这两个单词再回车,注意在第8条。

编译 Android

关联代码

方法一:

source build/envsetup.sh 

方法二:

 . build/envsetup.sh

选择手机型号

lunch  aosp_sailfish-userdebug

只截取一部分,这个也不少。

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

编译并且输出日志

make -j4 2>&1 | tee build.log   (电脑内存高的可以16或者32,我用的16)

刷机

打开OEM开关

先点击设置—关于手机—-版本号七次—开发者选项—打开OEM解锁(这步必须可以上网,否则打不开)

进入bootloader页面(使用方法1时必须安装adb)。

方法1如下所示:

adb reboot bootloader 

方法2如下所示:

使用下图的快捷键,我的手机 Pixel 就是音量减键和电源键。下图只贴了一部分手机机型。

动手编译一个你自己的Android系统(动手编译一个你自己的android系统程序)

在源码根目录(我的项目Aosp目录下)执行,这步必须下载SDK,手机已经解锁的跳过此步。

对于新款设备(2015 年及之后发布的设备):

fastboot flashing unlock

对于老款设备(2014 年及之前发布的设备):

fastboot oem unlock

配置adb和fastboot

su rootvim ~/.bashrcexport ADB=/home/zhangbin/Android/Sdk/platform-toolsexport PATH=$ADB:$PATH :wq       保存退出source ~/.bashrcadb version   确认配置的目录和显示的一致fastboot  --version

配置生成的out目录,刷机

export ANDROID_PRODUCT_OUT=/home/zhangbin/Aosp/out/target/product/sailfishcd Aosp/out/target/product/sailfishfastboot flashall -w 

FAQ

Question1:怎么重新关闭引导加载程序?

Answer1:我能问一下为什么要关闭,你后期使用还得开。车跑偏了哈,回答问题。

对于新款设备(2015 年及之后发布的设备):

fastboot flashing lock

对于老款设备(2014 年及之前发布的设备):

fastboot oem lock

Question2:mac电脑配置有哪些问题?

首先下载mac os 10.11sdk拷贝到/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs,然后解压。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年3月25日 上午9:30
下一篇 2023年3月25日 上午9:40

相关推荐

  • 上海科技大学没有科研项目

    上海科技大学没有科研项目 上海科技大学是一所新兴的高校,旨在为未来的科技领袖培养人才。然而,在成立之初,上海科技大学并没有太多科研项目。这给学校的发展带来了一些挑战,但也为学校提供…

    科研百科 2024年4月8日
    129
  • 香港申请硕士还需要科研项目吗香港申请硕士还需要科研项目吗

    香港申请硕士是否需要科研项目,是一个值得考虑的问题。在申请香港硕士时,科研项目可能是一个优势,但不是必须的优势。 在香港申请硕士时,科研项目可能会增加申请人的竞争力。这是因为香港大…

    科研百科 2024年6月14日
    79
  • 控制会议经费有哪些方法

    控制会议经费有哪些方法 随着科技的发展,会议已经成为人们交流信息,增进友谊的重要方式。然而,由于各种因素的影响,会议的经费也变得越来越昂贵。因此,如何控制会议经费成为了一个重要问题…

    科研百科 2024年7月12日
    41
  • 全国工商联李秀华

    全国工商联李秀华: 企业家是社会进步的重要力量 全国工商联李秀华 企业家是社会进步的重要力量。企业家通过创造就业机会、推动经济发展、改善人民生活,为社会作出了巨大贡献。全国工商联李…

    科研百科 2024年11月7日
    3
  • 低代码马拉松团队分工

    低代码马拉松团队分工是指在低代码开发过程中,团队成员根据各自的专长和技能分工合作,共同完成项目的开发任务。在低代码开发中,团队分工的合理安排是项目成功的关键之一。下面将介绍低代码马…

    科研百科 2024年2月25日
    154
  • 扶贫资金项目申报程序(扶贫资金项目管理系统)

    扶贫资金项目管理系统扶贫资金项目管理系统(简称扶贫模式)用普通的国家语言开发技术,就是金融工程的起步。比如两国蜀普联合拳为国家制定了5000年前的国家工程管理条例,为国家提供最经济…

    科研百科 2024年9月27日
    28
  • 没有科研项目怎么办 没有科研项目支撑

    没有科研项目支撑,可能会让人感到失落和困惑。但是,并不是没有科研项目支撑就无法进行科学研究。实际上,有许多方法可以利用现有的数据、文献和资源来开展科学研究。以下是一些建议,可以帮助…

    科研百科 2024年3月31日
    125
  • 进度管理对医院建设项目的重要意义(医院项目建设必要性)

    医院建设项目管理 进度管理 SCHEDULE MANAGEMENT 医院建设项目,是与社会民生息息相关的医疗公益建设项目,事关解决医疗资源缺乏和患者看房难等突出问题。因此,尽可能缩…

    科研百科 2022年9月15日
    245
  • 香港著名科学家(香港科学家参加国家科研项目)

    香港科学家参加国家科研项目 近年来,随着全球化和科技发展的加速,香港科学家在国际舞台上扮演着越来越重要的角色。越来越多的香港科学家参加国家科研项目,为国家的科技发展和繁荣做出了重要…

    科研百科 2024年4月7日
    122
  • 陕西省科技厅重点科研项目陕西省科技厅重点科研项目

    陕西省科技厅重点科研项目 近年来,陕西省在科技创新方面取得了显著进展。为了进一步推动科技创新,陕西省科技厅推出了一系列重点科研项目,旨在推动陕西省在科技创新领域的全面发展。 这些项…

    科研百科 2024年6月13日
    124