Kivy打包Android环境搭建

最近在搭建Kivy打包Android环境,很是折腾了一番,原本官方提供的搭建好的虚拟机也找不到了,只能靠自己搭建了。

选择了Manjaro发行版,因为对Archlinux比较熟悉但是又懒的自己装还得带一个桌面环境,Manjaro的安装很简单,直接下一步就可以了。

重点是Buildozer的安装,Manjaro我选择了Xfce桌面,安装好之后就带了Buildozer大部分的依赖包,只需要:

pip install buildozer —user

然后创建一个main.py写入kivy相关代码之后使用:

buildozer init

生成buildozer.spec文件,然后再执行:

buildozer android debug

就会自动下载Android SDK以及python-for-android等相关包,但是速度很慢需要修改三处,在修改前确保ssr可以被局域网连接:
ssr

在安装好buildozer后,执行buildozer android debug之前修改:

$ git config --global http.proxy socks5://<ssr host address>:1080

$ git config --global https.proxy socks5://<ssr host address>:1080

因为buildozer安装时使用git拉取github上的包,之后确保安装PySocks

pip install PySocks —user

修改<buildozer install path>/buildozer/__init__.py,添加:

import socks
import socket
socks.set_default_proxy(socks.SOCKS5, '<ssr host address>', 1080)
socket.socket = socks.socksocket

之后执行buildozer android debug直到python-for-android被安装到<project path>/.buildozer/android/platform/python-for-android中断执行命令,修改:

/.buildozer/android/platform/python-for-android/pythonforandroid/util.py

添加跟上面相同的内容重新执行命令即可。

中间在执行时会出现类似kivy/_event.c: No such file or directory的错误,但是没有影响会继续执行。

其次会出现:

libtinfo.so.5: cannot open shared object file: No such file or directory

我参考ncurses5-compat-libs的PKGBUILD,编译安装上可以解决。

中间如果出现一些memory alloc错误,检查swap空间是否足够,不够的话可以使用下面的命令创建:

# dd if=/dev/zero of=/swapfile bs=1M count=512 status=progress
# chmod 600 /swapfile
# mkswap /swapfile
# swapon /swapfile

其他的一些问题:

VMware无法使用USB设备,我使用的是kafan上的VMware Workstation Pro 15.1.0 精简官方中文安装注册版,需要卸载装2019-05-21发布v2才能解决。

没添加-v参数也会输出大量log日志,我使用github上buildozer的0.40.dev0版本,可以在buildozer.spec中log_level指定日志级别。

使用kivy的Android native embedded browser代码打包成apk执行会闪退,使用adb logcat查看出现一些难以解决的错误信息,解决方法:
Android native embedded browser

Buildozer的一些命令说明:

$ buildozer android debug #打包debug版apk文件
$ buildozer android debug deploy #打包并部署到真机
$ buildozer android debug deploy #打包并部署到真机并运行
$ buildozer android deploy run logcat #部署运行并执行adb logcat

参考链接:
https://github.com/kivy/python-for-android/issues/1908

补充:
找到了网络上共享已经配置好的Kivy环境的的VirtualBox镜像文件:KivyCompleteVM

转载请注明: 本文《Kivy打包Android环境搭建》来源于bstaint的博客

没有评论: