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

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear