Kivy Buildozer:.so lib 文件缺少调试符号

Posted

技术标签:

【中文标题】Kivy Buildozer:.so lib 文件缺少调试符号【英文标题】:Kivy Buildozer: .so lib files missing debug symbols 【发布时间】:2018-08-29 14:37:08 【问题描述】:

.so lib 文件缺少调试符号

所以我尝试让我的 bin/debug.apk 在 Buildozer VM 中工作,但是在加载 adb 和通过 USB 连接我的 android 设备时出现问题,所以我将我的 bin/debug.apk 导出到我的桌面进行调试它在 Android Studio 中。但是,在第一步中,它会引发一个错误,要求我将 .so 库替换为具有调试符号的相同库。

.so lib files missing debug symbols

这些是否在 buildozer android 调试阶段隐藏在 Buildozer VM 中的任何位置?

有没有办法获取带有符号的库,或者解决在 Android Studio 或 Buildozer VM 上没有它们的问题?

【问题讨论】:

【参考方案1】:

附加原生调试符号

如果您的 APK 包含不包含调试符号的本机库(.so 文件),IDE 会在 消息 窗口中向您显示警告。如果不附加可调试的本机库,则无法调试 APK 的本机代码或使用断点。

要附加可调试的本机库,请执行以下操作:

    如果您还没有这样做,请确保download the NDK and tools。 在Project窗口的cpp目录下(只有选中Android视图才可见,如下图),双击不包含调试符号的本机库文件。编辑器会显示您的 APK 支持的所有 ABI 的表格。 点击编辑器窗口右上角的添加。 导航到包含要附加的可调试本机库的目录,然后单击 好的

如果 APK 和可调试的原生库是使用不同的工作站构建的,您还需要按照以下步骤指定本地调试符号的路径:

    通过编辑编辑器窗口Path Mappings部分的Local Paths列下的字段,为缺少的调试符号添加本地路径,如下图所示。 在大多数情况下,您只需提供根文件夹的路径,Android Studio 会自动检查子目录以映射其他源。 IDE 还会自动将远程 NDK 的路径映射到本地 NDK 下载。 点击编辑器窗口路径映射部分中的Apply Changes

您现在应该在 Project 窗口中看到原生源文件。像往常一样打开这些本机文件以添加断点和debug your app。您还可以通过单击编辑器窗口的路径映射部分中的清除来删除映射。

已知问题:将调试符号附加到 APK 时,APK 和可调试的 .so files 必须使用相同的工作站或构建服务器构建。

Source

【讨论】:

我们如何知道包含您要附加​​的可调试本机库的目录在哪里【参考方案2】:

我认为这些符号在构建过程的配方部分被 python-for-android 剥离。防止这种情况可能并不难(或者最好添加一个禁用它的选项),但我认为目前还没有。

如果您使用 apk 发布错误,我们或许可以帮助调试它,我通常不会看到需要调试符号来解决的问题。

【讨论】:

这是一个 Dropbox 链接,指向带有 APK 的 bin 文件:dropbox.com/sh/x5223ugb81ei1n5/AAAOUTyMSNTVtFMG1_1lKYefa?dl=0

以上是关于Kivy Buildozer:.so lib 文件缺少调试符号的主要内容,如果未能解决你的问题,请参考以下文章

kivy buildozer 虚拟机

使用Buildozer部署Kivy到移动设备上

Python、Kivy、Buildozer:使用 python-firebase/requests 时出错

Kivy App 使用 Buildozer 构建。 APK 崩溃

使用 buildozer 在 android 上部署 kivy 应用程序时出错

如何使用 kivy-buildozer 为我的 android 应用程序添加图标?