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

相关文章

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

ubuntu如何部署Dify以及安装Docker? Dify安装部署指南

《ubuntu如何部署Dify以及安装Docker?Dify安装部署指南》Dify是一个开源的大模型应用开发平台,允许用户快速构建和部署基于大语言模型的应用,ubuntu如何部署Dify呢?详细请... Dify是个不错的开源LLM应用开发平台,提供从 Agent 构建到 AI workflow 编排、RA

ubuntu系统使用官方操作命令升级Dify指南

《ubuntu系统使用官方操作命令升级Dify指南》Dify支持自动化执行、日志记录和结果管理,适用于数据处理、模型训练和部署等场景,今天我们就来看看ubuntu系统中使用官方操作命令升级Dify的方... Dify 是一个基于 docker 的工作流管理工具,旨在简化机器学习和数据科学领域的多步骤工作流。

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程

《双系统电脑中把Ubuntu装进外接移动固态硬盘的全过程》:本文主要介绍如何在Windows11系统中使用VMware17创建虚拟机,并在虚拟机中安装Ubuntu22.04桌面版或Ubunt... 目录一、首先win11中安装vmware17二、磁盘分区三、保存四、使用虚拟机进行系统安装五、遇见的错误和解决

Android实现一键录屏功能(附源码)

《Android实现一键录屏功能(附源码)》在Android5.0及以上版本,系统提供了MediaProjectionAPI,允许应用在用户授权下录制屏幕内容并输出到视频文件,所以本文将基于此实现一个... 目录一、项目介绍二、相关技术与原理三、系统权限与用户授权四、项目架构与流程五、环境配置与依赖六、完整

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

CentOS和Ubuntu系统使用shell脚本创建用户和设置密码

《CentOS和Ubuntu系统使用shell脚本创建用户和设置密码》在Linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设置密码,本文写了一个shell... 在linux系统中,你可以使用useradd命令来创建新用户,使用echo和chpasswd命令来设