Ubuntu20.4 Android-9.0.0_r46源码下载编译

2023-11-12

Ubuntu20.4 Android-9.0.0_r46源码下载编译调试

安装Ubuntu虚拟机

ubuntu镜像下载地址: https://ubuntu.com/download

官网下载地址较慢可以去 清华源,中科大源,华为,阿里源直接下载都可以

我是VM虚拟机安装,预留空间300G,4核,8G内存,正常安装虚拟机就行

配置ubuntu虚拟机环境

设置root账户 密码
sudo passwd root

安装vim,方便修改后面文件

sudo apt-get install vim

更换ubuntu更新源

打开ubuntu源文件

sudo vim /etc/apt/sources.list

打开清华源:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
复制下面的内容到/etc/apt/sources.list这个文件中

注:这个是ubuntu22.04LTS的,根据自己 的ubuntu选择对应版本的

	# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe 	multiverse
	# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted 	universe multiverse
	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted 	universe multiverse
	# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted 	universe multiverse
	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted 	universe multiverse
	# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main 	restricted universe multiverse
	deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted 	universe multiverse
	# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main 	restricted universe multiverse

	# 预发布软件源,不建议启用
	# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted 	universe multiverse
	# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main 	restricted universe multiverse


把上面的内容放到/etc/apt/sources.list中,把文件已有的内容都给注释调

更新

sudo apt-get update

sudo apt-get upgrade

更新完之后

安装git工具

sudo apt-get install git

看一下版本确定安上了

git --version

配置git,不设置在后面repo下载的时候提让你设置

git config --global user.name "xxxx"

git config --global user.email "xxxx@xxx.com"

安装curl

sudo apt install curl

下载Android源码

根据清华源的说明:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

mkdir ~/bin

PATH=~/bin:$PATH

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

这个是从google那边的的repo,建议用清华源的

curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo

chmod a+x ~/bin/repo

更换repo的源,不然使用repo的时候还会去google更新

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

初始化repo,创建存放源码的目录,因为我下载的是android-9.0.0_r46这个版本

mkdir androidsource

cd androidsource

mkdir android-9.0.0_r46

cd android-9.0.0_r46

在androidsource/android-9.0.0_r46 目录下初始化repo

root@xxxx-ubuntu:androidsource/android-9.0.0_r46# repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r46

会报这个错误:

/usr/bin/env: “python”: 没有那个文件或目录

ubuntu22.04版本已经安装的是python

root@xxxx-ubuntu:/# whereis  python3

做一个软链:

root@xxxx-ubuntu:/# sudo ln -s /usr/bin/python3 /usr/bin/python

再到androidsource/android-9.0.0_r46 执行初始化操作就可以

初始化成功后再执行拉取代码就行

清华源建议-j4 ,太慢了,根据自己的核数可以适当调大,不然会很慢很慢的,不建议太大,太大电脑吃不消,会卡死
网速较好的情况下,2小时左右 ,我的是500m宽带,半个小时左右就下载完了,源码大概90g左右

repo sync -j8

开启下载,尽量保持不要断网,关机什么操作,不然容易出现乱七八糟的一些问题,实在不幸出现了在之前的下载目录下再次执行,会继续的,不带-j8,默认是4个线程

 repo sync -j8
 

注:尤其是下载完,checkout阶段尽量不要中断,不然会有各种莫名其妙的问题
最后提示成功:

Checking out: 96% (664/687) platform/prebuilts/maven_repo/google-play-service-client-libraChecking out: 100% (687/687), done in 2m32.129s
repo sync has finished successfully.

代码下载成功

编译Android源码

代码下载完成,checkout成功后,进行源码的编译

注意:
ubuntu 20.04版本中的python版本默认是3.9的,Android9.0的版本必须使用python2.7的版本,

如果不更换前面编译没问题,后面一点会出现python的代码问题,建议早点更换,直接安装,设置默认版本就行

看这个帖子安装就行:https://blog.csdn.net/rasiel_2019/article/details/123654672

