Code前端首页关于Code前端联系我们

Python+kivy开发应用程序进行练习和练习

terry 2年前 (2023-09-22) 阅读数 147 #移动小程序

虽然Python是一门多才多艺的语言,但用它来创建应用程序似乎还是错误的。因此,使用Python开发的应用程序应该用作编码练习或自娱自乐。 ,加上目前这方面的mod还很不成熟,有很多bug。总之我劝大家不要轻易进去。

准备工作

使用Python开发应用程序需要使用Python模块——kivy。 kivy 是一个开源、跨平台的 Python 开发框架,用于开发新应用程序。简而言之,这是一个Python桌面程序开发框架(类似于wxpython等模块)。最强大的是,kivy 支持 linux、mac、windows、android 和 ios 平台。这就是为什么需要这个模板来开发应用程序。

虽然kivy是跨平台的,但是如果想在不同平台上使用Python代码,就需要将Python代码编译成对应平台的可执行程序。幸运的是,kivy 项目下有一个打包工具项目——buildozer,其官方方法提供的打包工具比较简单,自动化程度较高。其他项目如Python-for-android也可以起到类似的作用,这里不再介绍。

安装kivy开发世界

您需要在PC上安装kivy开发世界。这里演示一下mac和linux下的安装过程。 ?安装成功。

install kivy for centos7

首次安装依赖:

yum install \
make \
mercurial \
automake \
gcc \
gcc-c++ \
SDL_ttf-devel \
SDL_mixer-devel \
khrplatform-devel \
mesa-libGLES \
mesa-libGLES-devel \
gstreamer-plugins-good \
gstreamer \
gstreamer-python \
mtdev-devel \
python-devel \
python-pip \
java-devel

安装 cython 和 kivy:

pip install Cython==0.20
pip install kivy

在 centos 上安装 kivy 参考:https://kivy.org/docs/installation/installation-linux.html#using- software-packages♽ 使用说明:有关安装 kivy 的另一种方式,请访问:https://kivy.org/#download

使用 kivy 构建第一个 Python 应用程序

安装 kivy 后即可开发应用程序。这是 hello-world 程序的演示。 ,kivy的更敏感的使用不是本文的重点,稍后会介绍。创建main.py文件,输入:

#! -*- coding:utf-8 -*-
from kivy.app import App
class HelloApp(App):
pass
if __name__ == '__main__':
HelloApp().run()

创建hello.kv文件,输入:

Label:
text: 'Hello, World! I am nMask'

简单说明:main.py是登录函数,定义了一个HelloApp类,该类继承kivy。应用; hello.kv文件是一个kivy程序,与定义界面风格等相同。该文件的默认情况是类名是小写的,并且应用程序被删除。

部署第一个Python应用mac、linux,在windows平台上运行,那么如何在android或苹果手机上运行呢?我们知道,为了在Android上运行,我们需要安装apk安装程序,因此我们需要使用前面提到的buildozer工具。 (buildozer工具可以安装kivy程序,支持android、ios等)。 buildozer的安装过程非常简单。 :
pip install buildozer

使用buildozer工具将kivy程序打包成apk

上传到python项目目录:

buildozer init

成功运行会创建一个buildozer.spec构建文件。您可以通过编辑配置文件来更改应用程序的名称,然后运行:

buildozer android debug deploy run

运行上述命令将生成跨平台的安装包,可以适用于Android、iOS等。对于 Android,请使用 python-for-android 项目。

第一次运行上述命令时,Android sdk等必要文件会自动下载到系统中,如下图。

Python +kivy 开发 App,实践及练习之用

注意:我们只显示apk文件中的包。 iso格式可以自行学习。参考文件:https://github.com/kivy/buildozer。

Python apk程序测试

如果以上步骤正确完成,应该会在项目文件夹下的bin文件夹中创建一个apk文件,类似如下:

Python +kivy 开发 App,实践及练习之用

然后将apk下载到您的Android手机上。只需安装即可,测试结果如下:

Python +kivy 开发 App,实践及练习之用

打开应用

Python +kivy 开发 App,实践及练习之用

buildozer使用技巧

