Android Studio - 在现有旧项目中启用本机C++调试(card.io Android 源代码)

Android Studio - Enable native C++ debugging in existing older project (card.io Android Source)

提问人:Alexander Belokon 提问时间:8/5/2018 最后编辑:Kelechi DanielsAlexander Belokon 更新时间:3/13/2023 访问量:872

问:

我目前正在尝试了解 card.io Android Source 的本机实现是如何工作的。为此,如果能够调试本机代码,那就太好了。目前,我的断点没有得到遵守。C++

我确实尝试了以下方法:

  1. 调整应用程序生成文件 (Application.mk):

    APP_ABI := armeabi-v7a
    APP_CFLAGS += -UNDEBUG -O0 -g -ggdb 
    APP_OPTIM := debug
    APP_CPPFLAGS += -DDMZ_DEBUG=1
    
  2. 将 buildtype 添加到 SampleApp 的 build.gradle 文件中

    buildTypes {
        release {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt')
        }
        debug {
            debuggable true
        }
    }
    

注意:我正在使用 (64 位),如果我创建一个有支持的新项目,调试可以完美运行。Android Studio 3.1Ubuntu 16.04C++

我们正在设备上进行调试;该项目正在使用一个系统。Android 7.0NDK-build

java android c++ android-studio android-ndk

评论

0赞 ahasbini 8/14/2018
Android Studio 3.X 中的当前 C++ NDK 与用于开发 Card.io 的 NDK 之间的区别在于构建/编译工具,分别是 CMake 和 NDK-build。Android Studio 和 Android Gradle 插件与 CMake 有更好的集成,因为它们建议将其用于任何新项目。因此,创建一个新项目并对其进行调试意味着您使用较新的集成,而不是用于开发 card.io 的集成。要找到调试 card.io 的正确方法,需要创建一个新的 NDK-Build 项目并尝试一下。developer.android.com/ndk/guides
0赞 Alexander Belokon 8/14/2018
但是集成在哪里定义?例如,在一个新项目中,我可以从 CMake 切换到 NDK-build,调试仍然有效。我只是看不出 card.io 项目有什么区别。

答:

0赞 Pravin Divraniya 8/9/2018 #1

根据此链接,请阅读“编译”部分。

如果一切设置正确,NDK 构建将由 gradle,构建 card.io 时。但对于调试,你可以只用它来启动构建的这一部分。./gradlewbuildNative

如果您遇到任何错误,请检查此线程./gradlew buildNative

我没有检查它,所以希望它有效。

评论

1赞 Alexander Belokon 8/13/2018
嗨,感谢您的回答,但我收到以下错误:在项目中找不到任务“buildNative”
1赞 Alexander Belokon 8/13/2018
此外,如果我运行“./gradlew tasks”,则没有列出buildNative
0赞 Pravin Divraniya 8/13/2018
确保您已安装 ndk 并且 ndk-build 位于 PATH 中。如果没有,请为 ndk 文件设置环境变量
0赞 Alexander Belokon 8/13/2018
ndk.dir 是在项目的 local.properties 中设置的
0赞 Pravin Divraniya 8/13/2018
设置生成环境部分。