上篇文章,我们基于,已经成功下载下来了的源码,这篇文章我们会接着上文,基于来编译源码。
2.1 了解源码编译的名词
- Makefile : Android平台的一个编译系统,其实就是用Makefile写出来的一个独立的项目,定义了编译的规则,实现了自动化编译。不仅要把分散在数百个git库中的代码整合起来,统一编译,而且把产物分门别类地输出到一个目录。打包成手机的Room,还可以生成应用开发时所使用的SDK,NDK等等,因此采用Makefile编写的编译系统, 也可以称之为Makefile编译系统。
- Android.mk : 是Makefile编译系统的一部分,Android.mk是Android编译环境下的一个特殊的makefile文件,他是经过Android编译系统处理的,Android.mk中定义了一个模块必要的参数,使模块随着平台编译。通俗来讲,就是告诉编译系统,以什么样的规则编译源代码,并生成对应的目标文件。
- Ninja : 致力于速度的小型编译系统,如果把其他编译系统看做是高级编程语言,那么Ninja就是汇编,使用Ninja的主要目的就是因为其编译速度非常快。
- Soong : 谷歌用来替代Makefile编译系统,负责解析Android.bp文件,并将其转化为Ninja文件。
- Blueprint : 用来解析Android.bp文件,翻译成Ninja语法的一个文件
- kati : google专门为Android开发的一个小型的项目,基于Golang和C++,目的是把Android.makefile转化为Ninja文件。
- Android.bp : 用来替换Android.mk的一个配置文件
2.1.1 Android.mk / Ninja / Soong / Blueprint / kati /Android.bp 的概念之间的联系
2.2 准备编译环境
使用build目录中的envsetup.sh脚本来初始化环境,这个脚本会引入其他的一些执行脚本。
完成初始化环境的一个操作
选择编译的目标,是envsetup.sh中定义的一个命令,用来让用户选择编译的目标
比如会显示出,这些可选的编译项
这里选项名称的含义
- build : 表示编译出的镜像,可以运行在什么环境
- aosp : 代表Android的一个开源项目
- arm/x86等 : 表示运行在ARM/X86处理器的架构上
指的是编译类型,有以下三种:
- user : 用来正式发布到市场的版本,权限受限,如没有root权限,不能 dedug,adb默认处于停用状态。
- userdebug : 在user版本的基础上开放了root权限和debug权限,adb默认处于启用状态。一般用于调试真机。
- eng :开发工程师的版本,拥有最大的权限(root等),具有额外调试工具的开发配置。一般用于模拟器。
这里我们要运行在模拟器上,所以可以选30
2.3 进行编译
然后进行编译
如果设备的内存不足或性能不足,同时执行的任务数,即可以设置的小一下,比如设置为或,只不过编译的时间会变久。
最终会在 日录生成了三个重要的镜像文件:。
- system.img:系统镜像,里面包含了Android系统主要的目录和文件,通过init.c进行解析并mount挂载到/system目录下。
- userdata.img:用户镜像,是Android系统中存放用户数据的通过init.c进行解析并mount挂载到/data目录下。
- ramdisk.img:根文件系统镜像,包含一些启动Android系统的重要文件,比如init.rc。
显示出如下信息,就表明编译成功了 :
2.4 运行虚拟机
编译完成后,执行命令运行虚拟机
3.1 进入指定目录,执行mm命令
3.2 编译成功
显示出如下信息,就表明编译成功了 :
除了Settings.odex文件,还会在日录下生生成
3.3 其他单编命令
此外还有以下命令可以进行单编 :
- mmm : 编译指定目录下的模块,不编译它所依赖的其它模块。
- mma : 编译当前目录下的模块及其依赖项。
- mmma : 编译指定路径下所有模块,并且包含依赖,
3.4 单编完成后,怎么查看效果 ?
- 方式一 : 可以在编译完成后,借助 adb install -r apk 路径直接将⽣成的 apk ⽂件安装到设备上,如果不是 APK,直接 push 对应的⽂件。
- 方式二 : 可以编译好完成后,再使⽤ make systemimage ,重新⽣成 system.img,再运⾏模拟器也可。
详见 : 单编完成后,怎么查看效果 ?
3.4.1 如何查找文件
查找文件 -> 编译产物
比如可能位于
3.5 单编显示成功后,运行安卓模拟器,并没有生效
可以带上参数
详见 : Android源码单独编译某个模块
4.1 工具
查看源码
- Android Studio for Platform
- 下载地址 : https://developer.android.google.cn/studio/platform?hl=en
4.2 repo 下载源码中途中断
使用git fetch命令:如果repo sync命令在下载过程中中断,可以尝试进入.repo/projects/prebuild目录,并执行git fetch命令来继续同步未完成的源码。这种方法适用于在下载过程中遇到网络问题或其他原因导致下载中断的情况。
4.3 参考
1. 万物互联时代的新机遇
随着万物互联时代的到来,智能应用从几十亿部手机扩展到数百亿个IoT设备,深刻改变了人们的生活方式。这为我们应用开发者带来了新的机遇和挑战。
- 机遇 : 目前正处于万物互联时代的前夕,正在经历手机单设备到全场景多设备的转变
- 挑战 : 不仅需要支持更加多样化的设备,还需要支持跨设备的协作
回归到我们移动应用开发者自身,当前的移动应用开发面临的主要挑战有:多平台适配、技术栈多样化、维护成本高等。为此,行业正向轻量化、智慧化分发和软硬件结合的AI能力方向发展,以提供更灵活、个性化和智能的服务。
而华为推出的HarmonyOS操作系统,通过“一次开发,多端部署”、“可分可合,自由流转”和“统一生态,原生智能”三大技术理念,解决了多设备支持、轻量化服务和AI能力融合的问题。
2. HarmonyOS 应用开发核心概念
HarmonyOS 支持在多种终端设备上运行应用程序,包括手机和平板等。HarmonyOS 应用有两种形态:
- 传统App:需要安装的应用程序。
- 元服务:一种轻量级的应用程序,具备免安装、随处可及、服务直达和自由流转等特性。元服务基于 HarmonyOS 平台开放能力开发,打包为 App Pack 形态,由 HarmonyOS 应用程序框架管理,支持跨设备运行。
而万能卡片是 HarmonyOS 定义的一种界面展示形式,可以将重要信息或操作前置到卡片上,减少操作层级,实现服务直达。万能卡片常用于嵌入桌面或负一屏中,支持点击后直接启动应用或元服务。
HarmonyOS 应用与元服务基于同一技术栈开发,属于同一个鸿蒙生态。开发者可以通过业务解耦将应用分解为多个元服务独立开发,再根据实际场景组合成复杂应用。
3. HarmonyOS 应用开发技术理念
上文我们说了,在万物智联时代重要机遇期,鸿蒙系统结合移动生态发展的趋势,提出了三大技术理念:一次开发,多端部署;可分可合,自由流转;统一生态,原生智能。
- 一次开发,多端部署
- 一个工程只需一次开发上架,就能够在多个设备上按需进行部署。其目的是为了支撑开发者高效地开发可以在多种终端设备上运行的应用。
- 可分可合,自由流转
- 可分可合 : 元服务,类似于微信小程序的一套东西,优势是 : 鸿蒙原生支持元服务开发,开发者无需维护多套版本,通过业务解耦将应用分解为若干元服务独立开发,按需根据场景组合成复杂应用。
- 自由流转 : 传统应用只能在单个设备内运行,当用户有多个设备且要完成多个任务时,需要在多个设备间来回切换。而应用能够在设备之间流转,不间断给用户提供服务的能力变得非常重要。鸿蒙系统提供了自由流转的能力,使得开发者可以方便地开发出跨越多个设备的应用,用户也能够方便地使用这些功能。
- 自由流转可分为跨端迁移和多端协同两种情况。他们分别是时间上的串行交互和时间上的并行交互。
- 统一生态,原生智能
- 统一生态 : 传统设备之间的互联、互通和互操作在应用层完成,难以形成生态。鸿蒙系统提供统一的分布式组件、统一的模型、统一的互联业务互操作规范等能力和规范,在操作系统层面实现鸿蒙全场景终端设备的统一互联,彻底解决设备互联的生态难题。 蒙系统通过提供 HarmonyOS SDK、IDE 和开发者服务,以及一次开发、多端部署,应用可分可合、自由流转、分布式服务等开放能力,让开发者实现一个工程、一套代码即可开发出覆盖多种设备的应用,而且通过操作系统的原生能力即可实现应用间互操作、跨设备流转等,真正做到应用开发出来即可融入整个生态。
- 原生智能
- 鸿蒙系统内置强大的 AI 能力,面向鸿蒙生态应用的开发,通过不同层次的 AI 能力开放,满足开发者的不同开发场景下的诉求,降低应用的开发门槛,帮助开发者快速实现应用智能化。
- 分层提供多样化的 AI 能力
- 场景化 AI 控件:在 Speech Kit 和 Vision Kit 中为开发者提供高阶的、场景化的 AI 解决方案。包括朗读、文档扫描、卡证识别、活体检测、AI 字幕、智能荐图、智能填充等。
- 基础 AI 控件:将 AI 能力与系统基础控件深度融合,使系统控件具有文字识别、图像分割、实体识别等 AI 能力,降低开发成本。
- AI 基础能力:提供 TTS、ASR、OCR 等 AI 基础能力。
AI 子系统:提供高性能低功耗的端侧推理和端侧学习环境,保证芯片能力高效有序提供。还提供大模型的相关能力。
- 意图框架的作用
- 意图框架提供了 HarmonyOS 系统级的意图标准体系,通过多维系统感知、大模型等能力构建全局意图范式,实现对用户显性与潜在意图的理解,并及时、准确地将用户需求传递给生态伙伴,匹配合时宜的服务,为用户提供多模态、场景化进阶场景体验。
4. 赋能组件
开发者了解和学习鸿蒙系统的各类资源,覆盖开发者全旅程,内容包含鸿蒙生态应用白皮书、视频课程、Codelabs、UX 设计指南、开发指南、API 参考、技术文章、Samples 与 FAQ。
所以我们学习鸿蒙开发,可以先看下白皮书,了解下核心理念。
然后通过HormonyOS第一课和Codelabs 快速入门HormonyOS。
在开发过程中,遇到问题,可以搜索查询官方文档和FAQ,来解决问题。
有了这些,我们就能比较快速地入门HormonyOS了。
到此这篇Ubuntu源码下载(ubuntu21.04源)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!更多鸿蒙相关的概念,可以详见
HarmonyOS简介
《鸿蒙生态应用开发白皮书》
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/qdvuejs/55329.html