自己编译安卓系统实践

自己编译安卓系统实践,第1张

一、需要的环境和信息来源

版本号与驱动匹配表:https://developers.google.com/android/drivers#hammerheadmra58k

android细分版本号:https://source.android.com/setup/start/build-numbers?hl=zh_cn

编译环境需求:https://source.android.google.cn/setup/build/older-versions

镜像使用帮助:https://mirrors.ustc.edu.cn/help/aosp.html

此处我们编译 :android-10.0.0_r17

二、实践

1、安装 Ubuntu 20.04 
2、设置语言与更新源,推荐ustc.edu.cn    中科大镜像源
3、下载初始化包并解压(aosp源码)

(1)mkdir ~/bin
 (2) cd ~/bin
 (3) wget https://mirrors.ustc.edu.cn/aosp-monthly/aosp-latest.tar
 wget可以使用-c选项,来支持断点下载
 (4)md5sum aosp-latest.tar 计算MD5值是否与网站一致
 (5) tar xvf aosp-latest.tar

 注意:解压后一定要保存快照

2、配置git

sudo apt-get install git
git config --global user.email 80491636@qq.com
git config --global user.name "zhangkai"

此处可在根目录中找到.gxxxx的文件  cat 查看后就是设置的邮箱和名称

3、安装repo工具

#mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo

4、安装python
注意,ubuntu默认是安装的有python的,执行python3可以查看到版本.(无需 *** 作,略过此步)
增加软连接python:

sudo ln -s /usr/bin/python3.8 /usr/bin/python3

sudo ln -s /usr/bin/python2.7 /usr/bin/python

5、初始化仓库
(1)初始化特定android版本:

cd ~/bin/aosp
#repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.4.4_r1
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0_r17

显示:repo has been initialized in /home/zhangkai/bin/aosp 表示初始化完成

(2)输入:

repo sync

6、安装依赖和JDK8:

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig libncurses5

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

7、安装驱动
根据 版本号与驱动匹配表 找到对应驱动下载到aosp目录下,解压后 ./命令运行。
会在vendor目录下生成文件
运行文件时需要根据提示输入:I ACCEPT

8、编译系统

make clobber
source build/envsetup.sh
lunch    
make -j8      (-j后面是分配的线程,根据电脑配置酌情设置)

lunch的选择

在官方安装包中:https://developers.google.com/android/images#hammerhead

找到自己手机对应的名字。例如:Nexus5

编译完成后会在 out 目录中生成相应的文件,具体的系统和对应生成的文件自己再查。

nexus5 4.4 生成在out/target/product/generic下 recovery.img,boot.img,system.img,cache.img,userdata.img

下载同版本官方安装包,将文件替换后 flash-all.bat 自动执行刷机

问题集锦:
fatal:不能重置索引文件至版本号 'xxxx'。
解决方法:
cd ~/bin/aosp/.repo/repo
git pull
cd ~/bin/aosp
再次repo init 和 repo sync

编译 android-4.4.4_r1        (看雪视频中用到的就是这个版本)

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.4.4_r1


/*******************    JDK6的安装:        **********************/

下载:https://www.oracle.com/java/technologies/javase-java-archive-javase6-downloads.html
这里下载的是:jdk-6u45-linux-x64.bin然后,可以把它放置在任何你喜欢的文件夹,建议把它放置到主文件夹(/home/*)下。
下面开始安装jdk:
在网上查的一些资料上都是把jdk安装在/usr/lib/jvm/jdk下面,也有安装在/opt下的,我在这里介绍的就是把它安装在了/opt下,
终端下进入你存放jdk-6u10-linux-i586.bin

sudo chmod 755 jdk-6u10-linux-i586.bin // 将文件赋于运行权限,一般我都改777

sudo -s ./jdk-6u10-linux-i586.bin /opt

一路回车,直到询问是否安装,输入yes回车   (直接敲一个大写的A加车更好,)
[如果此命令执行完毕,安装目录并不是在/opt下,而是你自己的帐户目录下,请将整个文件夹移动到/opt 中,并给出适当的权限]

ok,安装完毕,下面配置环境变量

配置classpath,修改所有用户的环境变量

sudo vi /etc/profile

在文件最后添加

#set java environment

JAVA_HOME=/opt/jdk1.6.0_45

export JRE_HOME=/opt/jdk1.6.0_45/jre

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

执行环境变量 source /etc/profile


/***************    make 降低版本    *************************/
解决步骤:

1、下载 3.81 或 3.82 版本的 make 压缩包

wget https://ftp.gnu.org/gnu/make/make-3.82.tar.gz

2、将 make 压缩包放到 Ubuntu 任意目录下解压

tar -zxvf make-3.82.tar.gz

3、进入 make-3.81 目录

$./configure        (请先安装依赖和 sudo apt-get install gcc -y)

$make

注意这里一般会报错。解决方案是,打开glob/glob.c,注释掉211行和232行。//符号为注释
重新执行

make clean
make
sudo make install

注意:中间一般不会出现错误,第三个命令必须加 sudo 给一个 root 权限,否则低版本的 make 安装不了。

4、查看 make 的版本(可能需要重新启动)

** make -v**

android4.4编译环境需要增加:

sudo apt-get install git gnupg flex bison gperf build-essential   zip curl libc6-dev x11proto-core-dev   g++-multilib  tofrodos   python-markdown libxml2-utils xsltproc

/ ************************** 手动刷机步骤        ******************/

Google官方factory-image地址:https://developers.google.com/android/images#bullhead
我的Nexus 5对应下载的是image-hammerhead-m4b30z
将压缩包解压,并且将image-hammerhead-m4b30z里面的分区image也解压放到与flash-all脚本相同的目录。

adb devices        查看usb调试是否正常
fastboot devices    查看fastboot模式是否正常

这里不先加锁,再解锁,启动会无限重启或一直google界面。
fastboot oem lock        加锁
fastboot reboot-bootloader
fastboot oem unlock        解锁
fastboot reboot-bootloader

fastboot erase cache
fastboot erase userdata
fastboot erase boot
fastboot erase recovery
fastboot erase system

fastboot flash bootloader bootloader-hammerhead-hhz11k.img
fastboot reboot-bootloader

fastboot flash radio radio-hammerhead-m8974a-1.0.25.0.23.img
fastboot reboot-bootloader

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

#fastboot format cache——清除手机缓存
#fastboot format userdata——清除用户数据
fastboot reboot —— 重启手机

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/992857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存