在源码 目录下执行

source ./build/envsetup.sh

之后 执行:

lunch

会出现各种版本,选择一个,之后执行make -j8 命令,8是根据自己的内核个决定的

make -j8 

之后就等待就行。
我在编译的时候出现下面的错误:

out/soong/.intermediates/frameworks/compile/mclinker/lib/Script/libmcldScript/android_x86_64_core_static/gen/lex/frameworks/compile/mclinker/lib/Script/ScriptScanner.cpp:1487:8: error: member reference type ‘std::istream *’ (aka ‘basic_istream *’) is a pointer; did you mean to use ‘->’?
yyin.rdbuf(std::cin.rdbuf());
out/soong/.intermediates/frameworks/compile/mclinker/lib/Script/libmcldScript/android_x86_64_core_static/gen/lex/frameworks/compile/mclinker/lib/Script/ScriptScanner.cpp:1490:9: error: member reference type ‘std::ostream *’ (aka ‘basic_ostream *’) is a pointer; did you mean to use ‘->’?
yyout.rdbuf(std::cout.rdbuf());

最后查找并非路径过长的原因,是因为自带的flex有问题导致的,重新编译flex就好了

cd prebuilts/misc/linux-x86/flex
    rm flex-2.5.39
    tar zxf flex-2.5.39.tar.gz
    cd flex-2.5.39
    ./configure
    make
    mv flex  ..
    cd ..
    rm flex-2.5.39 -rf
    mv flex flex-2.5.39
    

回到根目录继续就行,make -j8 就行会继续编译,已经编译好的文件不再编译,所以未编译的文件数会变少。

我的在编译过程中经常出现ubuntu的终端,编译一段时间就会自定消失了,最后发现应该是虚拟机内存设置的较少,修改虚拟机内存到16G,交换存储较少,以及Java堆栈溢出的情况。
解决方法:

1.修改虚拟机的内存到16g

2.增加交换内存空间,按照下面帖子处理

https://blog.csdn.net/qq_36758914/article/details/107117169

处理完异常继续编译,还是执行 make -j8,意外中断什么的想继续也是再次执行,不带-j8默认是4个线程,较慢。

如果和我一样出现终端莫名其妙消失了什么的,最好关闭虚拟机重新开启释放一下数据再执行。

还有一点就是编译的时候,最好挂到后台进程,把终端输出的内容写到文件中,如果意外终端或者,终端意外关闭,无法查看编译进度,以及原因,使用nohup 命令,不会的同学可以查看了解一些,这个命令很简单。

最后如果编译成功就会出现

[100% 605/605] Create vendor-qemu.img
记录了1+0 的读入
记录了2048+0 的写出
1048576字节(1.0 MB,1.0 MiB)已复制,0.00360856 s,291 MB/s
记录了95+1 的读入
记录了96+0 的写出
100663296字节(101 MB,96 MiB)已复制,0.216267 s,465 MB/s
记录了1048576+0 的读入
记录了1048576+0 的写出
1048576字节(1.0 MB,1.0 MiB)已复制,1.56277 s,671 kB/s
Creating new GPT entries.
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.
Setting name!
partNum is 0
REALLY setting name!
Warning: The kernel is still using the old partition table.
The new table will be used at the next reboot.
The operation has completed successfully.

The operation has completed successfully.就算编译成功了

成功之后,因为我这边想看一下framwork相关的代码,而且编译的是一个手机的版本,没有手机就没有刷机,后面有手机把刷机的流程补上。我是想导入AndroidStudio看一下代码,顺便修改framework代码,调试一下。

整体存储:
源代码:90G左右
编译后的产物:80G左右
安装的各个工具:30G左右
我这边总共用了:211G左右,所以虚拟机的存储空间要至少300G左右,我用的是500G的固态硬盘。直接把虚拟机建在硬盘中运行的

编译的时候有的lib无法找到 那应该就是需要安装,直接安装就行了

AndroidStudio 导入源码

