#1.Repo客户端
安装Repo 创建主目录如 bin/,下载Repo工具确保它可运行:
mkdir ~/bin
PATH=~/bin:$PATH
curl a4cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6N6r3!0J5j5h3N6W2i4K6u0W2k6$3!0G2k6$3I4W2j5i4m8A6M7#2)9J5k6h3y4G2L8g2)9J5c8X3N6A6N6q4)9J5k6s2u0W2M7r3!0Q4x3X3c8V1L8%4N6F1L8r3!0S2k6s2y4Q4x3V1k6J5k6i4m8G2 > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl -sSL '2b2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4k6i4u0J5K9i4c8Q4x3X3c8Y4L8$3!0Y4L8r3g2K6L8%4g2J5j5$3g2Q4x3X3g2H3M7X3!0^5P5g2)9J5k6i4g2K6N6r3y4D9N6h3N6Q4x3X3g2G2M7X3N6Q4x3V1k6Y4K9i4c8Q4x3X3c8J5k6i4m8G2i4K6u0r3i4K6u0n7i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3M7X3g2H3L8#2)9K6c8X3k6G2M7X3#2S2N6q4)9K6c8q4c8q4h3q4c8Q4x3U0M7`. |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 38cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8X3c8J5L8$3W2V1i4K6u0W2k6$3!0G2k6$3I4W2M7$3!0#2M7X3y4W2i4K6u0W2j5$3!0E0i4K6u0r3M7r3I4S2N6r3k6G2M7X3#2Q4x3V1k6E0j5h3&6A6k6X3g2K6N6l9`.`.
无法使用google的话就修改成源
修改清华
REPO_URL = '729K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4k6i4u0J5K9i4c8Q4x3X3g2Y4L8$3!0Y4L8r3g2K6L8%4g2J5j5$3g2Q4x3X3g2U0L8$3#2Q4x3V1k6Y4K9i4c8Q4x3X3c8J5k6i4m8G2i4K6t1%4
改为
REPO_URL = 'cb0K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0K9i4u0J5L8%4u0K6i4K6u0W2N6s2g2F1j5g2)9J5k6i4c8K6K9h3&6Y4K9s2g2S2i4K6u0W2k6h3c8#2i4K6u0W2j5$3&6Q4x3V1k6Y4K9i4c8Q4x3V1k6Y4K9i4c8Q4x3X3c8J5k6i4m8G2i4K6t1%4
镜像
-b 指定相应分支。
repo init -u 239K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6S2L8X3c8J5L8$3W2V1i4K6u0W2k6$3!0G2k6$3I4W2M7$3!0#2M7X3y4W2i4K6u0W2j5$3!0E0i4K6u0r3M7r3I4S2N6r3k6G2M7X3#2Q4x3V1k6E0j5h3&6A6k6X3g2K6N6l9`.`. -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.tgz 和 qcom-angler-opm1.171019.011-f7e511bb.tgz
将其解压得到 extract-huawei-angler.sh、extract-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
被山竹笠编辑
,原因: