我在调试库模块的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',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
解决方法
原因似乎是,创建了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问题: