首页
社区
课程
招聘
[原创]安卓系统源码编译
2020-7-3 12:13 3863

[原创]安卓系统源码编译

2020-7-3 12:13
3863

#1.Repo客户端
安装Repo 创建主目录如 bin/,下载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

初始化Repo客户端 创建一个空目录存放工作文件,使用电子邮件地址配置Git。

mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

git config --global user.name "Your Name" 
git config --global user.email "you@example.com"

运行 repo init 获取最新版本的Repo

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

无法使用google的话就修改成源

修改清华
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
改为
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
镜像

-b 指定相应分支。

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

清华镜像

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

依赖设置

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev 
sudo apt-get install git-core gnupg flex bison gperf build-essential 
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib 
sudo apt-get install libc6-dev-i386 
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev 
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache

#2.下载Android源代码树

repo sync

#3.Java sdk下载

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

sudo update-alternatives --config java
sudo update-alternatives --config javac

#4.源码编译

androidSource:$ source build/envset.sh
androidSource:$ lunch 
1. aosp_arm-eng
     2. aosp_arm64-eng
     3. aosp_mips-eng
     4. aosp_mips64-eng
     5. aosp_x86-eng
     6. aosp_x86_64-eng
     7. full_fugu-userdebug
     8. aosp_fugu-userdebug
     9. mini_emulator_arm64-userdebug
     10. m_e_arm-userdebug
     11. m_e_mips64-eng
     12. m_e_mips-userdebug
     13. mini_emulator_x86_64-userdebug
     14. mini_emulator_x86-userdebug
     15. aosp_dragon-userdebug
     16. aosp_dragon-eng
     17. aosp_marlin-userdebug
     18. aosp_sailfish-userdebug
     19. aosp_flounder-userdebug
     20. aosp_angler-userdebug
     21. aosp_bullhead-userdebug
     22. hikey-userdebug
     23. aosp_shamu-userdebug

androidSource:$ 20
androidSource:$ make -j8

编译类型

  • user 权限受限制;适用于生产环境
  • userdebug 于"user"类似,但具有root权限可以调试
  • eng 具有额外调试工具的开发配置

设备的代号以及编译配置信息

 

下载驱动(只在第一次下载编译源码时进行)
Branch的列表在:驱动

 

官网下载对应版本的驱动:驱动
Nexus 6P 对应驱动为 OPM1.171019.011 ,下载文件 huawei-angler-opm1.171019.011-41db8ed5.tgzqcom-angler-opm1.171019.011-f7e511bb.tgz
将其解压得到 extract-huawei-angler.shextract-qcom-angler.sh文件,复制到安卓源码目录下运行。依次执行 sh extract-xxxx.sh 并输入 I ACCEPT。

 

//设置目标架构
# export ARCH=arm64
# export USE_CCACHE=1

// 解压 tgz 文件
# tar   zxvf    test.tgz  -C  指定目录

// 将指定目录压缩到指定文件
# tar czvf   kernel.tgz   linux-2.6.29

#5.刷入目标设备

编译的可刷机文件有 boot.img、system.img、recovery.img、cache.img、userdata.img
当我们编译前执行 source build/envsetup.sh 、 lunch aosp_hammerhead-userdebug 两个命令时,脚本已经为我们自动设置好了环境变量和编译选项,其中lunch命令设置好了ANDROID_PRODUCT_OUT变量的值。adb、fastboot工具路径也设置好了。
1.检查输出目录变量的值
    刷机前输出ANDROID_PRODUCT_OUT变量的值,确保它的值和编译后的镜像输出路径一致。不止一致的话,重新设置ANDROID_PRODUCT_OUT的值
2.用USB数据线连接手机
3.以fastboot模式启动手机,进行设备解锁
    默认情况下设备是上锁的,输入命令进入bootloader模式
    aosp:$ adb reboot bootloader
    解锁
    aosp:$ fastboot oem unlock
    按音量键选YES,电源键确认

4.刷入镜像
aosp:$  fastboot -w flashall
这时刷入 boot.img、system.img、recover.img、cache.img、userdata.img 五个镜像文件

5.以fastboot 模式启动手机,进行设备上锁
aosp:$ adb reboot bootloader
aosp:$ fastboot oem lock

#6.其他
Java SDK替换

sudo update-alternatives --config java 
sudo update-alternatives --config javac

补救
刷机后 如果手机进不去操作系统,那就先使用官方包刷入bootloader.img 然后在刷入系统。
官方地址:官网ROM

 

ubunut18.0 编译android8.0 出现错误时在make前使用

export      LC_ALL=C

Android8.0编译时 Out of memory error 错误,使用如下方式

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

最后于 2020-7-3 12:18 被山竹笠编辑 ,原因:
收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 17842
活跃值: (59853)
能力值: (RANK:125 )
在线值:
发帖
回帖
粉丝
Editor 2020-7-3 15:05
2
0
感谢分享~
游客
登录 | 注册 方可回帖
返回