当前位置:网站首页 > Android编程 > 正文

动手编译一个你自己的Android系统_动手编译一个你自己的android系统代码

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

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

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

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

/ 正文 /

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

硬件要求

电脑

内存推荐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 update sudo apt-get install openjdk-8-jdk 

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

可以下载JDK8U45版本。

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

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

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

工具下载

sudo apt install git sudo 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 unzip sudo apt-get install python-dev sudo apt install adb 

下载代码

下载 repo 工具

清华镜像步骤如下所示:

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

谷歌步骤如下所示:

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

初始化名称和邮箱

mkdir Aosp     (名称随意,我这里叫Aosp) cd Aosp git 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 

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

下载并且输出下载的日志

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..007.A1 有几个下载几个。

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

编译 Android

关联代码

方法一:

source build/envsetup.sh  

方法二:

 . build/envsetup.sh 

选择手机型号

lunch  aosp_sailfish-userdebug 

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

编译并且输出日志

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

刷机

打开OEM开关

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

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

方法1如下所示:

adb reboot bootloader  

方法2如下所示:

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

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

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

fastboot flashing unlock 

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

fastboot oem unlock 

配置adb和fastboot

su root vim ~/.bashrc export ADB=/home/zhangbin/Android/Sdk/platform-tools export PATH=$ADB:$PATH  :wq       保存退出 source ~/.bashrc adb version   确认配置的目录和显示的一致 fastboot  --version 

配置生成的out目录,刷机

export ANDROID_PRODUCT_OUT=/home/zhangbin/Aosp/out/target/product/sailfish cd Aosp/out/target/product/sailfish fastboot 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,然后解压。

到此这篇动手编译一个你自己的Android系统_动手编译一个你自己的android系统代码的文章就介绍到这了,更多相关动手编译一个你自己的Android系统_动手编译一个你自己的android系统代码内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 教你用 Android 做二次开发,识别率达到科大讯飞语音输入水平 | 原力计划_科大讯飞识别字母2024-10-30 14:10:44
  • 如何自学Android 编程?_自学安卓编程2024-10-30 14:10:44
  • Android函数式编程技巧:Kotlin语言中的Lambda表达式_Android函数式编程技巧:Kotlin语言中的Lambda表达式2024-10-30 14:10:44
  • 开发第一个Android应用之前你需要知道的六件事_开发第一个android应用之前你需要知道的六件事情2024-10-30 14:10:44
  • Android 编程基础,零基础必学_android编程教程2024-10-30 14:10:44
  • 想要学好 Android 开发?所必要掌握的编程语言有哪些?_android开发要学什么语言2024-10-30 14:10:44
  • 学会这些你就是Android 开发高手了!_android开发技巧2024-10-30 14:10:44
  • 从事 Android 开发六年,我学到的那些事_学android开发的前途和就业前景如何2024-10-30 14:10:44
  • 让Android更安全 谷歌推荐开发者使用Rust编写系统代码_rust 开发app2024-10-30 14:10:44
  • Android开发到底做什么?_android开发是做什么的2024-10-30 14:10:44
  • 全屏图片