当前位置:  开发笔记 > Android > 正文

调试不使用Android Studio的C++ /本机库模块(使用Cmake)

如何解决《调试不使用AndroidStudio的C++/本机库模块(使用Cmake)》经验,为你挑选了1个好方法。

我在调试库模块的C++文件时遇到问题.

一般来说这可能吗?

如果应用程序项目包含c ++代码,则调试工作正常.但我想将C++代码移动到库模块.

启动会话时出现错误消息:

现在启动本机调试会话

注意!找不到符号目录 - 请检查您的本机调试配置

我的lib的gradle文件:

apply plugin: 'com.android.library'


android {
compileSdkVersion 24
buildToolsVersion "25.0.2"
defaultConfig {

    minSdkVersion 16
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
    externalNativeBuild {
        cmake {
            arguments "-DANDROID_PLATFORM_LEVEL=${11}",
                    '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
        }
    }
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
externalNativeBuild {
    cmake {
        path "CMakeLists.txt"
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-annotations:24.2.0'
}

在运行配置中,调试器设置为auto

在此输入图像描述


加法:

我正在使用:

Gradle:2.2.3

Android Studio:2.2.3


在LLLB控制台中,我检查了断点列表:

断点列表-v

我的所有检查站都列在那里.

不工作的断点

1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0

..就这样

工作断点

1: file = 'C:\android-dev\...\test.cpp', line = 19, exact_match = 0
    1.1: 
      module = C:\android-dev\...\test.so
      compile unit = gl_code.cpp
      function = testFunc(..)
      location = C:\android-dev\...\test.cpp:16
      address = 0x0000007f871d068c
      resolved = true
      hit count = 1   

daemmie.. 9

原因似乎是,创建了lib的发布版本,它不支持调试.即使应用程序是使用调试选项构建的.

解:

要解决此问题,请执行以下解决方法.它确保构建调试版本.


在您的应用内部build.gradle更改:

compile project(':nativelib')

compile project(path: ':nativelib' , configuration: 'debug')

在libs build.gradle中添加:

android {

    publishNonDefault  true //this line

    compileSdkVersion 24
    buildToolsVersion "25.0.2"
    defaultConfig {
    ...
    }
...
}    

更新:

有关更新,请参阅相应的Google问题:

https://code.google.com/p/android/issues/detail?id=222276



1> daemmie..:

原因似乎是,创建了lib的发布版本,它不支持调试.即使应用程序是使用调试选项构建的.

解:

要解决此问题,请执行以下解决方法.它确保构建调试版本.


在您的应用内部build.gradle更改:

compile project(':nativelib')

compile project(path: ':nativelib' , configuration: 'debug')

在libs build.gradle中添加:

android {

    publishNonDefault  true //this line

    compileSdkVersion 24
    buildToolsVersion "25.0.2"
    defaultConfig {
    ...
    }
...
}    

更新:

有关更新,请参阅相应的Google问题:

https://code.google.com/p/android/issues/detail?id=222276

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有