aosp 为什么某些目录没有编译_使用云服务器编译安卓源代码并下载到本地

本文介绍了如何在腾讯云服务器上编译AOSP,包括选择按量计费或竞价实例,配置编译环境,解决Python版本、限速等问题,以及下载编译好的镜像到本地的注意事项。
摘要由CSDN通过智能技术生成

腾讯云两种服务器方式的选择

第一种按量计费
  1. 选择按量计费的模式,可以后期动态调整配置
  2. 地区选择中国香港,不然等下没法repo直连谷歌
  3. 公网带宽选择按使用流量,拉到100Mbps,这里的流量计费模式是指,从服务器下载的流量才扣费,也就是后面我使用scp下载编译好的镜像到本地才扣费,使用高速带宽去repo不扣费
  4. cpu开始选择最低的,需要编译的时候再动态调整为高性能CPU
  5. 关机会扣硬盘费用,我选的300g硬盘,关机状态扣的0.15每小时

    f9fb539631538b6461b8b0ea2d8195bf.png

    c71c115b33da61fd1a61fb8907c08a59.png

第二种竞价实例
  1. 选择竞价实例的模式,后期不能再动态调整,优势是费用为按量计费的一半(流量另计)
  2. 地区选择中国香港,不然等下没法repo直连谷歌
  3. 公网带宽选择按使用流量,拉到100Mbps,这里的流量计费模式是指,从服务器下载的流量才扣费,也就是后面我使用scp下载编译好的镜像到本地才扣费,使用高速带宽去repo不扣费
  4. cpu开始直接选择最贵的,大概3元一小时
  5. 不支持关机不扣费

安卓官方教程

构建编译环境

服务器的ubuntu16.04使用的python是3.5版本的,低于repo要求的3.6,repo等下会失败,所以我不折腾了,云服务器操作系统选择ubuntu18.04

1.安装依赖包
sudo apt update
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
2.安装openjdk-8-jdk
sudo apt install openjdk-8-jdk

下载源代码

1.安装repo
  1. 确保您的主目录中有一个 bin/ 目录,并且它包含在您的路径中:
mkdir ~/bin
PATH=~/bin:$PATH
  1. 下载 Repo 启动器,并确保它可执行:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
2.同步源代码
mkdir your_dirname //创建一个工作目录
cd your_dirname

git config --global user.name "Your Name" // 复制即可
git config --global user.email "you@example.com" // 复制即可

// 这里需要去版本控制页面https://source.android.com/setup/start/build-numbers选择,后续还需要下载对应的驱动 
// Build                标记                  版本                 支持的设备
// OPM2.171019.029      android-8.1.0_r20     Oreo                 Pixel 2 XL、Pixel 2、Pixel XL、Pixel、Nexus 5X

repo init -u https://android.googlesource.com/platform/manifest -b android-8.1.0_r20 
repo sync

等待同步完毕,大概花了三小时。

下载驱动

68fd0b02974f64fd99ef2ba2cd9665df.png

wget https://dl.google.com/dl/android/aosp/google_devices-sailfish-opm1.171019.011-f3bafc8b.tgz
wget https://dl.google.com/dl/android/aosp/qcom-sailfish-opm1.171019.011-247af472.tgz 

由于选择的是满速,所以比较小的基本都是秒下。

tar -zxvf google_devices-sailfish-opm1.171019.011-f3bafc8b.tgz // extract-google_devices-sailfish.sh
tar -zxvf qcom-sailfish-opm1.171019.011-247af472.tgz  // extract-qcom-sailfish.sh

将解压后得到的extract-google_devices-sailfish.shextract-qcom-sailfish.sh复制到your_dirname,并给与权限

chmod 777 *.sh
./extract-google_devices-sailfish.sh
./extract-qcom-sailfish.sh

出现Press Enter to view the license后按回车,接下来一直按空格,直到出现让你输入I ACCEPT,一定得是大写,错了就重来即可

源码编译

cd your_dirname
source build/envsetup.sh
lunch 24 // 或者先输入lunch 之后再选择版本,这里要注意对应版本
make -j48 // 由于我选购的是24核,所以就开了48个线程

