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文件中描述的比较清楚,可以方便的操作字符串 ,比如

[cpp]  view plain copy
  1. extern void*  memccpy(void *, const void *, intsize_t);  
  2. extern void*  memchr(const void *, intsize_t);  
  3. extern void*  memrchr(const void *, intsize_t);  
  4. extern int    memcmp(const void *, const void *, size_t);  
  5. extern void*  memcpy(void *, const void *, size_t);  
  6. extern void*  memmove(void *, const void *, size_t);  
  7. extern void*  memset(void *, intsize_t);  
  8. extern void*  memmem(const 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值