使用 kivymd force 创建的应用程序关闭在手机中打开它

Posted

技术标签:

【中文标题】使用 kivymd force 创建的应用程序关闭在手机中打开它【英文标题】:App created using kivymd force closes opening it in phone 【发布时间】:2021-08-01 22:50:47 【问题描述】:

我使用 kivymd 构建了一个应用程序,我使用以下命令将其转换为 apk。将它安装到我的手机中后,打开它会在几秒钟内强制关闭。

1.buildozer 初始化

2.nano buildozer.spec (为了改变一些东西,比如应用的名字)

3.那么下面是buildozer的一些依赖

a)sudo apt 更新

b)sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev

c)pip3 install --user --upgrade Cython==0.29.19 virtualenv

d)导出 PATH=$PATH:~/.local/bin/

在上面的命令之后,我最终执行了以下命令:

4.buildozer -v 安卓调试

我使用 kivymd 是因为它具有良好的材料设计

我在下面添加了一张图片,它会像这样加载并再次出现在我的主屏幕上。

提前感谢

【问题讨论】:

什么是“打开手机后强制关闭”?就像元评论一样,这是一种解释。然而,更重要的是描述观察结果,即你所看到的!另外,请考虑更改问题的标题,这根本不会泄露您的实际问题。 现在可以了吗。你能找到解决办法吗 还只是解释,还不知道你看到了什么! 立即查看。你能找到吗 我仍然不知道 you 的“强制关闭”是什么意思。描述你所看到的,而不是你认为它意味着什么。观察,而不是解释!顺便说一句:请看一下您问题中的编号。你有 1..3,然后是 1..4,然后是另一个 4。 【参考方案1】:

您可以通过一个程序来获取有关该问题的准确信息,我猜您的项目有一个“main.py”脚本,因此请复制该脚本并将其重命名为,例如“main2.txt” ,所以它将是纯文本(但它是您的程序),然后,编辑“main.py”脚本并插入以下代码(观看我的视频https://youtu.be/LFQVhOzRlE0),请阅读代码中的cmets:

try:
    m=open("main2.txt").read()
    exec(m)
except Exception as e:
    n=open("/storage/emulated/0/The_error_is_jbsidis.txt","w")
    #the path may be different from device to device,
    #sometimes is /sdcard/, for the app to have access
    #to the external storage in the mobile device you
    #should add the READ_EXTERNAL_STORAGE permission
    #in the spec file, and then grant the permission manually
    #from the app manager from your cellphone,
    #this will help the apk, to be able to write content
    #to the device, then you can read it and see why the
    #app closes itself or what is throwing the error,
    #watch my video https://youtu.be/LFQVhOzRlE0
    #a fun fact is that if the "The_error_is_jbsidis.txt" file is empty (sometimes the app may crash before python can execute your main.py), that means that the issue is in the compilation itself or there is a missing module in your apk spec file #jbsidis
    n.write(str(e))
    n.close()

记得在 spec 文件中添加权限,否则应用程序将无权读取您设备的存储空间,并且无法在应用程序崩溃之前写入错误,有关更多信息,请观看我的视频: https://youtu.be/LFQVhOzRlE0

【讨论】:

感谢您的回答 :) 。我实际上已经从 kivy 转移到了用于构建应用程序的颤振框架:( 感谢您的评论。 Flutter 很棒,我相信你会用它来做很棒的项目,我没有使用过 Flutter,因为我不确定我是否可以像使用 kivy 和 python 一样使用 Flutter(我的硬件没有强大的功能),我强烈推荐 Python 和 Kivy,因为开发速度很快,但有时会抛出错误,如果没有正确的支持,我们就不能继续我们的项目,也许 kivy 还太年轻。 是的,你说的是正确的问题。即使我遇到了很多问题,我在 kivy 框架中构建应用程序的方式也很好,当我将其转换为 apk 文件时就会出现问题。但是在 Flutter 中,您使用 apk 文件进行构建和调试。很酷,你不会遇到任何问题。甚至飞镖也是一门很棒的学习语言。顺便说一句,即使我没有使用颤振,因为我没有更好的硬件,现在我有一个 :)

以上是关于使用 kivymd force 创建的应用程序关闭在手机中打开它的主要内容,如果未能解决你的问题,请参考以下文章

为啥 KivyMD apk 应用程序在打开后立即关闭?

在 KivyMD Python 中更改开始屏幕时,如何在启动时显示或关闭消息?

kivyMD:如何使用工具栏操作项创建下拉菜单?

具有多个屏幕的 KivyMD 菜单

如何在 kivymd 中添加多个屏幕?

如何在 KivyMD 中创建选择列表