等待编译结束,花了半小时

a55e2b9e018057d6280236f3bd21a648.png

下载源代码到本地

先将home/ubuntu/your_dirname/out/target/product/sailfish目录下面的img文件进行压缩

cp *.img /home/ubuntu/imgs //记得先创建相应的目录

cd imgs
7z a imgs.zip * // 大小是613M
scp ubuntu@host:/home/ubuntu/imgs.zip ./imgs.zip //这里会需要输入服务器的登录密码
ef1d0794d994e36672e27c4857d27bd3.png

作源码包并刷机

去Factory Images for Nexus and Pixel Devices下载对应版本的"sailfish" for Pixel android-8.1.0_r20下载原厂镜像,这里就不要用服务器去下载了,再从服务器下载下来是需要扣费的,因为我们选择的是流量计费模式,所以使用本地的电脑下载即可,我使用的idm下载,也非常快

4247f163ad44a33cc6d1604a3edafea6.png

d37abd44c303739ca6c093bb1d04b822.png

解压得到的系统镜像里面有

a0c35507e5785f859bc15055d85963eb.png

将zip包里面的所有img文件删除,并将我们编译后下载的img文件和android-info.txt一起再次打包成 image-sailfish-opm2.171019.029.zip(注意不要出现有文件夹的嵌套问题,也会提示你找不到android-info.txt,那就重新打包即可) 由于ubuntu下的权限问题,fastboot命令是有,但是使用flash-all.sh却提示找不到fastboot,所以我选择放到windows上来刷机了,有时间再试下kali,kali的root权限估计就没这些问题了。

e7489be6a1ffcc88fbd39beedd7b37d1.png

手机进入bootloader后,USB链接然后运行flash-all.bat即可

如果出现了这个错,也是正常的,当然也可以修改一下flash-all.bat

6285bafab1a8a1da0963f301425520d5.png

ada2334050c7f0d29c1bed51f78b83b4.png

把这个-w参数移除就好了。不移除也没关系,然后就可以愉快的搞机了

遇到的问题(具体解决办法看报错)

遇到的第一个问题

FAILED: out/target/product/fugu/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp
/bin/bash -c "prebuilts/misc/linux-x86/flex/flex-2.5.39 -oout/target/product/fugu/obj/STATIC_LIBRARIES/libedify_intermediates/lexer.cpp bootable/recovery/edify/lexer.ll"
flex-2.5.39: loadlocale.c:130:_nl_intern_locale_data: ?? 'cnt  ???
Aborted (core dumped)
[ 6% 3452/56388] //frameworks/base/libs/androidfw:libandroidfw clang++ ResourceTypes.cpp [linux]
ninja: build stopped: subcommand failed.
09:56:41 ninja failed with: exit status 1

去除所有本地化的设置,让命令能正确执行,bash 执行:

export LC_ALL=C
遇到的第二个问题(一开始我没看清楚,就只看最后一行,所以可能并不需要如下操作,遇到问题先看清楚吧)
make[1]: Leaving directory `/home/sunhz/sl8541e/out/target/product/sp8541e_srvm/obj/u-boot15'
make: Leaving directory `/home/sunhz/sl8541e/u-boot15'
[ 82% 3107/3782] Build hyb out/target/product/sp8541e_srvm/ob...h-hu.hyb 21515 unique nodes, 102669 total
ninja: build stopped: subcommand failed.
20:31:15 ninja failed with: exit status 1
  1. vim /etc/security/limits.conf 添加如下的行
# 解除服务器 所有用户文件数 进程限制
* soft       nofile      10240
* hard       nofile      10240
* soft       noproc      10240
* hard       noproc      10240
  1. 保存后,再输入ulimit -n 10240回车即可生效。
  2. 提示 ulimit 命令 执行(没提示也执行下)
sudo sh -c "ulimit -n 65535 && exec su $LOGNAME"

再执行第二个步骤即可 

4. 使用ulimit -a可以检查查看!

由于公众号不支持markdown的链接格式,我不整了,需要markdown文件的私聊我吧。

最后感谢肉丝姐的课程,感谢宝藏男孩乌师傅和TG的耐心解答~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值