
跨平台开发真的能够应用于安卓系统吗, 在打包成功之后点击却出现白屏现象, 它究竟是否可以作为主要使用工具呢?一周之前, 我拿了个小型记账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的缘故, 而是在设计的时候就没有计划去做这些功能。我的最后那个记账应用程序, 好不容易运行起来了, 点击按钮可以记录一笔账目, 点击另一个按钮能够查询总数。然而字体过于微小以至于难以看清, 按钮没有反馈, 返回键有时没有响应。它的确是编写而成的,也的确是原生安卓安装包, 但看上去却一点都不像一个“应用程序”。装进的那日, 我截取画面发送至群内, 有人询问: “这是被用以制作而成的? ”我表明并非如此, 是。其人回复: “, 怪不得。”。我把调试日志给删除了, 将缓存进行了清理, 把相关的给关闭了。手机上面那个图标依旧留存着, 并没有卸载掉。