⑴ 如何定位android NDK开发中遇到的错误
只要你细心的查看,再配合Google 提供的工具,完全可以快速地准确定位出错的代码位置,这个工作我们称之为“符号化”。需要注意的是,如果要对NDK错误进行符号化的工作,需要保留编译过程中产生的包含符号表的so文件,这些文件一般保存在$PROJECT_PATH/obj/local/目录下。
第一种方法:ndk-stack
这个命令行工具包含在NDK工具的安装目录,和ndk-build及其他常用的一些NDK命令放在一起,比如在我的电脑上,其位置是/android-ndk-r9d/ndk-stack。根据Google官方文档,NDK从r6版本开始提供ndk-stack命令,如果你用的之前的版本,建议还是尽快升级至最新的版本。使用ndk –stack命令也有两种方式
实时分析日志
在运行程序的同时,使用adb获取logcat日志,并通过管道符输出给ndk-stack,同时需要指定包含符号表的so文件位置;如果你的程序包含了多种CPU架构,在这里需求根据错误发生时的手机CPU类型,选择不同的CPU架构目录,如:
当崩溃发生时,会得到如下的信息:
⑵ 如何在Ubuntu下搭建Android NDK开发环境
1 搭建Android SDK开发环境
2 下载NDK开发包
3打开官网: 下载NDK 开发包,当前最新版本是r7b
下载解压到 ~/bin 目录下,
3 配置NDK环境参数
打开 ~/.bashrc文件:
⑶ 如何定位Android NDK开发中遇到的错误
1,首先,来看看在hello-jni程序的代码中做了什么(有关如何创建或导入工程,此处略),下面代码中:在JNI_OnLoad()的函数中,即so加载时,调用willCrash()函数,而在willCrash()函数中, std::string的这种赋值方法会产生一个空指针错误。这样,在hello-jni程序加载时就会闪退。记一下这两个行数:在61行调用了willCrash()函数;在69行发生了崩溃。
⑷ android ndk build BUILD_EXECUTABLE 为什么是这个application/x-sharedlib
android编译系统的makefile文件Android.mk写法如下(1)Android.mk文件首先需要指定LOCAL_PATH变量,用于查找源文件。由于一般情况下Android.mk和需要编译的源文件在同一目录下,所以定义成如下形式:LOCAL_PATH:=$(call my-dir)上面的语句的意思是将LOCAL_PATH变量定义成本文件所在目录路径。(2)Android.mk中可以定义多个编译模块,每个编译模块都是以include $(CLEAR_VARS)开始以include $(BUILD_XXX)结束。include $(CLEAR_VARS)CLEAR_VARS由编译系统提供,指定让GNU MAKEFILE为你清除除LOCAL_PATH以外的所有LOCAL_XXX变量,如LOCAL_MODULE,LOCAL_SRC_FILES,LOCAL_SHARED_LIBRARIES,LOCAL_STATIC_LIBRARIES等。include $(BUILD_STATIC_LIBRARY)表示编译成静态库include $(BUILD_SHARED_LIBRARY)表示编译成动态库。include $(BUILD_EXECUTABLE)表示编译成可执行程序⑸ ndk-build怎么在命令行里写
打开cmd,进入androidndkr9所在的文件夹,执行命令:ndk-build-C[path]就可以了,path是你的工程路径。这样就会生成.so文件的
⑹ ndk-build不使用jni文件夹
是。ndk-build文件是AndroidNDKr4中引入的一个shell脚本,ndk-build不使用jni文件夹,位置就在NDK目录的最上层,其用途是调用正确的NDK构建脚本。
⑺ 如何在Android NDK中调用第三方库文件
如何在Android NDK中调用第三方库文件(.so) 1.在project/jni目录下创建prebuilt子目录(目录名可自定义).
2.将第三方.so放到prebuilt中,并创建Android.mk, 内容如下:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := xxx
LOCAL_SRC_FILES := libxxx.so
include $(PREBUILT_SHARED_LIBRARY)
3.在project/jni/Android.mk中加入
LOCAL_SHARED_LIBRARIES := xxx
4.在project/jni/android.mk的最后加入
include $(LOCAL_PATH)/prebuilt/Android.mk
5.运行cygwin, 到project目录下, 运行$NDK/ndk-build
⑻ 如何ndk-build时只需要armeabi
打开cmd,进入androidndkr9所在的文件夹,执行命令:ndk-build-C[path]就可以了,path是你的工程路径。这样就会生成.so文件的