VMware fusion下ubuntu(16)虚拟机编译安卓源码笔记

2024-08-31 13:58

本文主要是介绍VMware fusion下ubuntu(16)虚拟机编译安卓源码笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前两天刚刚编译成功了android源码,历尽九九八十一难。因为过程艰苦,不想就这么遗忘,所以写出来与大家共享,希望为后来者提供借鉴。

我开发的环境是mac os10.12.3,vmware fusion8.1.1,ubuntu16.04.2。

环境搭建

关于vmware fusion的安装我就不想说什么了,因为实在太简单了。但是在安装ubuntu的时候一定要注意,创建好虚拟机以后首先要设置一下硬盘容量。我分了55GB给ubuntu,等到安装好一系列插件以后发现还剩22GB,等到编译完成只剩下了1.9GB空间,这样比较危险,因为一旦编译中途硬盘容量不够想要扩容是一件非常麻烦的事。笔者尝试了几次,没有成功,就重新创建的虚拟机(当然也可以重新创建硬盘然后挂载到虚拟机上)。另外一点,笔者22GB仍然能成功编译的原因也是因为mac系统针对空间做了优化,但这个过程时比较耗时的,笔者编译了6个小时左右;同事编译的时候分配了100GB,只用了2个小时就完成了,因此如果硬盘空间足够,建议硬盘空间给大点。其次就是内存至少8G,笔者第一次编译的时候中途报出异常,说内存不够用,无奈重新安装的虚拟机。插一句题外话:在mac本上我没有遇到虚拟机网络的问题,但是在windows编译的时候虚拟机的网络设置应该设置为桥接的方式,这样虚拟机就相当于网络上一台独立的计算机,拥有自己的ip地址,真机和虚拟机才可以互相访问。

编译前的准备

1 编译安卓源码需要很多的插件,如果在编译过程中遇到问题再安装肯定会搞的焦头烂额。因此最好的选择是在编译之前就尽可能多的安装插件,宁滥勿缺。至于都需要安装哪些插件,读者可点击下方的链接:http://www.jianshu.com/p/6c2de181d83a。这里请一定注意,编译源码使用的是openjdk,具体版本根据编译的版本决定。如果不知道应该安装什么版本,可以直接编译,如果版本不合适终端会有提示。

2 安装vmware tools。vmware tools可以实现虚拟机与真机共享剪切板的功能,这样在真机上搜到的大量命令就不用手敲了,真的很方便。安装方法如下https://jingyan.baidu.com/article/1974b289b813dcf4b1f77411.html

3 开启ssh服务。在编译之前需要上传安卓源码文件或者其他的文件,笔者用的Filezilla,但是如果虚拟机不开启ssh服务的话Filezilla是无法连接上虚拟机的。ssh服务开启方法如下:https://jingyan.baidu.com/article/00a07f38a5c05482d128dc5f.html

编译

即使环境没问题在编译过程中还是会遇到各种各样的问题,望诸君做好心理准备,下面为大家奉上我在编译过程中遇到的几个主要问题。

1  如果提示“无法定位软件包”,可以打开软件包所在的目录(apt-get下载的软件安装包保存在/var/cache/apt/archives目录下),用一个命令dpkg -i filename.deb手动安装软件包。

2 安装build-essential插件时提示依赖问题,可以按照如下步骤解决:

(1) sudo apt-get remove libdpkg-perl

(2) sudo apt-get install libdpkg-perl

(3)sudo apt-get install build-essential

3 安装libwxsmithlib-dev时提示“正试图覆盖...”的错误(其实不局限于这一款插件)

参考如下博客http://blog.csdn.net/xanxus46/article/details/8020369

4 报错:make: *** [out/host/Linux-x86/obj/lib/libart.so] Error 1

解决方案一:参考如下博客http://blog.csdn.net/haohaojian/article/details/54837177

解决方案二:在/art/build/Android.common_build.mk中,找到

# Host.
ART_HOST_CLANG := false
ifneq ($(WITHOUT_HOST_CLANG),true)# By default, host builds use clang for better warnings.ART_HOST_CLANG := true
endif

改成

# Host.
ART_HOST_CLANG := false
ifeq ($(WITHOUT_HOST_CLANG),false)# By default, host builds use clang for better warnings.ART_HOST_CLANG := true
endif
如果仍然没有解决问题,可以尝试在根目录下执行 cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

PS:笔者利用方案二解决了问题。

结语

如果连续编译了一个小时还没报错,那你就可以偷着乐了,因为基本上没啥问题了。如果再出现问题也是小问题,两分钟搞定。由于笔者比较着急,编译过程中没有截图,因此文中用了很多链接,请见谅。如果觉得写的还可以,麻烦点一下顶,您的支持是我写作的动力,谢谢~。



这篇关于VMware fusion下ubuntu(16)虚拟机编译安卓源码笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1124101

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

Spring 中 BeanFactoryPostProcessor 的作用和示例源码分析

《Spring中BeanFactoryPostProcessor的作用和示例源码分析》Spring的BeanFactoryPostProcessor是容器初始化的扩展接口,允许在Bean实例化前... 目录一、概览1. 核心定位2. 核心功能详解3. 关键特性二、Spring 内置的 BeanFactory

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM