如何调试 Android 版 Kivy/Kivymd 应用程序?

Cra*_*aig 5 python android kivy buildozer

所以我花了一些时间开发一个菜谱应用程序:Github,我可以与我的 Raspberry Pi 一起使用,它工作得很好,而且我不介意使用启动器来保存原始代码。不过,我希望能够使用 buildozer 方法将 Kivy 应用程序打包为 apk:

buildozer android debug deploy run
Run Code Online (Sandbox Code Playgroud)

编译成功并且 apk 安装正常,但是应用程序在一秒钟后崩溃,之后我尝试使用 Kivy Launcher,它似乎永远无法识别我的程序,所以我继续尝试通过 Pydroid 3 运行原始代码,它有过去对 Kivy 和 KivyMD 都有效,但是尝试此导入时会崩溃,这不是我的代码的一部分:

from android.config import JAVA_NAMESPACE, JNI_NAMESPACE
Run Code Online (Sandbox Code Playgroud)

我的 buildozer.spec 文件是:

https://github.com/treencd/RecipeBook/blob/master/buildozer.spec

我最终尝试使用:

adb logcat
Run Code Online (Sandbox Code Playgroud)

然而,输出似乎没有那么有用,或者我不知道我在寻找什么。

我真的可以使用一些关于如何调试这样的应用程序的指导。

Pab*_*íaz 5

您需要 3 个步骤(省略在手机上启用调试模式)。您可以将每个步骤保存为 bash 文件,然后轻松运行脚本。假设下面的文件夹结构

project/
    1.bash
    2.bash
    3.bash
    bin/
        random_name.apk
    main.py
    main.kv
Run Code Online (Sandbox Code Playgroud)

1)构建apk(1.bash)

#!/bin/sh
buildozer -v android debug
Run Code Online (Sandbox Code Playgroud)

2)从终端安装到手机上(2.bash)

#!/bin/sh
adb install -r bin/*.apk
Run Code Online (Sandbox Code Playgroud)

3) 运行 apk 并查看发生了什么 (3.bash)

#!/bin/sh
echo 'Please connect on transfer files mode the cellphone'
adb logcat -s "python"
Run Code Online (Sandbox Code Playgroud)

然后,当一切正常后,只需创建一个新文件(0.bash)

#!/bin/sh

bash 1.bash
bash 2.bash
bash 3.bash
Run Code Online (Sandbox Code Playgroud)


inc*_*ent 1

使用 adb logcat 是正确的方法。除(许多)其他内容外,这包括应用程序的所有正常日志记录输出,就像您在桌面上看到的那样。您还可以进行更高级的调试,但这通常足以调试基本问题(就像在桌面上一样,查看回溯是您经常需要的大部分信息)。

输出中与 python 相关的行都有标签“python”。有一个 adb 语法用于仅显示与特定标记匹配的输出,但我永远记不起它,只需使用 grep -adb logcat | grep python就可以了。

如果这没有返回任何运行时 python 输出,则意味着应用程序在到达该点之前崩溃了,您必须更仔细地检查 logcat。如果是这种情况,请在此处发布 logcat。