查看程序执行过程中所打印的log信息,用于辅助调试排除代码错误。

一、采用NDK安装包下Samples/hello-jni工程做实验

1)修改jni/hello-jni.c文件

#include <android/log.h>

__android_log_print(ANDROID_LOG_INFO, "HelloJniTag", "The value is %d", );

2)修改jni/Android.mk文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)

3)使用eclipse打开当前项目,运行测试,Debug As...

4)在eclipse的logcat监控窗口观察日志信息

二、NDK开发的一般步骤

1)启动eclipse创建android application工程;

2)创建activity应用类(可仿照HelloJni中HelloJni.java);

3)在activity应用类中加入native函数声明及调用;

     public native String  stringFromJNI();

    /* This is another native method declaration that is *not*
* implemented by 'hello-jni'. This is simply to show that
* you can declare as many native methods in your Java code
* as you want, their implementation is searched in the
* currently loaded native libraries only the first time
* you call them.
*
* Trying to call this function will result in a
* java.lang.UnsatisfiedLinkError exception !
*/
public native String unimplementedStringFromJNI(); /* this is used to load the 'hello-jni' library on application
* startup. The library has already been unpacked into
* /data/data/com.example.hellojni/lib/libhello-jni.so at
* installation time by the package manager.
*/
static {
System.loadLibrary("HelloJni1");
}

4)在命令行模式下使用javah生成jni头文件,并创建c或c++实现文件;

javah -jni -d jni -cp bin/classes:Android-20.jar  com.example.hellojni.HelloJni

5)在jni目录下创建Android.mk、Application.mk编辑脚本

#Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := hello-jni
LOCAL_SRC_FILES := hello-jni.c
LOCAL_LDLIBS := -llog include $(BUILD_SHARED_LIBRARY)
#Application.mk

APP_ABI := all

6)修改AndroidManifest.xml文件,仿照HelloJni添加工程启动的Activity配置项。

7)eclipse启动Debug As...进行调试。

  

Android NDK调试方式之一: adb logcat的更多相关文章

  1. Android NDK调试出错Unknown Application ABI, Unable to detect application ABI&#39;s的解决方式

    今天在调试Android NDK的时候,ADT的控制台报了这个错误: Unknown Application ABI, Unable to detect application ABI's 在网上查了 ...

  2. Android NDK调试C++源码(转)

    [原创文章,转载请保留或注明出处,http://download.csdn.net/download/bigmaxim/5474055] 1. 相关软件 adt-bundle-windows-x86. ...

  3. 我的Android进阶之旅------>Android使用cmd窗口进行adb logcat时出现中文乱码问题的解决办法

    今天用CMD命令进行adb logcat时显示一堆的乱码,乱码如下: C:\Users\Administrator>adb logcat -s logcat --------- beginnin ...

  4. android -------- Android Studio调试运行时ADB not responding

    最近有我朋友问我一个android studio的调试运行问题,我记得以前也是遇到过得,所以 来写一下    ADB not responding.If you'd like to retry, th ...

  5. android手机调试时不能打印Logcat日志信息

    方法: 1.在拨号界面输入:*#*#2846579#*#*  进入测试菜单界面 2.Project Menu–后台设置–LOG设置 3.LOG开关–LOG打开   LOG级别设置–VERBOSE 4. ...

  6. Android NDK工程的编译和链接以及使用gdb进行调试

    前提条件:已经安装了JDK 6.0.android SDK.NDK r9和eclipsele4.2开发环境. 推荐下载Android开发的综合套件adt-bundle-windows-x86,再下载A ...

  7. Android NDK 开发中 adb logcat 命令的使用

    一.LogCat 存储在一个叫做 circular memory buffers 的缓冲中. 平时常用的都是通过eclipse 自带的 logcat 插件查看 logcat ,其实也可以通过命令来导出 ...

  8. android 通过adb 和 ndk调试堆栈

    打开终端 , 输入以下命令, armeabi是应用编译好的.so库的路径 adb logcat|ndk-stack -sym ./armeabi/ 如果堆栈报错,会弹出报错内容. 如下: C:\Use ...

  9. Android NDK开发调试

    ndk-stack: https://developer.android.com/ndk/guides/ndk-stack?hl=zh-cn JNI开发: https://developer.andr ...

随机推荐

  1. 扩展类加载器-------改变JAVA的父优先类加载顺序

    java的类加载机制默认情况下是采用委托模型:当加载某个类时JVM会首先尝试用当前类加载器的父类加载器加载该类,若父类加载器加载不到再由当前类加载器来加载,因此这种模型又叫做“父优先”模型. 但是在实 ...

  2. Android视图SurfaceView的实现原理分析

    http://blog.csdn.net/luoshengyang/article/details/8661317

  3. Java Web程序工作原理

    Web开发的最重要的基本功能是HTTP:Java Web开发的最重要的基本功是Servlet Specification.HTTP和Servlet Specitication对于Web Server和 ...

  4. (转载)linux环境变量

    转自:http://www.cnblogs.com/growup/archive/2011/07/02/2096142.html Linux 的变量可分为两类:环境变量和本地变量 环境变量,或者称为全 ...

  5. C++基类和派生类之间的转换

    本文讲解内容的前提是派生类继承基类的方式是公有继承,关键字public 以下程序为讲解用例. #include<iostream> using namespace std; class A ...

  6. Android学习笔记:TabHost 和 FragmentTabHost

    TabHost 命名空间: android.widget.TabHost 初始化函数(必须在addTab之前调用): setup(); 包含两个子元素: 1.Tab标签容器TabWidget(@and ...

  7. DNS (二)协议

    报文字段含义: 标识字段 由客户程序设置并由服务器返回结果.客户程序通过它来确定响应与查询是否匹配. 标志字段 协商具体的通信方式和反馈通信状态随后的 4个16 bit字段说明最后 4个变长字段中包含 ...

  8. IAR 编译错解决Error[e16]: Segment NEAR_Z (size: 0x16d align: 0) is too long for segment definition. At least 0x83 more bytes needed.

    Error[e16]: Segment NEAR_Z (size: 0x16d align: 0) is too long for segment definition. At least 0x83 ...

  9. 利用Microsoft Azure Machine Learning Studio创建机器学习实例

    Microsoft Azure云服务推出机器学习的模块,用户只需上传数据,利用机器学习模块提供的一些算法接口和R语言或别的语言接口,就能利用Microsoft Azure强大的云计算能力来实现自己的机 ...

  10. MySQL 索引、视图、DML

    1.索引 索引是存放在模式(schema)中的一个数据库对象,索引的作用就是提高对表的检索查询速度, 索引是通过快速访问的方法来进行快速定位数据,从而减少了对磁盘的读写操作. 索引是数据库的一个对象, ...