Buildozer生成的APP闪退+PermissionError故障排除记录
0 情况介绍
最近有一个项目需要一个简单的手机客户端应用,由于项目是Python写的,所以希望手机客户端同样使用Python语言,查询后发现Python可以通过多种途径生成APK文件,经过多次安装尝试后选择了使用Kivy+Buildozer来进行apk文件的生成(其他生成方式见此链接)。
展示的项目比较简单,除了链接服务器外,现在仅添加了通过Owncloud获取网盘的图片功能(使用pyocclient包)。但是生成的APK直接闪退,由于网上的关于Buildozer的文档较少,所以在此记录下问题解决过程,后续有需要可以参考。
1 故障描述
使用Kivy+Buildozer后使用buildozer android debug deploy run
进行打包上传后运行直接闪退,为了查明闪退原因,这里使用ADB来查看运行闪退的Log文件。
2 解决过程
adb shell
进入手机调试终端。
使用run-as ${包名}
来进入程序的目录,这里我的名字是org.test.myapp,所以使用 run-as org.test.myapp
进入应用空间。
进入files/app/.kivy/logs/
目录后使用cat ${log文件名}
查看输出。
可以看到原因是[WARNING] stderr: ModuleNotFoundError: No module named 'requests'
未找到requests,所以在环境中安装sudo pip3 install requests
后在buildozer.spec中的依赖项中添加requests: requirements = python3,kivy,requests
,之后再次尝试运行buildozer android debug deploy run
,经过一段时间的等待(吐槽每次部署测试都要准备一堆东西,等的时间够长)后,应用可以正常启动运行,故障解除继续搬砖 。
不行,还没有解除!
测试了可以开启应用,之前的问题是解除了,不过链接链接Owncloud的服务器后闪退了。
再次使用2中的过程输入log文件后如下:
这个比较明显,是网络请求没有权限被禁止了。查找buildozer.spec文件中关于权限的配置部分(其实就是ctrl+f查找permissions
)得到如下内容:
找到后取消注释,重新部署。
部署过后问题还在,log文件的错误依旧,经过多个网站的查找(见3),也没有发现其他的解决办法。
既然是权限问题,在配置文件中给出权限就应该解决了,并且该程序在Ubuntu中运行正常,因此想到可能是因为打包未清理就又部署。所以执行清理buildozer android clean
后再执行上述的打包部署,启动后完成同步Owncloud的任务。至此,问题解决,用时90Min。
3 一些可能会用到的网站
- Bulidozer Github
- Buildozer Issues Bookmarks
- Buildozer Discord Channel 这个是个聊天Web,里面回复信息都很及时,搜索功能也很赞。
Buildozer生成的APP闪退+PermissionError故障排除记录相关推荐
- 抓取android系统日志_记录一次定位app闪退故障
在测试android客户端兼容性时,发现app闪退,上海的小伙伴需要闪退时的系统日志:故把快生锈的adb知识拿出来show一把: 1.下载adb工具包(adb的全称为Android Debug Bri ...
- APP闪退分析及Crash日志获取(PC端Log打印)
在测试android客户端兼容性时,发现app闪退,上海的小伙伴需要闪退时的系统日志:故把快生锈的adb知识拿出来show一把: 1.下载adb工具包(adb的全称为Android Debug Bri ...
- 180508 - 解决有关VIVO的2018-04-01安全补丁导致的APP闪退问题
解决有关VIVO的2018-04-01安全补丁导致的APP闪退问题 [√]问题原因猜测4: 最终解决方案 [√]问题原因猜测3: 尝试解决 [√成功] [×]问题原因猜测2: 尝试解决 [×失败] [ ...
- Genymotion 启动app闪退解决方案
Genymotion 启动app闪退解决方案 参考文章: (1)Genymotion 启动app闪退解决方案 (2)https://www.cnblogs.com/Test-road-me/p/536 ...
- 记录一次uni-app按导航栏左边返回,app闪退问题
正常流程,按app左边返回键,应该是回退到上一级页面,但目前遇到的是按返回键后,app直接退出. 先回顾下返回跳转页面都有哪几种方法: 1 uni.navigateTo(OBJECT) 保留当前页面, ...
- Android 页面跳转时发生双击导致app闪退的解决方案
在页面跳转时双击双击,查阅了各种资料 尝试一:从双击事件出发,避免双击事件 例如重写onClick事件 public abstract class NoDoubleClickListener impl ...
- android studio项目改成android.mk编译APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader
android9系统android studio项目改成用android.mk编译v7包--APP闪退java.lang.UnsatisfiedLinkError: dalvik.system.Pat ...
- 安卓开发笔记——APP闪退解决方案
笔者在开发一个智能家居APP的过程中,遇到APP闪退的情况,将日志打印出来: 怀疑可能是布局文件的问题,最后发现是由于布局的View中的"V"误敲成了小写: 将布局相关内容改正过来 ...
- 移动端APP闪退的主要原因总结
移动端APP闪退的主要原因总结如下: 1.空指针:对象没有初始化就使用了: 2.空函数:有事件源但没有对应的事件对象: 3.死循环:没有合理的循环控制流: 4.内存泄露:同一个对象不停地开辟,而且没有 ...
最新文章
- 基于长短读长和参考基因组的组装错误检测算法的研究
- ECC加密算法入门介绍
- Errno 256 No more mirrors to try
- linux的安装nmom命令,Linux下块设备查看命令lsblk详解
- 前端模板Nunjucks简介
- 火柴人小程序linux,火柴人你瞅啥小程序
- 分析深圳电信的新型HTTP劫持方式
- linux系统硬盘数量,Linux ext4文件系统划分磁盘inode数量
- Oracle常用数据字典表 Oracle常用数据字典表 查看当前用户的缺省表空间
- ImportError: cannot import name 'Graph' from 'pyecharts' 解决办法
- Python - shutil模块(2)——压缩目录、文件
- 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_16_注解_自定义注解_元注解...
- java的数据类型有哪些_java数据类型有哪些
- 车路协同科研教学与实训先导平台 ——一种面向新一代智能交通人才培养的综合实验平台及系统
- Disastrous Downtime
- 英语四级XYZ字母开头单词+托福高频单词
- 缺失数据填补基础方法(1)——k-Nearest Neighbors (kNN) 填补
- 华为硬件工程师社招机考题库_华为硬件工程师笔试、面试题
- mysql 计算农历_MySQL 获取农历年函数
- 【moodle】moodle dialog开发笔记 1
热门文章
- 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 内部测试链接 | 安装 Google Play 中带 扩展文件 的 APK 安装包 | 验证下载的扩展文件 )
- 简谈FIR滤波器和IIR滤波器的区别
- spring学习-4-事务
- 如何把图片转换jpg格式呢?
- linux raid5模拟数据丢失,Linux服务器右异步RAID-5数据恢复实例分析
- Linux:进程管理 | 进程创建 | 进程终止 | 进程等待 | 进程替换
- 前端开发常用编辑器,你用过哪几个?
- redis安装(主从)
- Android 友盟统计 友盟推送 友盟分享快速集成
- zabbix php问题 Call to undefined function array_column()