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上打不开GitHub的完整解决方法

《在Ubuntu上打不开GitHub的完整解决方法》当你满心欢喜打开Ubuntu准备推送代码时,突然发现终端里的gitpush卡成狗,浏览器里的GitHub页面直接变成Whoathere!警告页面... 目录一、那些年我们遇到的"红色惊叹号"二、三大症状快速诊断症状1:浏览器直接无法访问症状2:终端操作异常

Ubuntu向多台主机批量传输文件的流程步骤

《Ubuntu向多台主机批量传输文件的流程步骤》:本文主要介绍在Ubuntu中批量传输文件到多台主机的方法,需确保主机互通、用户名密码统一及端口开放,通过安装sshpass工具,准备包含目标主机信... 目录Ubuntu 向多台主机批量传输文件1.安装 sshpass2.准备主机列表文件3.创建一个批处理脚

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja

Nginx屏蔽服务器名称与版本信息方式(源码级修改)

《Nginx屏蔽服务器名称与版本信息方式(源码级修改)》本文详解如何通过源码修改Nginx1.25.4,移除Server响应头中的服务类型和版本信息,以增强安全性,需重新配置、编译、安装,升级时需重复... 目录一、背景与目的二、适用版本三、操作步骤修改源码文件四、后续操作提示五、注意事项六、总结一、背景与

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配