已下载,并编译成功后,导入AndroidStudio 需要在根目录下执行:

source ./build/envsetup.sh

mmm development/tools/idegen

生成idegen.jar

执行成功后

./development/tools/idegen/idegen.sh

会在根目录下生成这几个文件

android.iml: 用于描述modules,包括modules路径、依赖关系,顺序设置等,一个项目可以包含多个*.iml文件
android.ipr:保存工程相关的设置,如modules和modules libraries的路径,编译器配置,入口点等

在ubuntu中安装AndroidStudio 在google中文网站上下载安装即可.

下载解压后,在bin木目录下 执行 ./studio.sh即可

之后调整一下AndroidStudio的内存大小即可。

在 setting> System Settings 好像只能选择最大3072MB,选最大就行

之后将android.ipr导入就行。

androidStudio会进行一段时间的处理,代码较多一般电脑是扛不住的。我看有人裁剪了部分依赖导入,大家可以处理一下再倒入,不然太多AndroidStudio一直在scanindex进度中

搭建android源码浏览服务

如果想快速查看粗滤的查看代码的话,建议安装这个

tomact+opengrok

opengrok:是一个web快速索引的,属于web的一个应用,需要部署在web服务器上

tomcat:部署web应用的一个服务器

opengrok 和 tomcat 依赖你已经安装的java环境 ,根据你安装的java环境下载对应的版本,在tomcat的官网查询一下你机器上
已经安装的.
tomcat与java版本查询地址:https://tomcat.apache.org/whichversion.html

一定要和Java Versions版本匹配,不然会有问题

xxxx@xxxx-ubuntu:~$ java -version 

openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

xxxxx@xxxx-ubuntu:~$ javac -version 
javac 1.8.0_312

我的版本是1.8 所以下载8.5.78的tomcat

还有opengrok 的版本也要和java版本匹配,没找到他们的匹配关系

下载地址:

https://github.com/oracle/opengrok/releases?after=1.3.6&page=14

我这边下载的是1.1-rc41

根据这个博客去安装就行

https://blog.csdn.net/m0_58169865/article/details/119103944

其中设置权限哪里 chmod 不是chomd,小白估计会粘贴复制,小心出错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu20.4 Android-9.0.0_r46源码下载编译 的相关文章

