2020年 PYTHON用Vscode操作KIVY打包APK踩坑记

KIVY打包APK踩坑记

本人小白中的小白,尝试通过Python+Kivy打包apk,在搭建环境这一Part捣鼓了三天,刚从多个深坑中跳了出来,在此记录一下

基本操作:
1. CMD,安装虚拟环境virtualenv
pip install virtualenv
2. 切换目录用于创建虚拟环境
cd E:\kvproject (位置随便定一个,要先创建文件夹)
3. 创建虚拟环境
E:\kvproject> virtualenv kv-demo(创建一个kv-demo的文件夹,名字随便定)
4. 在kvproject文件夹里面新建另一个文件夹kvtest(其实也可以放在别处的),放入待打包的main.py文件和.kv文件(名字必须为main.py)
5. 在VSCODE打开这个main.py文件,设置虚拟环境

坑X0:

书中教的用pycharm,我习惯用vscode,所以不知道如何设置虚拟环境
方法如下:

a. 点击左下角Python版本


b. 在上面指定一个虚拟环境

c. 指向新建的虚拟环境所在的Scripts文件夹的phthon.exe

d. 然后kvtest文件夹里面会自动生成 .vscode文件夹,里面有个settings.json,
它里面就是你这个虚拟环境所指向的python.exe

6. 开始安装kivy(kivy1.11.1是暂时最新的稳定版本)

	python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.22 kivy_deps.glew==0.1.12
	python -m pip install kivy_deps.gstreamer==0.1.17
	python -m pip install kivy_deps.angle==0.1.9
	python -m pip install kivy==1.11.1
	python -m pip install kivy_examples==1.11.1#最后这个是示例,可选择安装

坑X1–在虚拟环境下装库

装完kivy之后发现原来的非虚拟环境下的python可以打包成apk,但是创建出来的虚拟环境下却说没有kivy这个库,无法打包。

Traceback (most recent call last):
  File "e:/PYTHON study/test/main.py", line 2, in <module>
    from kivy.app import App
ModuleNotFoundError: No module named 'kivy'

我查了一下,之前那串命令安装的kivy文件都跑到我的原始python安装地址那里去了,而虚拟环境里面是没有这些文件。

原因就是:我在装kivy文件的时候并没有在虚拟环境下安装!!所以都装到原来的地址去了…
事实就是我自己把原始的python变成了一个长期的虚拟环境。

我也试过CMD到虚拟目录下再安装,也是不行的,解决方法如下:
CMD到所在的虚拟环境下面的Scripts

输入active.bat用于启动虚拟环境,如果正常启动,会像第三行那样在前面出现(kv-demo)

然后就可以按第6步再装一次kivy文件到正确的虚拟环境下,顺便把原始的python的 lib\site-packages里的kivy相关文件去掉,这样它就变回正常了!

7. 使用Python-for-Android(p4a)手动打包apk,这样不用翻墙什么的。

a. 先下载Virtual Box (www.virtualbox.org/wiki/Downloads)和Extension增强工具

b. 下载虚拟机镜像,网上查到的都是两年前的,解压前4个G,我用的是书里配套的,这个镜像应该比较新,解压前10个G,需要的可以联系我。

c. 虚拟机镜像解压后,双击kivy-p4a-64.ova,可以自动导入虚拟机

d. 在Vitual Box的窗口,先点击设置,选中一个本地的文件夹作为共享文件夹,如果OK键无法按下,则可以调整BIOS,具体方法自己百度

e. 最上方启动虚拟机,进入Ubuntu环境

g. 通过共享文件夹将要打包的main.py文件放入home/kivydev/test/py3apk里面,里面本来就有一套示例在里面,包含.p4a文件,一个main.py和一个已打包好的apk,我把旧的删了。其中.p4a是配置文件,打包时用的,不能乱删!!

h. 在这个文件夹内右键-选择Open Terminal Here进入编辑器

i. 输入 清除其它apk中的builds和dists文件夹的命令:
p4a clean_builds && p4a clean_dists

j. 输入打包命令:p4a apk, 打包挺慢的。

大功告成!!

坑X2 --解压镜像文件

下载的虚拟机镜像文件是经7z压缩成的15个文件,解压后会有15G左右,我盘里明明有足够的空间,可是解压时总是提示磁盘空间不足,查了下是因为解压时会占用C盘15G的空间,可怜我C盘只有10G的空间,百度有教将临时路径改到其它盘,但我改了路径还是不行,还是占用C盘的空间(可能是我不懂得在WINDOWS里面添加路径的原因吧),然后我只能把C盘用360的瘦身再压缩变成19G的空间,竟然还是不行!!
腾来倒腾去,下了个7z的软件来点击提取解压还是不行

无奈瞎点,直接双击kivy-p4a-64.ova文件,竟然解压成功,真不知道为何?
然后就在C盘里直接双击已成功解压的ova文件,自动导入虚拟机。

坑X3 --打包报错

按照书中指示,修改了.p4a中的第二行,将19变成27,说是为了兼容更多Android版本

--dist_name ccw
--android_api 19
--minsdk 19
--sdk_dir /home/kivydev/andr/android-sdk-linux
--ndk_dir /home/kivydev/andr/crystax-ndk-10.3.2

--arch armeabi-v7a
--requirements python3crystax==3.6,kivy
--private .
--package com.myapp.ccw
--name ccw
--version 1.0 
--bootstrap sdl2 

然后打包报错!!

按照报错提示在网上找了很多方法,又UPDATE又装这装那的,又倒腾许久,最后把27又改回原来的19,结果OK了!打包成功,可以发到手机上了!

最后想说,我不是想来向你们荐书的,网上也只有一本关于kivy的书,网上教程少,想系统学习的同学还是买书看一下好,毕竟里面实例多些,只是我翻了两遍以后觉得也不够全面,后面有很大篇幅是关于两个项目的,老实说写得复杂得很,反正我没怎么看懂(当然是我个人水平的问题比较大)


版权声明:本文为gzljjljj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。