论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
移动端开发
›
在 Android 中使用 C/C++:初学者综合指南
在 Android 中使用 C/C++:初学者综合指南
渣渣兔
金牌会员
|
2024-9-6 09:34:12
|
显示全部楼层
|
阅读模式
楼主
主题
982
|
帖子
982
|
积分
2946
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。
让我们开始吧
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
渣渣兔
金牌会员
这个人很懒什么都没写!
楼主热帖
SqlServer2012升级到SqlServer2016
事务的ACID特性
DCM: 中间件家族迎来新成员
深度干货!一篇Paper带您读懂HTAP | St ...
iOS事件传递链与响应链
(内附源码)Node.js小试——使用Node ...
arthas使用介绍
.NET for Apache Spark 入门演练
go-zero单体服务使用泛型简化注册Handl ...
SaaS软件工程师成长路径
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
网络安全
分布式数据库
前端开发
SQL-Server
DevOps与敏捷开发
程序人生
快速回复
返回顶部
返回列表