IT评测·应用市场-qidao123.com
标题:
在 Android 中使用 C/C++:初学者综合指南
[打印本页]
作者:
渣渣兔
时间:
2024-9-6 09:34
标题:
在 Android 中使用 C/C++:初学者综合指南
Java 作为一种编程语言,具有许多精良的功能,使其成为应用步伐开发的首选语言。它独立于平台(因为捏造机执行)、JIT 编译、多线程支持以及为步伐员提供的富有体现力的简单语法。由于其与平台无关的特性,Java 包可以跨 CPU 架构移植,这使得库开发变得更加轻易,从而增强了插件、构建工具和实用步伐包的整体生态系统。
功能数目与性能之间恰恰存在权衡。像汇编这样的语言具有最少的内存和执行开销,但从步伐员的角度来看,其功能数目也最少。在条理结构中向上移动,C 和 C++ 等语言提供了一组精良的功能,同时保持更接近底层硬件。在它们之上的是Java和Python等语言,它们选择通过使用捏造机来完全消除平台依靠。用这些语言编写的步伐有巨大的开销,但却是开发职员的天堂。
JVM 现在可以访问共享库中公开的函数,而且操纵系统根据需要执行它们。
一、为什么有人在他们的 Android 项目中需要 C/C++ 支持?
正如我们上面的讨论,在我们的系统中,性能比开发职员友好性更紧张,这将我们的重点从 Java/Kotlin 转移到了“原生语言”(C/C++)。让我们通过一些示例来了解
本机
代码的作用及其性能改进,
图形、渲染和交互
:在 Jetpack Compose 等高级框架中,开发用户界面并使其看起来有吸引力似乎是小菜一碟。在像素级别,需要举行数千次盘算来盘算阴影的强度、闪电模式和物体的纹理。这些盘算涉及大量使用线性代数结构,例如向量和矩阵及其各自的运算。处置处罚触摸交互,包括处置处罚移动屏幕上触摸传感器的原始坐标,以及区分单击、双击、拖动或滑动手势,也需要大量盘算。这些盘算可以用更接近硬件的语言更好地执行,从而可以执行额外的优化。
呆板学习
:C/C++ 的作用很轻易理解,因为 PyTorch 和 TensorFlow 等盛行框架的代码库的主要部分是用 C/C++ 编写的。TensorFlow 使用用 C++ 编写的操纵,并提供包装器(接口)来使用 Python 代码中的这些操纵。C++ 的接纳是显而易见的,作为线性代数运算的代码库,CUDA(用于并行处置处罚)是多年前编写的,而且已经经过多年的考验。使用Python作为TensorFlow的接口之一,只是为了让C/C++的东西看起来整洁,而且对于非编程用户来说也很轻易。
图:TensorFlow 源代码片断,表现了 arg_max 操纵的实现。
图片参考:作者截图自
GitHub上TensorFlow官方源代码
许多此类系统在牺牲可读性和其他一些因素的环境下维护性能。接下来,我们将简短讨论指令集架构 (ISA) 以及步伐执行如何随着 CPU 架构的变化而变化。
二、了解 C++ 如何集成到 Android 应用步伐中
图 1:Android 应用步伐如何使用 C++ 源代码的描述。
如上图所示,描述了 Android 中 C/C++ 代码的使用,此中存在两个独立的构建过程,一个用于 C/C++ 代码,另一个用于 Java/Kotlin 代码。在本博客中,我们将重点关注 C/C++ 代码构建过程,并了解代码如何与 JVM 通信以举行函数调用。
我们起首扼要概述一下 C/C++ 和 Java 步伐的编译方式,主要强调 C/C++ 编译的平台特定性。接下来,我们讨论 JNI,它充当 C/C++ 和 Java 代码之间的粘合剂。我们竣事对 CMake、共享库和 ABI 的讨论,它们是构建过程的最底层组件。
正如 Reddit 用户建议的那样pjmlp,Android 不使用 JVM 在设备上运行应用步伐。它有自己的运行时,ART(Android RunTime)继续了 Dalvik 及其自定义字节码 DEX。
让我们开始吧
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4