前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android源码编译(ubuntu16.04 64位)

android源码编译(ubuntu16.04 64位)

作者头像
李小白是一只喵
发布2020-04-24 12:55:37
1.4K0
发布2020-04-24 12:55:37
举报
文章被收录于专栏:算法微时光

image.png

目录

第一篇:android源码编译(ubuntu16.04 64位)

第二篇:编译补充(关于下载代码和内存不足问题)

编译步骤

1. 源码下载;

2. 构建编译环境;

3.编译源码;

4.运行.

编译之前首先要下载和安装repo和gitt工具。

repo和git

Google采用Git对AOSP项目进行多仓库管理.

为了方便需要,对git语句进行了封装,也就形成了repo.

创建编译文件夹

代码语言:javascript
复制
$ mkdir source
$ cd source

注意,这个文件夹所在的磁盘空余要大于100G,编译后需要很大的空间。

初始化仓库

代码语言:javascript
复制
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

使用的清华的镜像服务器。

下载代码

代码语言:javascript
复制
$ repo sync

同步的时间很长,建议晚上睡觉前去同步。大概需要几个小时。

安装JDK

AOSP开源中,主分支使用Ubuntu长期版本开发和测试的,因此也建议你使用Ubuntu进行编译,下面我们列出不同版本的的Ubuntu能够编译那些android版本:

Android版本

编译要求的Ubuntu最低版本

Android 6.0至AOSP master

Ubuntu 14.04

Android 2.3.x至Android 5.x

Ubuntu 12.04

Android 1.5至Android 2.2.x

Ubuntu 10.04

对应的sdk版本:

Android版本

编译要求的JDK版本

AOSP的Android主线

OpenJDK 8

Android 5.x至android 6.0

OpenJDK 7

Android 2.3.x至Android 4.4.x

Oracle JDK 6

Android 1.5至Android 2.2.x

Oracle JDK 5

*本次使用OpenJDK 8

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install openjdk-8-jdk

安装依赖的库

代码语言:javascript
复制
$ sudo apt-get update
$ sudo apt-get install git-core gnupg flex bison gperf build-essential
$ sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386
$ sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache
$ sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

开始编译

编译目标格式说明

编译目标的格式:BUILD-BUILDTYPE,比如上面的aosp_arm-eng的BUILD是aosp_arm,BUILDTYPE是eng.

BUILD指的是特定功能的组合的特定名称,即表示编译出的镜像可以运行在什么环境.其中,aosp(Android Open Source Project)代表Android开源项目;arm表示系统是运行在arm架构的处理器上,arm64则是指64位arm架构;处理器,x86则表示x86架构的处理器;此外,还有一些单词代表了特定的Nexus设备,下面是常用的设备代码和编译目标

代码语言:javascript
复制
$ source build/envsetup.sh
$ lunch aosp_arm64-eng
============================================
PLATFORM_VERSION_CODENAME=Q
PLATFORM_VERSION=Q
TARGET_PRODUCT=aosp_arm64
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_ARCH=arm64
TARGET_ARCH_VARIANT=armv8-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=arm
TARGET_2ND_ARCH_VARIANT=armv8-a
TARGET_2ND_CPU_VARIANT=generic
HOST_ARCH=x86_64
HOST_2ND_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-131-generic-x86_64-Ubuntu-16.04.5-LTS
HOST_CROSS_OS=windows
HOST_CROSS_ARCH=x86
HOST_CROSS_2ND_ARCH=x86_64
HOST_BUILD_TYPE=release
BUILD_ID=PI
OUT_DIR=out
============================================
$ make -j8

通过-j参数来设置参与编译的线程数量,以提高编译速度.比如这里我们设置8个线程同时编译。

需要注意的是,参与编译的线程并不是越多越好,通常是根据你机器cup的核心来确定:core*2,即当前cpu的核心的2倍。

执行成功的结果:

image.png

我这编译了四个小时。。。。

运行模拟器

代码语言:javascript
复制
$ source build/envsetup.sh
$ lunch

lunch时,选择刚才设置的目标版本。

代码语言:javascript
复制
$ emulator

运行结果:

image.png

不知道为什么是个黑屏的,不过好歹是编译没问题了。继续研究!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 编译步骤
  • repo和git
  • 创建编译文件夹
  • 初始化仓库
  • 下载代码
  • 安装JDK
  • 安装依赖的库
  • 开始编译
  • 运行模拟器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档