首页 > 系统相关 >Ubuntu 22.04 搭建编译Android源码环境

Ubuntu 22.04 搭建编译Android源码环境

时间:2022-12-28 17:33:41浏览次数:64  
标签:bin 22.04 python repo -- 源码 usr Ubuntu

环境准备

操作系统

编译Android源码需要一个区分文件大小写的系统环境,一般使用Ubuntu,可以采用单独安装Ubuntu、虚拟机等形式。这里使用VMware虚拟机的形式,具体安装过程省略,虚拟机及Ubuntu下载地址如下:

Download VMware Workstation Pro | CN
https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
下载Ubuntu,目前最新的长期支持版本是22.04.1 LTS
https://cn.ubuntu.com/download/desktop

环境配置

安装Ubuntu后,打开“终端”

安装和配置git

$ sudo apt install git
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

配置python

Ubuntu 22.04.1已内置python3,安装位置在/usr/bin/python3.10,这个路径后面有用到。可以使用python3 --version命令查看python3版本,我查到的版本是3.10.6。
网上资料说下载Android源码需要python3,编译编码需要python2,所以还需要安装python2

$ sudo apt install python2-minimal
$ python2 --version
Python 2.7.18

经查询,python2的安装路径为/usr/bin/python2.7。因为系统中安装了多个python版本,需要使用update-alternatives来切换版本,update-alternatives是Linux上的一个版本管理工具,--install

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.10 3

update-alternatives后面按顺序共5个参数,其中:
第一个参数--install表示向update-alternatives注册服务名。
第二个参数/usr/bin/python是注册的最终地址,以后管理就是管理这个软链
第三个参数python为服务名
第四个参数为被管理命令的绝对路径
第五个参数为优先级,数字越大优先级越高

配置完毕后,可以使用python --version查看当前使用的python版本

查看python配置

$ update-alternatives --display python
python - 手动模式
  最佳链接版本为 /usr/bin/python3.10
 链接目前指向 /usr/bin/python3.10
  链接 python 指向 /usr/bin/python
/usr/bin/python2.7 - 优先级 2
/usr/bin/python3.10 - 优先级 3

选择python版本

后面如果需要切换python版本,执行如下命令

$ sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。

  选择       路径               优先级  状态
------------------------------------------------------------
  0            /usr/bin/python3.10   3         自动模式
  1            /usr/bin/python2.7    2         手动模式
* 2            /usr/bin/python3.10   3         手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:

根据情况输入编号1或2进行切换

安装repo

本部分参照官方文档 https://source.android.google.cn/source/downloading 有补充和调整

  1. 创建bin文件夹
$ mkdir ~/bin
$ PATH=~/bin:$PATH
  1. 安装curl
$ sudo apt install curl
  1. 下载 Repo 工具,并确保它可执行:
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

下载源码

首先确定要下载的分支版本,可以在下面这个网址查询
代号、标签和内部版本号  |  Android 开源项目  |  Android Open Source Project https://source.android.google.cn/docs/setup/about/build-numbers#source-code-tags-and-builds

因从google官网下载源码较慢,故采用清华大学 AOSP 镜像
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

方式1:传统同步方式

创建一个文件夹存放源码,如aosp

$ mkdir aosp
$ cd aosp

此文写作时最新的分支为android-13.0.0_r18,使用-b参数进行指定

$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r18

同步源码,同步完就能看见文件了

$ repo sync -c --no-tags

-c 只拉取当前分支代码
--no-tags 不拉取tags
Android源码非常大,需要同步很长的时间,如果同步过程中有出现某个地方卡顿了很久,可以使用Ctrl+Z来中断同步,重新执行 repo sync进行同步

方式2:使用每月更新的初始化包

同步方式耗时较长,可以使用每月更新的初始化包,这个网址列出了每月的初始化包,aosp-latest.tar为最新的包,目前的大小为64GB
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/
用命令行或者下载工具下载,下载后解压,会出现一个aosp文件夹,里面有一个隐藏的.repo文件夹,解压大小在我电脑上是78G

$ wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
$ tar xf aosp-latest.tar

指定分支后再执行同步

$ repo init -b android-13.0.0_r18
$ repo sync -c --no-tags
Checking out: 100% (1134/1134), done in 52m20.190s
repo sync has finished successfully.

这种方式可以大大加快源码同步的速度,同步完成后aosp文件夹大小为151G

源码编译

使用envsetup.sh脚本初始化环境,lunch后选择需要编译的镜像

$ source build/envsetup.sh
$ lunch

编译类型分为user、userdebug、eng
user:用来正式发布到市场的版本,权限受限,如没有root权限、不能dedug、adb默认处于停用状态。
userdebug:在user版本的基础上开放了root权限和debug权限,adb默认处于启用状态,一般用于调试真机。
eng:开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置,一般用于模拟器。

执行make进行编译,使用-j指定线程数

$ make -j4

编译完成后执行emulator可启动模拟器
删除上次的编译结果

$ make clobber

参考资料

下载AOSP源码编译、调试、刷机 - 简书 https://www.jianshu.com/p/197096d3206d

标签:bin,22.04,python,repo,--,源码,usr,Ubuntu
From: https://www.cnblogs.com/fly263/p/16982647.html

相关文章

  • qBittorrent Enhanced Edition on Debian (Ubuntu, etc)
    https://github.com/c0re100/qBittorrent-Enhanced-Edition https://launchpad.net/~poplite/+archive/ubuntu/qbittorrent-enhanced sudoadd-apt-repositoryppa:......
  • 以太坊源码阅读---一笔交易从生到死(一) txpool
      markdown太难写了记不住。跑到博客园来写写今年还好不是原地踏步的一年,最近在家办公工作转成半个区块链安全工程师(依旧不热爱这个行业,但是区块链技术还是挺有意思的......
  • 互联网医院系统源码开发,互联网医院系统的发展趋势是怎样的呢?
    为了缓解患者就医难的问题,很多医院建立了互联网医院系统,不但可以利用图文、视频等方式为患者提供咨询类的医疗服务,还可以应用线上诊断,开具处方,在线药店商城拿药,快递到家等等......
  • Ubuntu环境下的cuda安装
    检查显卡驱动在终端输入nvidia-smi可以查看到当前的显卡驱动版本,如果无法查看,则说明尚未安装nvidia驱动,在软件和更新中点击附加驱动,选择对应版本的驱动即可自动下载。......
  • Vue3源码阅读梳理
    简单代码例子const{createApp,defineComponent,computed,watch,ref,reactive,effect}=Vueconstapp=createApp({components:[],template:`<div......
  • Ubuntu 中tab键不能自动补全解决方法
    1、打开文件vim/etc/bash.bashrc(root下操作)2、找到下面几行  3、去掉前面的#号  4、最后source/etc/bash.bashrc即可 ......
  • 修改内核源码绕过反调试检测(Android10)
    一、Android反调试     反调试在代码保护中扮演着非常重要的角色,虽然不能完全阻止攻击者,但是能加大攻击者的分析时间成本。目前绝大多数Androidapp都加固了,为了防......
  • 解密随机数生成器(二)——从java源码看线性同余算法
    RandomJava中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linearcongruentialformula线性同余方程(DonaldKnuth的编程艺术的3.2.1节)如果两个Random实例使......
  • Ubuntu 16.04 64位安装kafka
    在Ubuntu下安装完成kafka需要以下主要的2个步骤:1.安装jdk1.8以上版本。2.安装zookeeper.开始以上操作步骤:3.安装jdk.先下载jdk,url:https://www.oracle.com/java/t......
  • ubuntu 配置远程ssh
    需求:安装的新的ubuntu系统并不能远程使用ssh功能,需要做一些简单的设置。1.安装openssh-server sudoapt-getinstallopenssh-server2.修改配置文件 将/etc/ssh/......