在Android上用Kivy Launcher启动应用时生成的日志
我知道我们可以用 Kivy 启动器在安卓上启动一个应用,链接是 https://play.google.com/store/apps/details?id=org.kivy.pygame
而且我也可以用同样的方法启动应用。不过我想知道,我们在哪里可以看到应用生成的日志?比如说,当我在电脑上运行 Kivy 应用时,我可以在控制台看到日志,但当我通过 Kivy 启动器启动应用时,日志在哪里呢?
如果我们看不到日志,有没有什么办法可以让我们看到呢?
3 个回答
你需要在 buildozer.spec
文件中指定包名,像下面这样写:
# (str) Title of your application
title = MyApp
# (str) Package name
package.name = MyAppication
# (str) Package domain (needed for android/ios packaging)
package.domain = ir.MyApp
# (list) List of service to declare
#services = NAME:ENTRYPOINT_TO_PY , NAME2:ENTRYPOINT2_TO_PY
# (str) Android entry point , default is ok for Kivy-based app
#android.entrypoint = org.kivy.android.PythonActivity
# (str) Full name including package path of the Java class that implements Android Activity
# use that parameter together with android.entrypoint to set custom Java class instead of PythonActivity
#android.activity_class_name = org.kivy.android.PythonActivity
然后你可以用下面的命令:
$ANDROID_HOME/platform-tools/adb logcat ir.MyApp:D MyApp:D ir.MyApp.MyAppication:D *:S MyAppication:D org.kivy.android.PythonActivity:D org.kivy:D python:D
注意,不管你把 entrypoint
和 package
命名成什么,你都应该用它们来过滤你的日志。
我得提一下,在包名后面的 D
是代表 Debug
(调试)的意思。
V
: 详细信息(优先级最低)D
: 调试I
: 信息W
: 警告E
: 错误F
: 致命错误S
: 静默(优先级最高,什么都不会打印)
如果你想清除旧的日志,可以使用 adb logcat -c
。
当你的应用程序运行时,会创建一个.kivy文件夹(如果之前没有的话)。在这个文件夹里,你会看到一个logs文件夹。里面的日志和通过“adb logcat”命令获取的日志是一样的。
在安卓上,kivy会把所有Python的正常终端输出打印到安卓的logcat流里。你可以通过USB连接手机到电脑,然后输入adb logcat
来查看这些输出。adb是安卓开发工具包(sdk)里提供的,如果你找不到它,可以在sdk的文件夹里找到。 如果你使用buildozer
,我觉得你可以通过下面的命令访问它自动下载的安卓sdk:
buildozer android logcat
你也可以通过一些在应用商店里的应用来查看adb的输出(不过可能只适用于旧版安卓,我觉得这里面有些变化)。
Kivy可能还会把日志存储为文本文件,放在SD卡的某个地方,可能是在应用的目录下(也就是在kivy启动器的kivy
目录里),但我其实没怎么用过这个,使用adb要方便得多。