本机代码中的断点无法在 Android Studio 上命中 [重复]
Posted
技术标签:
【中文标题】本机代码中的断点无法在 Android Studio 上命中 [重复]【英文标题】:Breakpoints in native codes cannot be hit on Android Studio [duplicate] 【发布时间】:2021-01-19 07:22:56 【问题描述】:我最近在做android原生库的开发,需要熟悉Android Studio。通过这个sample,我学到了一些关于 ndk 和 jni 例程的基础知识。但是,我一直在调试此示例的本机代码。特别是,ndk 的调试器适用于模拟器(Nexus 5X API 29 x86),而原生代码中的断点无法在真实设备(HUAWEI P9,android Oreo)上运行。此外,Java 代码中的断点在真实设备上也能正常工作。
app的gradle脚本如下:
apply plugin: 'com.android.application'
android
compileSdkVersion 29
ndkVersion '21.2.6472646'
defaultConfig
applicationId 'com.android.gl2jni'
minSdkVersion 14
targetSdkVersion 28
externalNativeBuild
cmake
// Available arguments are inside $SDK/cmake/.../android.toolchain.cmake file
arguments '-DANDROID_STL=c++_static'
buildTypes
release
minifyEnabled = false
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
externalNativeBuild
cmake
version '3.10.2'
path 'src/main/cpp/CMakeLists.txt'
其他详情:
使用 Android Studio 的“分析 APK”实用程序,我检查了我设备上安装的内容:
然后我在$project root/app/build/intermediates/cmake/debug/obj/arm64-v8a
上找到了一个更大的库:
APK中的原生库的调试符号似乎被剥离了,而且android studio没有打包适当的原生库进行调试?
【问题讨论】:
【参考方案1】:您在 APK 分析器中看到的不是文件大小,而是 打包 大小(二进制文件被压缩,除非您的清单中有 extractNativeLibs=false
)。
无论如何,您似乎在这里遇到了特定于设备的问题,请参阅 Not working - Debug Mode native code (c/c++) on Android studio with tablet HUAWEI MediaPad M5。
【讨论】:
以上是关于本机代码中的断点无法在 Android Studio 上命中 [重复]的主要内容,如果未能解决你的问题,请参考以下文章