index:
NDK 编译和使用静态库、动态库
jni头文件生成
在NDK的Nactive代码中使用Android Log的方法
分析NDK crash的堆栈信息
ndk-gdb 调试方法
NDK 编译和使用静态库、动态库
太复杂,见新文章:http://android开发 NDK 编译和使用静态库、动态库
jni头文件生成:
1. 声明Java Native接口。(定义Java Native接口可以在Android项目的主类里声明,也可以通过使用独立的类来声明。)
static { System.loadLibrary("libxxx"); }
public native void init()
2. 编译java代码。
javah -classpath $(BIN_PATH) com.x.y.z.classname
3. 然后即可在当前路径看到com_x_y_z_classname.h头文件,实现它就ok。
注意:$(BIN_PATH) 指的是class编译后bin的位置,对于android开发而言,一般是$project/bin/下面。
在NDK的Nactive代码中使用Android Log的方法
1.在mk文件加入:
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
2.在cpp文件加入:
#include <android/log.h>
#define LOGI(...) __android_log_print(ANDROID_LOG_DEBUG, "keymatch", __VA_ARGS__)
3.使用:
LOGI("some log here, %s,%d",__FILE,__LINE__);
分析NDK crash的堆栈信息
1 google提供了一个python脚本,可以从http://code.google.com/p/android-ndk-stacktrace-analyzer/ 下载这个python脚本,然后使用 adb logcat -d > logfile导出 crash 的log, 使用 arm-eabi-objdump 位于build/prebuilt/linux-x86/arm-eabi-4.2.1/bin下面把so或exe转换成汇编代码,如:arm-eabi-objdump -S mylib.so > mylib.asm, 使用脚本 python parse_stack.py <asm-file> <logcat-file>
2 直接使用NDK下面的 arm-eabi-addr2line (推荐)
例如:arm-eabi-addr2line -C -f -e libxxx.so 0x##### (0x#####是address输出日志中最上面的pc值,可以回溯最终函数调用顺序)
ndk-gdb 调试方法
1 AndroidManifest.xml <application>包含android:debuggable = "true"
2 执行ndk-build NDK_DEBUG=1
3 在java代码调用c之前加一个断点,然后在gdb命令行加b ***.c:main
断点加入方法android.os.Debug.waitForDebugger();
4 执行ndk-gdb
ndk-gdb --start --force --verbose 显示更多信息,用于查看步骤中哪里出错。
分享到:
相关推荐
总之,Android NDK是Android开发中的一个重要工具,它扩展了Android应用开发的可能性,为高性能计算和利用现有C/C++代码库提供了途径。通过“android-ndk-r26b-windows.zip”,Windows用户可以方便地获取并开始他们...
总结来说,Android NDK是Android开发中的重要组成部分,尤其对于需要高性能计算或者复用C/C++代码的应用场景,它的使用能够极大地提升开发效率和应用性能。然而,使用NDK也需要开发者具备C/C++编程基础,以及对JNI和...
Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C/C++开发工具集。这个"android-ndk-r23b-windows.zip"压缩包包含了NDK的第23个版本,专为Windows操作系统设计。NDK是Android应用...
Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的C和C++开发工具集。这个压缩包“android-ndk-r25b-windows.zip”包含了NDK的第25个版本,专为Windows操作系统设计。NDK的主要功能...
总的来说,Android NDK是Android开发中的一个重要组成部分,它为高性能和低级硬件交互提供了可能性。然而,使用NDK也会增加应用的复杂性,比如内存管理、调试难度以及对多平台支持的挑战。因此,开发者应根据项目...
总结起来,Android NDK是Android开发中的一个重要工具,它扩展了Android应用的开发能力,允许开发者利用C/C++的优势,同时也带来了更高的性能和灵活性。在macOS环境下,"android-ndk-r26b-darwin.zip"为开发者提供了...
Android NDK,全称为Native Development Kit,是Google提供的一款用于Android平台的开发工具,它允许开发者使用C++和其他原生编程语言编写应用的部分或全部代码。这个“android-ndk-r26b-linux.zip”文件是NDK的一个...
总的来说,Android NDK是Android开发中的一个重要工具,它为开发者提供了更多的灵活性和性能提升的可能性,同时也带来了更多复杂性,需要开发者有扎实的C/C++基础和对Android系统内部机制的理解。
### 非常强大的Eclipse中Android NDK开发环境的配置说明 #### 一、概述 本文档将详细介绍如何在Eclipse中配置Android NDK开发环境,并实现C/C++代码的自动编译以及通过Eclipse使用Ant生成JNI所需的头文件。配置流程...
《Android NDK开发实战》是针对移动应用开发者的一份宝贵资源,主要涵盖了如何在Android平台上进行原生代码开发。NDK(Native Development Kit)是Google为Android提供的一个工具集,它允许开发者使用C和C++编写性能...
AndroidStudio给现有的项目添加NDK支持; 详情可以参考:Android Studio NDK开发-现有项目添加NDK开发(https://blog.csdn.net/niuba123456/article/details/81050052)
这篇教程将详细介绍如何在Ubuntu 18.04操作系统上,结合QT 5.13搭建最新的Android开发环境。 首先,确保系统已经安装了必要的依赖项。在Ubuntu 18.04上,你需要安装以下软件包: 1. `build-essential`:包含编译...
《细说Android4.0NDK编程》由王家林所著,通过NDK,应用程序可以非常方便地实现Java与C/C++代码的相互沟通。本书顺应Android软/硬件、云计算整合潮流,... 《细说Android4.0NDK编程》适合从事Android开发的人员阅读。
android开发有时需要开发c/c++插件,这就需要用到NDK(Native Development Kit),如果eclipse中没有配置NDK的选项则需要此插件。解压后对应放入eclipse目录下的features和plugins文件夹重启eclipse就可以看到NDK的...
Android NDK(Native Development Kit)是Google为Android平台提供的一款用于开发原生代码的应用程序工具集,它允许开发者使用C和C++等低级语言编写部分应用,以提高性能或利用特定硬件功能。"android-ndk-r17c-...
Android NDK(Native Development Kit)是Google为Android平台开发的一款重要的工具集,它允许开发者使用C和C++语言编写应用程序的底层代码。标题中的“android-ndk-r18b-windows-x86_64.zip”表明这是一个适用于...
Android NDK(Native Development Kit)是Google为Android平台提供的一套用于开发原生代码的工具集,它允许开发者使用C++和其他本地语言编写应用程序,进而利用Android设备的硬件特性,提高应用的性能和效率。...
Android Native Development Kit (NDK) 是Google提供的一款用于开发Android应用程序的重要工具集,它允许开发者使用C和C++编写部分或全部应用程序,以利用原生代码的高性能。本文将深入探讨Android NDK R23在Windows...
对于64位Windows用户来说,"android-ndk-r20b-windows-x86_64.zip"是一个关键资源,它意味着可以直接在Windows环境中搭建本地开发环境,无需担心系统架构问题。解压后的文件包括了所有必要的工具和库,如编译器、...