kivy主要用于前端设计,当开始制作一款可以投入应用的APP时,光使用kivy自带的功能很难实现很多功能。一直以为kivy不支持在打包APK的时候引入第三方包,经过几周的摸索,大量翻阅外网资料后才发现,其实不管用P4a 还是Buildozer进行打包,其实都是可以支持引入第三方包的。
知道这点后,你在国内基本就是kivy专家水平了。
开始任务前,有几个关键点必须要知道 kivy 支持引入第三方包,但是不是所有的包都支持。所以尽可能使用kivy自带的功能,kivy能够打包大部分第三方包,但是很小众的包,请大家谨慎kivy 打包基于cython,如果版本不匹配会出现各种bug,可以点击下面的链接去查看, 我使用的是 kivy 1.10.1 dev + Cython 0.29.24 环境kivy官网 cython第三方包打包 *** 作步骤
前提是已经安装Buildozer,如果不知道请先看 Buildozer 打包APK
1、创建一个用来存放打包文件的文件夹, 我是Ubuntu 环境,
进入 shell换环境,输入命令:
# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py
# (list) Application requirements
#comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy,numpy
设置kivy version,默认不是最新的版本,这里改到1.10.1dev
# change the major version of python used by the app
osx.python_version = 3
# Kivy version to use
osx.kivy_version = 1.10.1dev
准备主程序
import numpy as np
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.core.audio import SoundLoader
global a
a=np.array([1,2,3])
a=a[1]
kv = Builder.load_string("""
#:import utils kivy.utils
:
BoxLayout:
Button:
id:pic1
text:root.c()
on_press:
""" )
class main(Screen):
def c(self):
global a
return str(a)
sm = ScreenManager() # 创建窗口管理器
screens = [main(name="main")]
for screen in screens: # 为每一个窗口生成容器
sm.add_widget(screen)
class ScreenApp(App):
def build(self):
return sm
ScreenApp().run()
进入linux系统,把主程序命名为main.py, 注意不可以是别的名字,会识别不到,你的文件夹中这时候应该只有 两个文件 main.py, buildozer.spec在linux 下,进入到打包文件夹后,输入 buildozer android debug 开始打包.buildozer文件夹下面村官方的是用来打包的系统程序bin下面存放的是成功打包的APK - 打包成功后bin文件夹中有一个APK文件,传输到手机上进行安装就可以看到如下结果从此开启新的篇章
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)