ubuntu:16.04.1 内存:20.9G 硬盘:400G
Google手机:Pixel3a 解锁 root
sudo apt install git
git config --global user.email "你的电子邮件地址"
git config --global user.name "你的名字"
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar -zxvf Python-3.7.1.tgz
sudo apt install git-core libssl-dev libffi-dev gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev libz-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
./configure
sudo make install
ubuntu默认安装的python版本是python2.xx的,但是android10的源码编译需要python3的版本,这就需要我们在需要的时候,切换对应的python版本。
update-alternatives --help
update-alternatives --help
用法:update-alternatives [<选项> ...] <命令>
命令:
--install <链接> <名称> <路径> <优先级>
[--slave <链接> <名称> <路径>] ...
在系统中加入一组候选项。
--remove <名称> <路径> 从 <名称> 替换组中去除 <路径> 项。
--remove-all <名称> 从替换系统中删除 <名称> 替换组。
--auto <名称> 将 <名称> 的主链接切换到自动模式。
--display <名称> 显示关于 <名称> 替换组的信息。
--query <名称> 机器可读版的 --display <名称>.
--list <名称> 列出 <名称> 替换组中所有的可用候选项。
--get-selections 列出主要候选项名称以及它们的状态。
--set-selections 从标准输入中读入候选项的状态。
--config <名称> 列出 <名称> 替换组中的可选项,并就使用其中哪一个,征询用户的意见。
--set <名称> <路径> 将 <路径> 设置为 <名称> 的候选项。
--all 对所有可选项一一调用 --config 命令。
<链接> 是指向 /etc/alternatives/<名称> 的符号链接。(如 /usr/bin/pager)
<名称> 是该链接替换组的主控名。(如 pager)
<路径> 是候选项目标文件的位置。(如 /usr/bin/less)
<优先级> 是一个整数,在自动模式下,这个数字越高的选项,其优先级也就越高。
..........
ls /usr/bin
ls /usr/local/bin
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 3
update-alternatives --config python
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
mkdir android10
cd android10
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0-r41
repo sync
1、tar -zxvf google_devices-sargo-qq3a.200805.001-ca5e20a1.tgz
2、tar -zxvf qcom-sargo-qq3a.200805.001-ebd290fb.tgz
3、chmod u+x extract-google_devices-sargo.sh
4、chmod u+x extract-qcom-sargo.sh
5、./extract-google_devices-sargo.sh
6、./extract-qcom-sargo.sh
在执行sh脚本的时候,一定要注意其过程中还要手动输入“I ACCEPT”
"sargo"就是我们下载驱动的时候,对应的tag标识。
选择product后,在后面的输出里面就可以看到我们要编译的相关信息。
第一次可能ubuntu无法连接到手机,这时需要设置一下usb。
查看ubuntu的usb设备
lsusb
在/etc/udev/rules.d文件夹找到70-android.rules文件,如果没有,就重新创建,并编辑如下内容:
SUBSYSTEM== "usb",ATTRS{idVendor}=="18d1",ATTRS{idProduct}=="4ee7",MODE="0666"
其中idVendor和idProduct的值要和lsusb列出来的ID值保持一致
配置上面的文件的话,没有权限,这时就需要我们在手机上给授权。如果没有弹出授权的弹窗,可以先执行adb kill-server,然后使用sudo adb devices,多次尝试,就会有弹出。
当我们手机连上电脑后,会自动弹出下面的弹窗,让我们选择连接主机,还是连接虚拟机,这里我们选择连接虚拟机,并且选择下面的虚拟机名称。
如果遇到上面的错误,执行adb kill-server,重新启动adb server
此时即使显示已经手动连接了ubuntu,但是依然停留在waiting for any devices…。解决方法是第一次设备连接虚拟机选择ubuntu的时候,一定要勾选下面的“记住我的选择”,这样在刷机重启的过程中,就会自动连接ubuntu了。
ANDTOID_PRODUCT_OUT=/home/ubuntu/android10/out/target/product/sargo
PS:执行source /etc/profile以后,即使echo $ANDROID_PRODUCT_OUT生效了,但是还需要重新打开一个新的Terminal编译。
重新执行以下命令即可:
1、source build/envset.sh
2、lunch并且选择对应的product
3、make
4、adb devices(检查设备是否连接)
5、adb reboot bootloader(重启设备,进入fastboot状态)
6、fastboot devices(检查进入fastboot状态的设备)
7、fastboot flashall -w(刷入ANDROID_PRODUCT_OUT下的所有镜像文件)
https://developers.google.cn/android/images#shamu
https://developer.android.com/studio/releases/platform-tools.html