首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android NDK 开发中快速定位 Crash 问题

在 Android NDK 开发中,排查问题遇到的最熟悉的关键字非 backtrace 莫属,Linux 系统中进程 crash 后通过 backtrace 输出堆栈信息,开发者就是基于这些堆栈信息来定位代码问题...当然定位 Native 层代码问题最优的方式还是通过 IDE(AS、VS)或者 GDB 进行 debug 断点调试,本文利用一个非常简单的 case 说明 Native 层定位 crash 的一般流程。...我们也可以借助于 ASAN (注意 Android 版本)进行定位,具体可以参考文章:用 Asan 提前解决 NDK 疑难 crash 写两行代码,先制造一个简单的 crash 场景。...D:\NDK>D:\NDK\android-ndk-r16\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64...另外在使用 addr2line 过程中经常会遇到 “??:?” 或 “??

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android NDK层发起HTTP请求的问题及解决

    本次给大家带来何老师的最新文章~虽然何老师还在过节,但依然放心不下广大开发者,在此佳节还未结束之际,给大家带来最新的技术分享~ 事件的起因不说了,总之是需要实现一个 NDK 层的网络请求。...在实际使用中,的确可以通过引入 fcl-web 来完成跨平台的网络请求,然而在 Android 端实际测试时,却发生了奇怪的错误。...比如说请求我自己的服务器 www.rarnu.com,会发生以下错误: ? 而当我换用 IP 地址来请求时,却是可以成功的。 输入的域名是实际存在的,可以排除掉域名本身的问题。...而使用 adb shell 连入设备,并使用 ping 命令访问该域名,也是正常的。 那么问题可能就出在,找不到 nameserver。...最后,把上面的 InitResolver 改一下,使其可以正常加载工作于 Android 端的这段代码: ? 编译运行程序,Error resolving host 的问题即得到了解决。

    1.3K20

    【Android NDK 开发】Kotlin 语言中使用 NDK ( 创建支持 Kotlin 的 NDK 项目 | Kotlin 语言中使用 NDK 要点 | 代码示例 )

    文章目录 一、创建支持 Kotlin 的 NDK 项目 二、Kotlin 语言中使用 NDK 要点 1、加载动态库 2、声明 ndk 方法 3、Project 下的 build.gradle 配置 4..., 弹出以下对话框 , 选择 Native C++ 项目 , 点击 Next 按钮 ; 在后续对话框中 , 使用默认的 Kotlin 语言 , 即可生成 Kotlin 中使用 NDK 的代码 ;...默认 C++ 标准即可 ; 二、Kotlin 语言中使用 NDK 要点 ---- 1、加载动态库 ---- Kotlin 中在类的 companion object 伴生对象 中加载动态库 , 类似于...build.gradle 配置 ---- 在 Module 下的 build.gradle 中 , kotlin-android 是必须配置的 , kotlin-android-extensions 是扩展..., 选择性配置 , 配置了之后 , 可以很方便地使用视图绑定 ; kotlin-kapt 也是选择性配置 , 配置使用注解 ; plugins { id 'com.android.application

    1.1K00

    Android NDK开发扫盲及最新CMake的编译使用

    本篇文章旨在简介 Android 中 NDK 是什么以及重点讲解最新 Android Studio 编译工具 CMake 的使用 1 NDK 简介 -------- 在介绍 NDK 之前还是首推 Android...官方文档分别从以下几个方面介绍了 NDK NDK 的基础概念 如何编译 NDK 项目 ABI 是什么以及不同 CPU 指令集支持哪些 ABI 如何使用您自己及其他预建的库 本节将会对文档进行总结和补充。...Android SO文件的兼容和适配 当我们开发 Android 应用的时候,由于 Java 代码运行在虚拟机上,所以我们从来没有关心过这方面的问题。...Android NDK 官网的使用现有库的文档中还是使用 ndk-build + Android.mk + Application.mk 组合的说明文档。...以上文档资料仅为了解决 NDK 开发过程中编译配置问题,具体 c/c++ 的逻辑编写、jni等不在此范畴。

    2.4K30

    Android NDK中的UI线程

    概述 在Android中,UI线程是一个很重要的概念。我们对UI的更新和一些系统行为,都必须在UI线程(主线程)中进行调用。...同时,我们在进行底层跨平台开发时,我们会选择NDK,在Linux系统上进行开发。在Linux中是没有主线程这一概念的。...我们一般的方法是: result = env->FindClass(name); 但如果在子线程中获取时,就会出现找不到类的情况。关于这一问题,详见StackOverFlow。...简单来讲,当我们在自己创建的子线程想要通过JVM获取Class时,Android会为我们启动系统的ClassLoader而不是我们App的ClassLoader。...这样,我们只需要在子线程中,以一定的编码格式向主线程发送消息,即可完成在native中切换主线程的能力。 --- 如有问题,欢迎指正。

    2.6K40

    Android NDK的初步认识(Android Studio 2.2 + CMake)

    序言: 做NDK开发也有一段时间了,还记得初学的时候各种找大神、搜教程,最后在诸多大神的帮助下,成功的做出了我的第一个NDK小玩意,很感谢他们,而后慢慢的越入越深(keng),今天在群里看到了很多像我之前那样各种找问题的哥们...众所周知,由于Android 的应用层的类都市以Java写的, 这些Java类编译成dex形式的bytecode之后,必须依靠Dalvik虚拟机(vm)来执行。...3.实践步骤 本文是基于 Android Studio 2.2+CMake实现的, 如果你不是的话也可以做个参考,仅限参考,出事概不负责哦。...首先去新建一个Android项目,注意填写好名称,下面的勾勾不要打。 然后填写完成之后,点击下一步,这个时候如果你是新手的话,就什么也不要选,有经验的我就不多说了。...然后点击确定你就会看到出现了一个新的文件夹(cpp): 然后选中此文件夹,右键新建; 随意起个名,我们给他起一个jni,建议你也起的跟我一样,后续还要进行一系列的操作,以防出现不必要的问题,要注意的是下面勾勾也要选上

    24820

    音视频平凡之路之FFmpeg编译全过程

    FFmpeg 首先要下载一下FFmpeg库文件: git clone https://github.com/FFmpeg/FFmpeg 然后切换到n4.0.3 tag 分支,这个分支我试过,交叉编译是没有问题的...编译工具:android-ndk-r14b FFmpeg有很多配置选项,你可以直接使用./configure --help查看一下,后续你在编译的时候通过在这里面查找一下编译参数。 ?...很想把这些库合成一个动态库,这样既能压缩文件,使用的时候有非常方便。好在ndk中提供了strip工具可以压缩库文件。 #!...-lcrypto 老的openssl库使用‘SSL_library_init’初始化, 新版本openssl使用‘OPENSSL_init_ssl’初始化; 下面正常编译就没有问题了;生成的ffmpeg...3.FFmpeg接入x264 FFmpeg自带的h264的库性能一般,一般还是使用VideoLan实验室的x264库。

    5.2K41

    openssl的部分使用例子

    你也可以指定自己的配置文件。 当前只有三个OpenSSL命令会使用这个配置文件:ca, req, x509。有望未来版本会有更多命令使用配置文件。...签名的时候,对于DSA生成的私匙必须要和DSS1(即SHA1)搭配。而对于RSA生成的私匙,任何消息摘要算法都可使用。...需要特别指出的是,尽量避免使用ECB模式,要想安全地使用它难以置信地困难。 enc命令用来访问对称密码,此外还可以用密码的名字作为命令来访问。...OpenSSL 0.9.5 提供了dhparam命令用来生成参数集,但是生成公钥匙和私钥匙的命令dh和gendh已不推荐使用。未来版本可能会加上这个功能。...如果没有设置,则HOME目录下的.rnd文件将会使用。 OpenSSL还提供了一个命令rand用来指定重置来源文件。来源文件之间以操作系统的文件分割字符隔开。

    32310

    【Android 安全】DEX 加密 ( 代理 Application 开发 | 交叉编译 OpenSSL 开源库 )

    ---- OpenSSL 是开源密码库 , 其中封装了常用的 密码算法 , 常用密钥 , 证书封装管理 , SSL 协议 ; SSL : 全称 Secure Sockets Layer , 安全套接层协议..., 提供网络中的保密传输功能 ; 参考简介 : 百度百科-OpenSSL OpenSSL 官网 : https://www.openssl.org/ OpenSSL Wiki 页面 : https:...; 需要准备两个文件 : 源码文件 : 文档中提示下载 openssl-1.0.1g.tar.gz 版本的 OpenSSL , 在 https://www.openssl.org/source/old..., x86-4.6 or x86-4.8 ; 配置前到 NDK 目录下的 toolchains 中查看要使用哪个版本的交叉编译工具 , 该配置一定要从 NDK 目录中查找 ; _ANDROID_EABI...=`pwd`/android/arm 编译源码 : 执行下面的代码 , 完成交叉编译工作 ; # 编译源码 make depend make all 将生成的库安装到 指定的目录中 ; 该步骤的作用是将编译后的结果

    80000

    Android中关于Nativa编译(NDK、JNI)的一些问题

    SDK的C++接口由JNI实现,使用SDK的C++接口的游戏在集成时,SDK直接向游戏游戏提供源码编译,因此需要使用NDK完成编译。在编译和环境配置过程中经常会遇到一些问题,在此总结一下。...##NDK 环境配置: 选择 window -> preferences -> Android -> NDK,按照下图配置 ?...备注:在最新的adt版本(adt-bundle-windows-x86-20140702)中没有集成ndk,游戏在Android选项中可能无法看到上述配置。...解决方法如下: 下载eclipse关于ndk的插件com.android.ide.eclipse.ndk_23.0.2.1259578.jar 将下载好的com.android.ide.eclipse.ndk...ADT 配置(支持native编译) 使用ADT自带的Android Tools 完成配置(推荐): ADT中已经整合了关于CDT编译的相关内容。

    81980

    【Android 逆向】代码调试器开发 ( 使用 NDK 中的 ndk-build + Android.mk 编译 Android 平台的代码调试器可执行应用 )

    更详细的配置方法 , 参考 https://developer.android.google.cn/ndk/guides/android_mk#tiv 文档 ; 完整的 Android.mk 构建脚本...兼容的最低版本 APP_PLATFORM := android-19 四、正式编译 ---- ndk-build 脚本的用法参考 https://developer.android.google.cn...001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86_64/android-ndk-r14b/ndk-build.cmd NDK_PROJECT_PATH.../Application.mk 命令 , 编译 Android 平台的代码调试器 ; 其中 Y:/001_DevelopTools/002_Android_SDK/ndk/android-ndk-r14b-windows-x86..._64/android-ndk-r14b/ndk-build.cmd 是 android-ndk-r14b 版本 ndk 的 ndk-build.cmd 编译工具 , 注意不要用错版本 ; NDK_PROJECT_PATH

    37920

    Android NDK 开发 | CMake 使用手册 - 初见篇

    CMake 这块知识是比较独立的,不止是 Android NDK 项目,一般的 C++ 项目也可以通过 CMake 进行构建。...为了更具有一般性,将在 Linux 环境中,通过 C++ 项目来介绍 CMake 的相关知识,当然这一切也可以用于 Android NDK 项目中。...回首 Android NDK 中的 CMakeLists Android NDK 中的 CMakeLists 和 C++ 项目中的并没有任何区别,都是用来构建项目的。...在 Android 项目构建过程中,会使用 ndk 通过 CMakeLists 来构建 C++ 相关的代码,如下可以看出,在构建产物中确实会存在构建的 .so 动态链接库。...但当使用那个 so 时,放入 arm64-v8a下, 会出现一个如下问题: 原因很简单,因为架构问题,通过 cmake 在 linux 中构建的 so 文件,是 X86_64 架构的,在 Linux

    1.2K20
    领券