`
rayloo
  • 浏览: 86662 次
  • 性别: 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来写常规应用相信更有竞争力。

分享到:
评论

相关推荐

    androidndk开发实战

    总的来说,这个资源包为Android NDK开发提供了一个全面的学习路径,从环境搭建到实际应用,再到高级技巧,一步步引导开发者深入理解并熟练掌握NDK编程。通过实践这些文档中的内容,开发者可以提升其在Android平台上...

    android ndk开发实例代码

    Android NDK是一个重要的工具集,它允许开发者在Android应用中使用原生代码,如C++和...通过这个"HelloNdk"实例,开发者可以逐步学习并掌握Android NDK开发的基本流程和技巧,进一步提升Android应用的性能和功能。

    Android NDK 开发的官方文档(android ndk dev guide)

    总的来说,Android NDK开发涉及广泛的系统知识和编程技巧,从安装配置到实际编程,都需要开发者具备扎实的C/C++基础和对Android系统的深入理解。通过阅读官方文档(如"android_ndk_dev_guide"中的documentation.html...

    《Android NDK 开发教程 - v1.0》PDF

    学习NDK开发,你需要掌握以下关键知识点: 1. **环境配置**:安装和配置NDK,设置Android Studio以支持原生开发,创建CMake或ndk-build脚本来构建本地库。 2. **JNI(Java Native Interface)**:理解JNI的概念,...

    Android NDK 开发入门例子

    理解JNI机制、熟悉CMake和Android Studio的C++支持是进行NDK开发的基础。此外,需要注意内存管理、多线程以及性能优化等问题,以确保应用的质量和效率。通过不断实践,你可以掌握更多的NDK技巧,开发出更具特色的...

    Android NDK基础开发

    Android NDK(Native Development Kit)是Google为Android平台提供的一款工具集,允许开发者在Android应用中使用C++和其它...不过,NDK开发也需要对C/C++编程和Android系统有深入理解,实践中应结合具体需求灵活运用。

    android ndk 开发实例

    ### Android NDK 开发实例详解 #### 一、概述 Android NDK (Native Development Kit) ...在未来的学习过程中,可以尝试更复杂的示例,如 OpenCV 图像处理、OpenGL ES 渲染等,来进一步掌握 Android NDK 的使用技巧。

    非常详细的android ndk开发样例

    6. **调试技巧**:NDK开发过程中,调试是个挑战。NDK提供了一些工具,如gdbserver,可以帮助开发者在本地或设备上进行调试。理解如何设置断点,查看变量状态,以及如何处理内存泄漏等问题是必不可少的。 7. **错误...

    Android NDK R9环境配置 开发教程 NDKhi工程源码)

    NDK开发还包括对C/C++代码的调试。Android Studio提供了对原生代码的调试支持,你可以设置断点,检查变量,甚至步进到C/C++代码中。此外,注意跨语言的内存管理和异常处理,因为在Java和C/C++之间传递对象时可能会...

    android ndk-stack使用说明。

    通过以上步骤,我们可以有效地利用`ndk-stack`工具来解决在Cocos2d-x、JNI以及Android NDK开发过程中遇到的调试难题。尤其是在处理C/C++代码时,能够更加直观地看到函数调用的流程,这对于定位bug具有极大的帮助。...

    android-ndk-r23b-linux.zip

    Android NDK(Native Development Kit)是Google为Android平台提供的一套用于开发原生代码的工具集,它允许开发者使用C++和其他本地语言编写应用程序,进而利用Android设备的硬件特性,提高应用的性能和效率。...

    android ndk开发(从环境搭建到运行demo全教程)

    在`android NDK开发2 运行示例.docx`中,你会学习如何编写C/C++代码并调用它。通常,你将在JNI接口中定义Java和C/C++的交互点。例如,创建一个Java方法声明为`native`,然后在C/C++代码中通过`JNIEXPORT`和`JNICALL`...

    Android NDK Beginner’s Guide第五章源码

    本章节我们将深入探讨《Android NDK Beginner’s Guide》第五章中的源码,以帮助读者掌握NDK开发的基础知识。 1. **NDK基础知识** - NDK的核心作用是提供一个环境,使得开发者可以利用原生C/C++语言进行Android...

    android NDK 入门项目 实战 详细文档

    6. **性能优化**:NDK开发的一个重要目标是提高性能。这可能涉及内存管理优化、多线程编程、算法优化等。理解Android的内存模型和线程模型对优化至关重要。 7. **安全考虑**:虽然原生代码能提供更高的性能,但也会...

    android-image-filter-ndk,使用android ndk在c中处理位图的android示例项目.zip

    《Android NDK与C语言实现图像过滤器的详解》 Android NDK(Native Development ...通过学习该项目,开发者不仅可以掌握Android NDK的使用,还能深入理解图像处理的原理和技巧,为开发高性能的图像应用打下坚实基础。

    MASTERING_ANDROID_NDK

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

    Android-NDK.rar_NDK_android_android ndk

    Android NDK 是一款重要的开发工具,它允许Android应用开发者使用C和C++语言进行原生代码编程。在Android平台上,通常我们使用Java进行应用程序开发,但NDK提供了一种方式来利用高性能、低级别的原生代码,这对于...

    Android NDK JNI 开发

    Android NDK JNI 开发是移动应用开发中的一个重要领域,它允许开发者使用C++和其他原生语言来编写部分Android应用程序,从而提升性能、利用硬件加速以及复用现有的C/C++库。JNI(Java Native Interface)是Java平台...

    细说Android 4.0 NDK编程 源码

    总之,《细说Android 4.0 NDK编程 源码》这本书涵盖了NDK开发的多个重要方面,从基础概念到高级技巧,再到实战源码解析,是学习Android原生编程不可多得的参考资料。对于希望提升Android应用性能,或者需要利用C/C++...

Global site tag (gtag.js) - Google Analytics