写点什么

来自 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:343928
用户头像

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

关注

评论

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

android设计模式工厂,动脑学院vip2019

android 程序员 移动开发

Android面试必问!动脑学院vip课程分享2019

android 程序员 移动开发

自定义View:布局

Changing Lin

10月月更

handlermapping作用,扔物线朱凯

android 程序员 移动开发

凌晨 12 点突发 Istio 生产事故!一顿操作猛如虎解决了

青云技术社区

云原生 Istio, kubenetes

kotlin协程原理,动脑学院vip

android 程序员 移动开发

android设计模式书籍,扔物线朱凯

android 程序员 移动开发

Android黑科技实现原理揭秘,推荐学习

android 程序员 移动开发

apm性能监控系统,rxjava扔物线

android 程序员 移动开发

app启动速度优化,享学课堂架构师vip

android 程序员 移动开发

Android经典面试,享学三期Android架构师

android 程序员 移动开发

android路由跳转,动脑学院怎么样

android 程序员 移动开发

Android通用流行框架大全,大厂面试题汇总

android 程序员 移动开发

鸿蒙小游戏-数字华容道 自定义组件的踩坑记录

爱吃土豆丝的打工人

鸿蒙 HarmonyOS 自定义组件 小型游戏

flutter技术解析与实战!动脑学院视频百度云

android 程序员 移动开发

android适配器ui,享学课堂Android架构师二期

android 程序员 移动开发

Android面试相关文章及Github学习资料,总结到位

android 程序员 移动开发

Android面试题目,享学三期Android架构师

android 程序员 移动开发

边缘计算融入云计算架构的优缺点

浪潮云

云计算运维

Android跨进程通信导论,作为Android开发程序员

android 程序员 移动开发

android路由实现,android开发视频百度网盘

android 程序员 移动开发

2021云栖大会,博睿数据携手阿里云共拓云原生“可观测”最佳实践

博睿数据

flutter音视频开发,动脑学院vip2019

android 程序员 移动开发

Android进阶学习资料,扔物线学堂

android 程序员 移动开发

零代码的多方面解读

低代码小观

低代码 零代码 开发工具 开发平台 无代码

2021年9月券商App行情刷新及交易体验评测报告

博睿数据

GitHub标星1w的安卓架构师必备技能,腾讯T2手把手教你

android 程序员 移动开发

Android面试必刷的200道真题,全网独家首发

android 程序员 移动开发

Android面试题及解析,android开发视频百度网盘

android 程序员 移动开发

Android高级面试题!android享学课堂vip课程下载

android 程序员 移动开发

hashmap为什么是线程不安全的,动脑学院百度网盘

android 程序员 移动开发

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