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

相关文章

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

JAVA虚拟机中 -D, -X, -XX ,-server参数使用

《JAVA虚拟机中-D,-X,-XX,-server参数使用》本文主要介绍了JAVA虚拟机中-D,-X,-XX,-server参数使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录一、-D参数二、-X参数三、-XX参数总结:在Java开发过程中,对Java虚拟机(JVM)的启动参数进

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时

Go中sync.Once源码的深度讲解

《Go中sync.Once源码的深度讲解》sync.Once是Go语言标准库中的一个同步原语,用于确保某个操作只执行一次,本文将从源码出发为大家详细介绍一下sync.Once的具体使用,x希望对大家有... 目录概念简单示例源码解读总结概念sync.Once是Go语言标准库中的一个同步原语,用于确保某个操

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

怎么关闭Ubuntu无人值守升级? Ubuntu禁止自动更新的技巧

《怎么关闭Ubuntu无人值守升级?Ubuntu禁止自动更新的技巧》UbuntuLinux系统禁止自动更新的时候,提示“无人值守升级在关机期间,请不要关闭计算机进程”,该怎么解决这个问题?详细请看... 本教程教你如何处理无人值守的升级,即 Ubuntu linux 的自动系统更新。来源:https://