随机推荐

  • PostgreSQL配置优化

    转载请注明原文出处 http blog csdn net roddick621 PostgreSQL配置优化 PostgreSQL配置优化 硬件和系统配置 测试工具 配置文件 主要选项 测试数据 总结 硬件和系统配置 操作系统 Ubuntu
  • GVIM编辑器实现自定义配对关键字之间的跳转

    由于刚开始接触GVIM编辑器 在使用GVIM写Verilog代码的时候发现使用 命令可以实现配对括号之间的跳转 但其它的一些关键字之间却不能实现配对跳转 从而导致在代码量较大的时候常常会出现配对关键字多写或漏写的情况 很不方便 网上查阅了相
  • MMDetection新手安装使用教程(无限踩坑)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 MMDetection安装过程 1 torch torchvision的安装 2 mmdetection的安装 二 MMDetection的使用步骤 1
  • c++中的新成员——new,命名空间

    c 中的动态内存分配 优点 使用更加的方便 解决了c中有很时候没有库文件时不能申请堆内存的情况 使用 c 中是通过new关键字来进行内存空间的申请的 c 中动态内存是基于类型进行的 delete关键字用于释放 new在申请的时候可以进行初始
  • opentsdb+grafana监控环境搭建

    opentsdb是在hbase的基础上设计的时间序列数据库 安装opentsdb必须先有hbase hadoop和hbase是以集群的方式安装 如果在单台服务器上安装 下面的配置文件也是适合的 只要把相应的服务器名移除掉就可以 grafan
  • MAC地址会耗尽吗?

    有可能会耗尽 虽然目前离耗尽的日子还很远 先基本解释一下MAC地址的特点 虽然MAC地址有48位 但并非48位都是可以随便用的 就像IPv4虽然有32位 但也不是所有组合都可以使用一样 MAC地址第一字节的最低2位 bit 是标示地址类型的
  • 11.神经网络与机器学习(十)—卷积神经网络(CNN)

    1 引言 我们之前的神经网络结构都是全连接的 也就是说 每一个输入神经元的都和相邻层的每一个神经元连接 但是这种连接带来的数据量太大了 以我们之前的一个三层神经元举例 784 30 10 从输入层到隐藏层有 784 1 30 23550个参
  • 从零开始学HTML+CSS

    本文是基于b站黑马程序员的视频教程 然后总结自己的心得写的 只是自己的个人总结 如有错误 敬请指正 基于此链接最新前端开发入门教程 web前端零基础html5 css3 前端项目视频教程 哔哩哔哩 bilibili最新的web前端html5
  • python面向对象编程高级篇之枚举类Enum

    我们可以定义月份 比如 from enum import Enum Month Enum Month Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec for name member in Mo
  • 如何在opensea批量发布NFT(Goerli测试网)

    一 生成NFT图象 hashlips art engine HashLips Art Engine 是一种用于根据提供的图层创建多个不同的艺术作品实例的工具 1 安装 npm install or yarn install 2 使用 在 l
  • 微信小程序简单的信息表格的提交到数据库(新手篇)(云端数据库)

    微信小程序简单的信息表格的提交到数据库 新手专属 云端数据库 大家好 我是小陈 一名大一的编码爱好者 刚刚结束了大一的学习生活 也总结出了一点编码的经验 希望与大家一起分享 我是学习物联网的 总感觉大一的课程枯燥无味 所以索性自学了一点微信
  • 【华为OD统一考试A卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • 持续集成平台-jenkin

    CI平台诞生的背景 很多公司因为种种原因 不想使用GitHub gitlab上的CI能力 或是希望定制一些功能更加强大的CI CD工作流 这时就需要一些更专业的CI平台了 CI平有那些 github gitlab Aone 阿里巴巴 织云
  • UE5学习笔记(1)——从源码开始编译安装UE5

    目录 0 前期准备 1 Git bash here 2 克隆官方源码 3 选择安装分支 4 运行Setup bat 下载依赖文件 5 运行GenerateProjectFiles bat生成工程文件 6 生成完成 找到UE5 sln UE4
  • mysql 设置默认值_MySQL InnoDB相关参数设置

    MySQL InnoDB相关参数设置 1 InnoDB参数 MySQL目前使用的主要为InnoDB引擎 一些InnoDB引擎参数调整到合理的值将很大程度上改善数据库性能 下面将对一些重要参数做说明 2 InnoDB参数调整 2 1InnoD
  • 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目 是用于生成PDF文档的一个java类库 通过iText不仅可以生成PDF或rtf的文档 而且可以将XML Html文件转化为PDF文件 项目要使用iText 必
  • fopen()和fwrite()函数介绍及用法

    一 fopen 头文件 include
  • 服务器文件夹设置只有读写权限 IIS,iis 读写服务器的权限设置

    iis 读写服务器的权限设置 内容精选 换一换 打开FTP服务器上的文件夹时发生错误 请检查是否有权限访问该文件夹 浏览器设置了FTP防火墙 以设置IE浏览器为例 打开IE浏览器菜单 工具 gt Internet 选项 选择 高级 标签卡
  • sqlite和一般主流数据在sql语句的区别

    sql语句中经常存在根据类型查数据 有时候条件是字符型 有时候是数字 由于数据库的差异 最好在写sql语句时 同意写成带引号 比如下面 select from tb project info where 1 1 and PROJECT CO
  • Ubuntu20.4 Android-9.0.0_r46源码下载编译

    Ubuntu20 4 Android 9 0 0 r46源码下载编译调试 安装Ubuntu虚拟机 ubuntu镜像下载地址 https ubuntu com download 官网下载地址较慢可以去 清华源 中科大源 华为 阿里源直接下载都