免费注册!6月19-20日,「亚马逊云科技中国峰会」重磅来袭! 了解详情
写点什么

来自 Google 的新工具集,有助于开发基于 Android 的 C/C++ 应用程序

  • 2014-12-30
  • 本文字数:1645 字

    阅读完需:约 5 分钟

Fplutil 是一套来自 Google 乐趣推进实验室的程序库和工具,该套工具旨在使得开发基于 Android 的 C/C++ 应用变得更加容易。

Fplutil 由四个主要部分构成:build_all_android.py、buildutil、libfplutil 和 android_ndk_perf.py。

build_all_android.py

该构建脚本使得开发者能够通过命令行构建、安装和运行原生应用程序。该脚本可以基于 Android NDK 构建 C/C++ 应用程序,有助于实现构建的自动化,并简化开发者的编译 / 运行循环流程。

该脚本还支持通过命令行设定构建的相关设置,如设置调试模式、优化级别等等。并且它还支持多设备的同时使用。

buildutil

buildutil 是一套 Python 模块,这些模块能够简化使用编译工具 CMake 编写持续集成自动化脚本的过程。使用 Buildutil 构建 / 归档 Android 应用程序的例子如下:

  1. 第一步是创建一个 android.BuildEnvironment 实例,该实例用来执行剩余部分的构建操作,代码如下: ```
    parser = argparse.ArgumentParser()buildutil.android.BuildEnvironment.add_arguments(parser)
    args = parser.parse_args()
    env = buildutil.android.BuildEnvironment(args)
复制代码
2. 一旦该步完成,接下来要做的是使用支持构建原生(C/C++)组件的 ndk-build 和支持构建 Java 组件和 APK 的构建工具 Ant 来构建应用程序,代码如下。 `(rc, errmsg) = env.build\_all()`
3. 最后,APK 文件就可以归档为一个 ZIP 文件 `env.make\_archive([‘apks'],‘output.zip',exclude=[‘objs', ‘objs-debug'])`
除了支持基于 Android 的 NDK 构建外,该工具还支持 Linux、OS X 和 Windows 环境下的构建。
## libfplutil
[libfplutil](http://google.github.io/fplutil/libfplutil_overview.html) 包含着一个原生的 Android NDK 模块,该模块构成了两个静态程序库,即 libfplutil\_main 和 libfplutil\_print, 它们将使 C/C++ 应用程序的编写变得更加容易:
- libfplutil\_main 实现了一个 Android NativeActivity 的入口点 android\_main(),该入口点调用了传统 C/C++ 的入口点 int main(),这样就使得使用入口点 int main()(就像任何一个标准的 C 应用程序一样)编写应用程序、连接到该程序库(参考 Linking)并使其运行在 Android 上成为可能。
- libfplutil\_print 实现了一套功能的包装,这些功能能够将信息写到标准输出流。这就使得使用 printf 往终端环境进行写操作的应用程序能够将自己的输出重定向到 Android 日志中。
{1}
通过连接到 libfplutil,典型的 Hello,World 程序无需任何改变就能够在 Android 上进行编译及运行。
{1}
## android\_ndk\_perf.py
{1}
android\_ndk\_perf.py 是一个桌面工具,该工具能够帮助原生(C/C++)开发者测量基于 Android 的应用程序的 CPU 利用率,从而指导他们的优化工作。Android\_ndk\_perf 能够运行在开发者的工作站上,以收集运行在 Android 设备上应用程序的运行轨迹。应用程序的轨迹被收集后,就能够使用 Linux Perf 的命令来检测收集的数据,或者生成一个在 Web 浏览器中显示、用于检测数据的 HTML 可视化视图。
{1}
Libfplutil 可从 [GitHub](http://google.github.io/fplutil) 上下载,并且 GitHub 上还提供了 [相关文档](http://google.github.io/fplutil/index.html)。
{1}
乐趣推进实验室是一个 Google 的团队,该团队致力于推进基于 Android 和其他平台下的游戏开发。今年早些时候,他们开源了一个 2D 物理引擎 [LiquidFun 1.1](http://google-opensource.blogspot.com.es/2014/07/flowing-into-your-games-liquidfun-11.html),该引擎包含流体模拟功能。
{1}
** 查看英文原文:**[New Tools from Google to Help Developing C/C++ Applications on Android](http://www.infoq.com/news/2014/12/fplutil-cpp-android)
{1}
- - - - - -
{1}
感谢 [邵思华](http://www.infoq.com/cn/author/%E9%82%B5%E6%80%9D%E5%8D%8E) 对本文的审校。
{1}
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 [editors@cn.infoq.com](mailto:editors@cn.infoq.com)。也欢迎大家通过新浪微博([@InfoQ](http://www.weibo.com/infoqchina))或者腾讯微博([@InfoQ](http://t.qq.com/infoqchina))关注我们,并与我们的编辑和其他读者朋友交流。
2014-12-30 07:344244
用户头像

发布了 92 篇内容, 共 48.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

flutter app 打开微信小程序探究

Daniel

掌握这21个Java的核心技术点,涨薪5K起步,告别上班复制粘贴!!

Java架构师迁哥

第十一周.总结

刘璐

社区活动 | Apache Flink Meetup·深圳站,锁定 Flink 最佳实践

Apache Flink

flink

苹果A系列芯片的三年AI进化:为何要大规模升级AI算力?

脑极体

英特尔、阿里巴巴全方位深化技术创新 共同引领数智未来

E科讯

第十三周.命题作业

刘璐

2020年“有史以来”全网最全1309道BAT大厂java面试题(附答案分享)

数据库 程序员 面试 Java 分布式

甲方日常 19

句子

工作 随笔杂谈 日常

闪送,为何能从顺丰中杀出一条血路?

学习 编程 架构师

360视觉入局人脸识别:终结行业“裸奔”,“安全”是终极法则

脑极体

高并发优雅的做限流

架构师修行之路

限流算法 高并发优化

HashMap的7种循环姿势你都掌握了吗?

root

hashmap 循环效率 JDK1.8

架构师第1课作业及学习总结

小诗

LeetCode题解:144. 二叉树的前序遍历,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

深耕边缘计算 揭秘阿里云边缘云网一体化的技术实践

阿里云Edge Plus

5G 边缘计算 视频

自己实现一个简单的 DevOps 工具系列(后端篇)- 1

sinsy

Shell CI/CD

小白读了这篇JVM,直呼真香!(长篇干货预警)

Java架构师迁哥

2020 恒生 LIGHT 开发者大会,早鸟票限时开售

DT极客

虚拟币交易所搭建,数字货币永续合约平台搭建

第十二周.命题作业

刘璐

穷人也能建个人博客了——阿里云函数计算体验

KAMI

阿里云 云服务 Faas WordPress

亚马逊宣布20亿美元“气候宣言基金”首批投资企业名单

爱极客侠

阿里面试,让我说说ThreadLocal,我一口气说了四种

root

Java 多线程 ThreadLocal

谈谈力软快速开发平台B/S专业报表工具

Philips

敏捷开发 开发工具

(1)skyent VMware Workstation Pro下载与安装

休比

The Way To Go --- 切片

书旅

slice Go 语言

加强顶层设计 推动数字出版高质量发展

CECBC

区块链 数字经济 数字出版

拥抱K8S系列-08-命令行工具管理K8S集群1

张无忌

Kubernetes 运维 kubectl

开篇:开机界面设置欢迎语显示IP地址

程序饲养员

Linux __init__

坚持新媒体写作第21天了,聊聊我为什么喜欢写作

老胡爱分享

学习 写作 习惯养成 坚持 随笔杂谈 讨论写作

来自Google的新工具集,有助于开发基于Android的C/C++应用程序_DevOps & 平台工程_Sergio De Simone_InfoQ精选文章