zoukankan      html  css  js  c++  java
  • android studio ndk 调试

    一: 先看看用 ndk-gdb 手动调试

    这种方法只适用于手动编写 Android.mk 的情况,因为我们要手动 build debug 版本的 .so 文件。具体可以参考我的前一篇文章。

    1 AndroidManifest.xml  android:debuggable 设置为 true

    2 切换到 jni 目录下执行 ndk-build NDK_DEBUG=1

    这样就生成了 debug 版本的库文件,还多了一个 gdbserver 和  gdb.setup

    3 运行安装启动程序

    4 切换到你的 src/main 目录下执行  ndk-gdb

    这时报了一个错误:

    ERROR: Could not find gdb.setup under /Users/lesliefang/AndroidStudioProjects/MyApplication/app/src/main/libs/
    那就把 armeabi 下面的 gdb.setup 文件拷贝到 ./libs 下面

    重新执行,结果又报了一个错:

    ERROR: Non-debuggable application installed on the target device.
    Please re-install the debuggable version!

    这是因为运行时 studio 没有把 gdbserver 打包到 apk 中, 怎么办呢,反编译后手动打包进去,重新打包签名就行了

    安装启动运行,再次执行 ndk-gdb 成功

    2 IDE 调试, android studio 目前对 NDK 的调试支持还只是实验阶段

    具体可参考   http://tools.android.com/tech-docs/new-build-system/gradle-experimental

    折腾了一番,也可以调试了

    熟悉 java 的同学通常 C  和 C++ 不是很熟, 熟悉 C 和 C++ 的同学 java 通常不是很熟

    所以可以先定义好接口,让熟悉C 和 C++的同学先开发完C程序,测试通过后,

    让熟悉 java 和 JNI 的同学在外面再包一层,处理参数的传递和返回。复用已有的C程序也可以这么做。

    JNI 可以直接用 eclipse for C、C++ 开发, JNI 接口都测试通过后再用  ndk 工具打成 .so 文件,

    拿到 android studio 中, 对于 C或C++ 调用 android 中方法的情况可以先 mock 

    一些类和方法, 其实大部分情况都是 java 调用 C和C++, C和C++很少调用 java。

    所以我觉得一般来说 ndk 可以分出来独立开发。

    所有说直接在 android studio 中调试C和C++的时候也不多。

  • 相关阅读:
    Linux每天一个命令:cat
    python3 str或bytes转换函数
    python3获取指定目录内容的详细信息
    python3 简单进度条代码
    CNN review
    Hive -- 原理篇
    leetcode 4. 寻找两个正序数组的中位数 (二分)
    leetcode 680 验证回文字符串II (贪心)
    leetcode 面试题03 数组中重复的数字
    机器学习--SVM篇
  • 原文地址:https://www.cnblogs.com/lesliefang/p/5163148.html
Copyright © 2011-2022 走看看