Usage:
buildozer [--profile <name>] [--verbose] [target] <command>...
buildozer --version
Available targets:
android        Android target, based on python-for-android project
ios            iOS target, based on kivy-ios project
android_old    Android target, based on python-for-android project (old toolchain)
Global commands (without target):
distclean          Clean the whole Buildozer environment.
help               Show the Buildozer help.
init               Create a initial buildozer.spec in the current directory
serve              Serve the bin directory via SimpleHTTPServer
setdefault         Set the default command to run when no arguments are given
version            Show the Buildozer version
Target commands:
clean      Clean the target environment
update     Update the target dependencies
debug      Build the application in debug mode
release    Build the application in release mode
deploy     Deploy the application on the device
run        Run the application on the device
serve      Serve the bin directory via SimpleHTTPServer
Target "android_old" commands:
adb                Run adb from the Android SDK. Args must come after --, or
use --alias to make an alias
logcat             Show the log from the device
Target "ios" commands:
list_identities    List the available identities to use for signing.
xcode              Open the xcode project.
Target "android" commands:
adb                Run adb from the Android SDK. Args must come after --, or
use --alias to make an alias
logcat             Show the log from the device
p4a                Run p4a commands. Args must come after --, or use --alias
to make an alias

buildozer打包过程中的业务点

如果在打包过程中遇到错误,可以编辑配置文件buildozer.spec log_level为2,然后再次运行可以看到具体的错误信息。

错误:32bits libs可能安装不正确

我在centos7上运行的时候报这个错误。总体思路是系统缺少32位依赖文件。

解决方案:

yum -y install --skip-broken glibc.i686 arts.i686 audiofile.i686 bzip2-libs.i686 cairo.i686 cyrus-sasl-lib.i686 dbus-libs.i686 directfb.i686 esound-libs.i686 fltk.i686 freeglut.i686 gtk2.i686 hal-libs.i686 imlib.i686 lcms-libs.i686 lesstif.i686 libacl.i686 libao.i686 libattr.i686 libcap.i686 libdrm.i686 libexif.i686 libgnomecanvas.i686 libICE.i686 libieee1284.i686 libsigc++20.i686 libSM.i686 libtool-ltdl.i686 libusb.i686 libwmf.i686 libwmf-lite.i686 libX11.i686 libXau.i686 libXaw.i686 libXcomposite.i686 libXdamage.i686 libXdmcp.i686 libXext.i686 libXfixes.i686 libxkbfile.i686 libxml2.i686 libXmu.i686 libXp.i686 libXpm.i686 libXScrnSaver.i686 libxslt.i686 libXt.i686 libXtst.i686 libXv.i686 libXxf86vm.i686 lzo.i686 mesa-libGL.i686 mesa-libGLU.i686 nas-libs.i686 nss_ldap.i686 cdk.i686 openldap.i686 pam.i686 popt.i686 pulseaudio-libs.i686 sane-backends-libs-gphoto2.i686 sane-backends-libs.i686 SDL.i686 svgalib.i686 unixODBC.i686 zlib.i686 compat-expat1.i686 compat-libstdc++-33.i686 openal-soft.i686 alsa-oss-libs.i686 redhat-lsb.i686 alsa-plugins-pulseaudio.i686 alsa-plugins-oss.i686 alsa-lib.i686 nspluginwrapper.i686 libXv.i686 libXScrnSaver.i686 qt.i686 qt-x11.i686 pulseaudio-libs.i686 pulseaudio-libs-glib2.i686 alsa-plugins-pulseaudio.i686 python-matplotli

参考:https://ask.fedoraproject.org/en/question/9556/how-do-i-install-32bit-libraries-on-a-64-bit-fedora/

错误报告:编译Cython文件时出错

错误表示cython文件有错误。可能是cython模块没有安装,或者版本有问题。解决方案:

pip install cython==0.25

Error: IOError: [Errno 2] No such file orfolder....在最后打包步骤中将apk文件复制到项目的bin文件夹中时报错。这是一个构建器错误。

解决方案:

编辑文件 /usr/local/lib/python2.7/dist-packages/buildozer/tagets/android.py:

在文件开头添加: til 。 version import LooseVersion

替换第 786 行下面的代码:包含 Buildozer 和一些依赖文件,为测试 buildozer 包提供平台。因为我在mac上使用包里的buildozer时一直报错,后来换成centos还是不行,所以就下载了这个虚拟机。测试结果如下:

Python +kivy 开发 App,实践及练习之用

虚拟机下载地址:http://txzone.net/files/torrents/kivy-buildozer-vm-2.0.zip

注意:对于无法解决依赖问题的朋友,您可以使用该虚拟机来进行程序包。开发环境建议使用专用机。

kivy开发示例

由于本文的重点是介绍如何使用kivy+buildozer开发python应用程序,kivy的开发流程以及应用程序的功能。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门