最近在搭建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可以被局域网连接:
在安装好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
没有评论:
发表评论