徐祖忍 發表於 2024-6-13 15:53:00

android系统开发编译android-10.0.0_r17源代码成功刷机到pixel步骤

<h2 id="1-环境准备">1. 环境准备</h2>
<ul>
<li>建议参考之前编译的aosp12这篇文章,因为我这边之前编译成功过,这次直接编译aosp基本没报错</li>
<li>文章链接:https://www.cnblogs.com/yongfengnice/p/18070332</li>
</ul>
<h3 id="11-安装vmware虚拟机linux编译环境以及aosp编译依赖的第三方依赖">1.1 安装VMware虚拟机、Linux编译环境以及aosp编译依赖的第三方依赖</h3>
<ul>
<li>Android系统源代码编译优先推荐使用Ubuntu环境,所以Window上需要先安装VMware虚拟机,然后再使用虚拟机安装<code>Ubuntu 20.04.6 LTS Desktop</code>版本</li>
<li>安装Ubuntu需要给<code>16G以上</code>的内存分配。内存分配安装完之后也是可以修改的。我一开始给了8G内存编译到最后一刻一直显示OutOfMemory,改为16G重新编译后才成功</li>
<li>准备aosp编译环境、下载android-10.0.0_r17分支源代码、下载pixel驱动文件、编译源代码、pixel真机刷机</li>
<li>为什么是下载android-10.0.0_r17分支的源代码,因为pixel不支持更高版本分支的了,具体支持哪个分支可以查看:https://source.android.com/docs/setup/about/build-numbers</li>
</ul>
<h3 id="12-安装配置gitcurlpythonopen-jdk8以及第三方依赖">1.2 安装配置git、curl、python、open-jdk8以及第三方依赖</h3>
<ul>
<li>安装配置git</li>
</ul>
<blockquote>
<p>1.安装git:<code>sudo apt-get install git</code><br>
2.配置邮箱:<code>git config --global user.email "xx@qq.com"</code><br>
3.配置用户名:<code>git config --global user.name "xx"</code></p>
</blockquote>
<ul>
<li>安装curl</li>
</ul>
<blockquote>
<p>1.安装curl:<code>sudo apt-get install curl</code></p>
</blockquote>
<ul>
<li>安装python</li>
</ul>
<blockquote>
<p>1.安装python3:<code>sudo apt-get install python</code><br>
2.terminal窗口输入<code>python</code>看看是不是python3,需要python3,python2不行的,如果是python2需要想方法重新安装或者软连接到python3</p>
</blockquote>
<ul>
<li>安装open-jdk8</li>
</ul>
<blockquote>
<p>1.先更新依赖:<code>sudo apt-get update</code><br>
2.安装open-jdk8:<code>sudo apt-get install openjdk-8-jdk</code></p>
</blockquote>
<ul>
<li>安装第三方依赖</li>
</ul>
<blockquote>
<p>1.安装aosp编译需要的第三方依赖库:<code>sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip libncurses5</code></p>
</blockquote>
<h2 id="2-下载aosp-android1000_r17源码">2. 下载aosp android10.0.0_r17源码</h2>
<h3 id="21-准备仓库以及下载源代码">2.1 准备仓库以及下载源代码</h3>
<ul>
<li>准备repo仓库</li>
</ul>
<blockquote>
<p>1.创建bin目录:<code>mkdir ~/bin</code><br>
2.添加bin目录到PATH:<code>PATH=~/bin:$PATH</code><br>
3.下载repo到<code>~/bin</code>目录:<code>curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo &gt; ~/bin/repo</code><br>
4.给<code>~/bin/repo</code>文件可执行权限:<code>chmod a+x ~/bin/repo</code></p>
</blockquote>
<ul>
<li>下载android-10.0.0_r17源代码(其实就两句话:<code>repo init</code>和<code>repo sync</code>)</li>
</ul>
<blockquote>
<p>1.创建一个工作目录:<code>mkdir aosp10.0.0_r17</code><br>
2.cd来到该工作目录:<code>cd aosp10.0.0_r17</code><br>
3.设置下载清华源,默认google源需要FQ:<code>export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'</code><br>
4.初始化10.0.0_r17分支源代码仓库:<code>repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-10.0.0_r17</code><br>
5.最后执行sync下载源代码:<code>repo sync</code></p>
</blockquote>
<h3 id="22-提权驱动源代码">2.2 提权驱动源代码</h3>
<ul>
<li>下载驱动文件</li>
</ul>
<blockquote>
<p>1.大家都知道,不同手机驱动程序是不一样的,如果编译源代码之前没有准备好执行驱动文件,编译好的系统刷机到真机后可能就驱动不了手机硬件,比如没有声音等等<br>
2.我的手机是pixel手机,是google厂家的,所以到google官方下载对应驱动文件<br>
3.驱动下载地址:https://developers.google.com/android/drivers<br>
4.下载得到两个tgz文件 <code>google_devices-sailfish-qp1a.191005.007.a3-a1615a0f.tgz</code>和<code>qcom-sailfish-qp1a.191005.007.a3-191228fe.tgz</code>,看名称分别是google和芯片厂家开发的。<br>
5.使用<code>tar -xvf</code>命令分别解压这两个tgz文件得到两个sh脚本<code>extract-qcom-sailfish.sh</code>和<code>extract-google_devices-sailfish.sh</code>,将解压得到的两个sh脚本copy到工作目录<code>aosp10.0.0_r17</code>下<br>
6.分别使用这两个脚本文件<code>./extract-qcom-sailfish.sh</code>和<code>./extract-google_devices-sailfish.sh</code>,会提示你是否接受协议,一直按return直到第八点输入<code>I ACCEPT</code>即可</p>
</blockquote>
<h2 id="3-编译源代码">3. 编译源代码</h2>
<ul>
<li>每次编译都是走以下步骤</li>
</ul>
<blockquote>
<p>1.来到工作目录:<code>cd aosp10.0.0_r17</code><br>
2.导入编译环境:<code>source build/envsetup.sh</code><br>
3.选择编译目标:<code>lunch aosp_sailfish-userdebug</code><br>
4.make执行编译:<code>make -j4</code></p>
</blockquote>
<h2 id="4-pixel真机刷机">4. pixel真机刷机</h2>
<ul>
<li>编译产物</li>
</ul>
<blockquote>
<p>1.编译产物在<code>aosp10.0.0_r17/out/target/product/sailfish/</code>目录下<br>
2.编译产物包括<code>android-info.txt</code>、<code>boot.img</code>、<code>ramdisk.img</code>、<code>system.img</code>、<code>system_other.img</code>、<code>userdata.img</code>、<code>vendor.img</code>等img文件</p>
</blockquote>
<ul>
<li>解锁手机</li>
</ul>
<blockquote>
<p>1.安装手机驱动程序,这个很重要,不只是<code>adb devices</code>查看到手机就行,还要在<code>我的电脑-设备管理器-Android Device</code>能看到已经安装驱动能手机到手机了才行<br>
2.要刷机先解锁,pixel解锁流程(其他手机自行解决):来到<code>开发者选择</code> -&gt; 打开<code>OEM解锁</code> -&gt; 进入bootloader模式<code>adb reboot bootloader</code> -&gt; 解锁'fastboot flashing unlock'<br>
3.解锁会清除手机上的所有数据,这个要注意事先备份好。另外不同手机解锁方法不同,有些手机还不给解锁的。。。</p>
</blockquote>
<ul>
<li>真机刷机</li>
</ul>
<blockquote>
<p>1.设置ANDROID_PRODUCT_OUT环境:<code>export ANDROID_PRODUCT_OUT=xxx/out/target/product/sailfish</code><br>
2.进入bootloader模式<code>adb reboot bootloader</code><br>
3.一句话刷机:<code>fastboot flashall -w</code></p>
</blockquote>
<p>注意:</p>
<ol>
<li><code>fastboot flashall -w --disable-verity --disable-verification</code>是刷机时关闭检查,没有试过,应该是关闭了<code>android-info.txt</code>描述的限制</li>
<li>一定要是整个源代码编译成功了再刷机,而不是出现了上面的几个img文件就刷机了,第一次编译失败的时候我看到有这些文件了直接刷机变砖头,应该是镜像还不完整</li>
<li>如果刷机成功了,也不要换,主要还是进入bootloader模式就还有有救,最多找个完整镜像刷回去了</li>
<li>变砖头解决方法可以参考:https://www.cnblogs.com/yongfengnice/p/18244563</li>
</ol><br><br>
来源:https://www.cnblogs.com/yongfengnice/p/18246075
頁: [1]
查看完整版本: android系统开发编译android-10.0.0_r17源代码成功刷机到pixel步骤