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 文件缺少调试符号的主要内容,如果未能解决你的问题,请参考以下文章
Python、Kivy、Buildozer:使用 python-firebase/requests 时出错
Kivy App 使用 Buildozer 构建。 APK 崩溃