`
rayloo
  • 浏览: 84002 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android NDK开发技巧二

阅读更多

Android NDK对于我们的作用和基本常识在 Android NDK开发技巧一 中已经讲明了,今天谈论下实战的技巧吧

1. 在JNI中打印Logcat,首先我们需要在cpp文件中加入 #include <android/log.h> 这个头文件,NDK有关android自己的就给我们这个唯一的文件log.h,其他的需要我们自己hack diy来解决。

jstring jlog; //从Java传来需要打印的字符
jboolean isCopy;
const char * szLog = (*env)->GetStringUTFChars(env, jlog, &isCopy); //将java的unicode字符转化为utf8字符

__android_log_print(ANDROID_LOG_WARN, “android123-cwj”, "from ndk = %s", szLog); //打印logcat

(*env)->ReleaseStringUTFChars(env, jlog, szLog); // 释放内存
}

上面这段比较简单,其中使用__android_log_print函数打印Logcat,第一个参数为log的level,在log.h头文件中定义了 ANDROID_LOG_UNKNOWN = 0、 ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT

等类型,第二个参数为tag标签,第三个为需要打印的字符。整个例子比较简单,但方便了很多调试。

2. Android NDK给我们提供了zlib库的支持,可以通过本地的方法解压缩zip文件。

3. 有关C语言运行库的一些方法,在string.h文件中描述的比较清楚,可以方便的操作字符串 ,比如

相信这些肯定比Java效率快上不少,至少有指针用,在处理字符串等方面效率可能是几百倍几千倍的提升。

4. NDK在I/O处理上会更有效率,比如提供了Socket和File的本地读写,在socket.h文件中包含了标准Socket的各种方法,可以处理 TCP和UDP报文,这样和C++服务器的互通,通过NDK解决,不用再为Java的类型字节对齐以及编码而烦恼。

5. 当然了,对于我们开发最爽的还要属OpenGL ES了,在NDK中所有GL的函数,可以在gl.h和glext.h中查找到,最新版本NDK支持最新的OpenGL ES版本,可以方便移植iPhone上的3D游戏了。Android123已经成功将Cube例子用NDK改造运行,确实比Java来的更方便和亲切。

最后还是一句话,对于Java这种解释型语言不爽的Android开发者NDK才是你最明智的选择,如果你有C/C++的基础,可以解决很多开源项目的移植工作,实现高级的功能,将Java程序员甩在脑后面,开发出色的UI,完全可以拍拖View的舒服,让OpenGL来写常规应用相信更有竞争力。

分享到:
评论

相关推荐

    Android高级开发实战UI、NDK与安全

    其次对Android中的基础UI和高级UI的开发技巧进行了全面、透彻的讲解,接着对NDK的各个知识点进行了深入的剖析,并结合源码对其原理进行深入的分析。最后结合两大案例,让读者掌握企业中NDK开发的相关流程,以及在...

    MASTERING_ANDROID_NDK

    相反,我将总结一些非常有用的NDK技术和我在项目中使用的技巧。希望这些提示对于想要构建一些实用项目而不是玩具项目来学习NDK的人来说非常有用。因此,目标读者是中型或高级 Android开发人员。本文包含两部分: 第...

    Android开发权威指南

    并将重要的知识点和开发技巧以“多学一招”、“扩展学习”、“技巧点拨”等的活泼形式呈现给读者。在程序实例的讲解方面,主要将实例安插在Android开发的精髓知识章节,这为读者学习与实践结合提供了很好的指导。 ...

    Android和PHP开发最佳实践第2版(高清带详细目录书签)Pdf版及epub电子书版

    此外,书中还介绍了AndroidNDK的开发以及Android游戏开发的相关内容,包括OpenGL的使用、流行游戏引擎Cocos2d-x和Unity3D。本书适合所有对Android和PHP技术有兴趣的读者。不管是客户端还是服务端的开发者,都可以从...

    android开发资料大全

    Android开发开发技巧之 EditText 属性、 ProgressBar 各种样式大全 android用户界面之EditText教程实例汇 android用户界面之ListView教程实例汇 android用户界面之Toast教程实例汇 android用户界面之AlarmManager...

    Android和PHP开发最佳实践

    此外,本书还介绍了Android NDK的开发以及Android游戏开发的相关内容,包括OpenGL的使用、流行游戏引擎Cocos2d-x和Unity 3D。 本书适合于所有对Android和PHP技术有兴趣的读者。不管是客户端还是服务端的开发者,都...

    Android 开发电子书_4

    15个Android很有用的代码片段、Android_GPS架构分析、android_JNI编程_一些技巧、Android_NDK开发实例、Android_RIL层剖析(官方翻译)、Android的Message机制(简单小结)、Android的主题和风格介绍、Android日历完整...

    [Android开发权威指南].李宁.扫描版.pdf

    并将重要的知识点和开发技巧以“多学一招” “扩展学习” “技巧点拨”等的活泼形式呈现给读者 在程序实例的讲解方面 主要将实例安插在Android开发的精髓知识章节 这为读者学习与实践结合提供了很好的指导 ...

    Android UI界面开发源码2

    讲解了Windows和Linux操作系统下安装开发Android所需的工具集及...其次对Android中的基础UI和高级UI的开发技巧进行了全面、透彻的讲解, 接着对NDK的各个知识点进行了深入的剖析, 并结合源码对其原理进行深入的分析。

    Android开发之Android.mk模板的实例详解

    关于Android NDK开发的文章已经比较多了,我的博客中也分享了很多NDK开发相关经验和技巧,今天简单写了一个 Android.mk 的示例模板,供初学者参考。  本模板主要给大家示例 Android NDK 开发中的如下几个问题:  1...

    Android开发权威指南源码

    并将重要的知识点和开发技巧以“多学一招”、“扩展学习”、“技巧点拨”等的活泼形式呈现给读者。在程序实例的讲解方面,主要将实例安插在Android开发的精髓知识章节,这为读者学习与实践结合提供了很好的指导。

    Android UI界面开发源码1

    讲解了Windows和Linux操作系统下安装开发Android所需的工具集及...其次对Android中的基础UI和高级UI的开发技巧进行了全面、透彻的讲解, 接着对NDK的各个知识点进行了深入的剖析, 并结合源码对其原理进行深入的分析。

    android精品源码

    Android_NDK开发实例.doc Android_RIL层剖析(官方翻译).doc Android与JUnit深入浅出.pdf Android中文翻译组——Android中文API合集(4).pdf Android内存泄露调试.pdf android写的google map api 应用.zip Android...

    Android高薪之路:Android程序员面试宝典 李宁

    1 3 2 Android开发环境的使用 第2章 布局 2 1 Android中的布局 2 2 布局使用技巧 2 2 1 FrameLayout布局 2 2 2 LinearLayout布局 2 2 3 RelativeLayout布局 2 2 4 TableLayout布局 2 2 5 AbsoluteLayout布局 2 2 6 ...

    Android应用测试与调试实战

    本书是Android应用测试与调试领域...第二部分为调试技术篇(第12~16章),详细讲解了Android应用调试所需要的各种工具的使用、操作日志的分析、内存日志的分析,以及多线程应用HTML 5 应用和NDK 应用的调试方法和技巧。

    Android特刊 Ophone

    【eoeAndroid特刊】第一期: Andriod 1.5 SDK简介 【eoeAndroid特刊】第二期: 图像处理篇 【eoeAndroid特刊】第三期:Android Market及...【eoeAndroid特刊】第八期: 开发技巧 【eoeAndroid特刊】第八期 数据存储操作

    Android开发范例

    本书涵盖的内容相当丰富,从基本的控件使用、数据持久化到相对高级的NDK、Renderscript 开发都有比较详细的介绍,基本可以满足大多数开发者的需求。女1果结合AndroidAPIDemo中的范例一起使用,效果则更好。如1果你想...

Global site tag (gtag.js) - Google Analytics