十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

直接把 Python 编写的图形程序打包为安卓 APP

直接把 Python 编写的图形程序打包为安卓 APP 跨平台开发真的能够应用于安卓系统吗, 在打包成功之后点击却出现白屏现象, 它究竟是否可以作为主要使用工具呢?一周之前, 我拿了个小型记账App来测试, 想着直接安装到手机上瞧瞧效果如何。然而, 一番折腾硬是历经了两天时间。最终, 虽说安装成功了, 可点击打开后却卡在白屏界面不动弹, 查看日志发现里面到处都是JNI报错信息。它并非像网上所流传的那般, 通过一行命令就能轻松搞定, 更不是能瞬间变成安卓App的神奇情况。它的确能够生成APK文件, 然而, 与你脑海中所设想的那种点击就能正常使用的APP相比, 完全是天壤之别, 差得可不是一星半点不采用Qt, 也不用别的, 非得运用它自身的Toga来制作界面。最开始的时候, 还拿以往所写的Tk代码予以修改, 修改完毕运行之后, 立刻就是报错, 甚至于连启动都无法正常进行。随后才弄清楚, Toga具备自身的生命周期, 没有, 不能不继承toga.App, 按钮点击事件也有其固定流程, 并非仅仅绑定操作bind就可行得通。就连最基础的文本框更新, 都必须手动进行调用(), 不然即便修改了, 也不会呈现显示效果。那块进行打包的话情形会更麻烦些, build这个看起来是比较简单的, 然而实际上它的背后完全是依靠着。它才能够自动去下载SDK、NDK, 甚至是一堆org..类的依赖。我在第一次运行的时候失败了, 这归结于之前将JDK安装成了21, 结果8.4根本无法识别, 最终硬是把它换成了17才得以通过。上面这种情况还好些, 要是在macOS系统下的话就还得自己去配置, 哪怕只是少了一个斜杠, 就会找寻不到SDK, 整个人就会卡在那里动弹不得, 并且也不会出现报错的情况, 只是单纯地在那里一直转圈。想要进行真机调试, 可并非像传言称的那般简单容易。彼时, 你将 USB 连接至手机, 并且开启了开发者模式, 然而却依旧收到提示“not found”。随后经过多番探究才察觉到, 原来问题源自 adb 版本过于陈旧, 它与14无法相互适配兼容。于是, 你选择删除原来的后重新安装带上 - tools 才行。在其中搜索, 才能够瞅见真正出现报错的究竟是在哪一行, 而自己输出的那些错误信息基本上可以算是障眼法, 全都呈现为“build ”, 根本就不表明到底错在了哪里。摄像头、和定位这类功能, Toga根本就没进行封装。文档之中写的是“实验性支持”, 实际上就是没有支持。我添加了一个图片显示, 采用http链接, 然而12之后默认禁止HTTP, 白屏情况又出现了。终于只能将图片进行转换, 把转换后的内容塞进toga.Image的data参数里, 为此额外多写二十行代码, 仅仅是为了让一张图片能够显示出来。C扩展就更不用说了, 我使用它来读取Excel, 在build的时候直接就失败了, 它既不识别.so文件, 也不会帮你进行编译, 官方明确表示: “对于numpy、scipy、cv2这些, 别抱希望。”最后换成了完全手写的方式, 并且功能还砍掉了一半, 不过至少能够运行了。更繁琐的是, 若要签名发布AAB, 那是另外一套流程。生成的APK能随意安装, 然而Play不接受APK, 只认AAB。你必须自行去生成密钥, 然后进行签名, 接着还得上传至Play, 额外填写一堆隐私政策内容, 可它才不管这些呢, 只是一味把代码硬塞进APK里。社区更新迟缓得好似蜗牛一般, 好些个PR卡在“needs”状态长达半年有余, 比如说集成这方面, 宣称可以提升性能, 可直至如今依旧处于搁置状况, 无人维护iOS版, Swift支持也尚未合并进去, 中文资料近乎为零, Stack上与之相关的问题数量不超过五十条, 其中一半还是照搬文档的, 令人无奈万分。对于它而言, 适合什么呢? 是用于教学演示, 又或者是公司内网里一个进行查数据操作的小工具。你需要写一个脚本, 添加一个按钮, 选择一个日期, 导出一份CSV文件, 然后打包发送给同事。就这些功能来说, 它真的能够做到, 速度快, 体积很轻巧, 并且没有依赖。然而要是你打算做一个带有动画显示的列表, 实现滑动切换页面, 调用相机进行拍照, 它就没办法达成了。这并非是存在bug的缘故, 而是在设计的时候就没有计划去做这些功能。我的最后那个记账应用程序, 好不容易运行起来了, 点击按钮可以记录一笔账目, 点击另一个按钮能够查询总数。然而字体过于微小以至于难以看清, 按钮没有反馈, 返回键有时没有响应。它的确是编写而成的,也的确是原生安卓安装包, 但看上去却一点都不像一个“应用程序”。装进的那日, 我截取画面发送至群内, 有人询问: “这是被用以制作而成的? ”我表明并非如此, 是。其人回复: “, 怪不得。”。我把调试日志给删除了, 将缓存进行了清理, 把相关的给关闭了。手机上面那个图标依旧留存着, 并没有卸载掉。
返回列表