SEO只是外表
技术才是我的追求

Python Kivy学习笔记4 – 打包APK

 使用kivy编程好程序,最后的步骤就是打包成APK应用。在Windows系统最好的办法就是通过VirtualBox虚拟机安装Linux系统的打包环境(kivydev64),使用Buildozer把py文件打包成apk应用。

kivydev64 v5.0是一个64位的Ubantu系统虚拟机,作者已经安装好打包apk所需要的软件和环境,设置好各种参数,我们可以直接安装使用,不需要再额外的配置。

kivy打包成APK应用步骤如下:

1、安装VirtualBox虚拟机

安装VirtualBox虚拟机,免费软件,官网直接下载。

VirtualBox虚拟机官方地址:https://www.virtualbox.org/

2、下载kivydev64 v5.0虚拟机环境。

kivydev64虚拟机环境文件比较大,差不多18G

kivydev64 v5.0的网址和使用说明:https://github.com/nkiiiiid/kivy-apk

3、VirtualBox虚拟机导入kivydev64环境,

如下图所示

4、运行kivydev64环境

运行kivydev64环境,进入到/home/kivydev/test测试目录,如下图

py3apk目录就是一个打包的例子,其中main.py需要打包的python文件,buildozer.spec就是打包的配置文件,bin目录存放着打包好的APK文件。

注意:在该目录下的py文件,必须使用main.py命名才能进行打包。

5、新建打包文件夹

要打包我们的自己APK应用,可以在test目录下新建一个文件夹,例如myapp,把我们的kv文件和py文件拷贝进去,从py3apk文件夹拷贝一个buildozer.spec配置文件。其中py文件名要修改成main.pybuildozer.spec要配置一些打包参数。

先在该目录下对main.py进行编译, 鼠标右键选择“Open Terminal Here”,执行代码:python3 main.py。代码运行良好才继续执行下面步骤
虚拟系统和我们本机系统之间的文件拷贝粘贴可以百度查找一下,我自己忘记了。可以通过共享文件夹实现,需要先运行系统,然后安装增强功能。

6、配置buildozer.spec文件的参数。

buildozer.spec各种参数已经在kivydev64的网页有具体的说明,我们只需要自定义几个参数即可,例如apk的应用名、打包进apk的文件、打包第三方库、apk版本。

下面是常用的部分参数,并非全部,可以参考一下。

[app]

# (str) app应用名
title = My Application

# (str) 包名结尾
package.name = myapp

# (str) 包名开头,如果打包release apk必须把test改成其他任意字符串
package.domain = org.test

# (str) main.py所在目录,默认是spec所在目录
source.dir = .

# (list) 打包进apk的文件
source.include_exts = py,png,jpg,kv,atlas

# (list) 打包进apk的文件
#source.include_patterns = assets/*,images/*.png

# (list) 不打包进apk的文件
#source.exclude_exts = spec

# (list) 不打包进apk的目录,默认是tests和bin
#source.exclude_dirs = tests, bin

# (list) 不打包进apk的文件
#source.exclude_patterns = license,images/*/*.jpg

# (str) app版本
version = 0.1

# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py

# (list) 通称 requirements,打包第三方库时必须添加到这里
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy

# (str) 第三方库源代码所在目录,如果指定了,打包时就会直接使用这个源代码,不会再去下载。
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy


# (list) Garden requirements,如果你用到kivy.graden的库就需要添加到这里
#garden_requirements =

# (str) app启动时的画面图片(闪屏)路径,默认是kivy图标
#presplash.filename = %(source.dir)s/data/presplash.png

# (str) app图标路径
#icon.filename = %(source.dir)s/data/icon.png

# (str) app显示方向,默认是竖屏 (one of landscape, sensorLandscape, portrait or all)
orientation = portrait

# (list) service服务列表
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY

#
# OSX Specific
#

#
# author = © Copyright Info

# change the major version of python used by the app
osx.python_version = 3

# Kivy version to use
osx.kivy_version = 1.9.1

#
# Android specific
#

# (bool) app是否全屏,默认否
fullscreen = 0

# (string) 闪屏的背景色
# Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
# red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
# darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
# olive, purple, silver, teal.
#android.presplash_color = #FFFFFF

# (list) Permissions app权限配置
#android.permissions = INTERNET

# (int) Target Android API, 目标api level
android.api = 27

# (int) Minimum API ,app能支持的最低api level
android.minapi = 21

# (int) Android SDK 版本
#android.sdk = 27

# (str) Android NDK 版本
android.ndk = 19c

# (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi.
android.ndk_api = 21

# (bool) Use --private data storage (True) or --dir public storage (False)
#android.private_storage = True

# (str) Android NDK 路径
android.ndk_path = /home/kivydev/andr/android-ndk-r19c

# (str) Android SDK 路径
android.sdk_path = /home/kivydev/andr/android-sdk-linux

# (str) ANT directory 路径
android.ant_path = /home/kivydev/andr/apache-ant-1.9.4

# (bool) 是否跳过Android sdk 升级,默认否
# android.skip_update = False

# (bool) 升级sdk过程中会询问同意接受sdk license,默认是提示你选择,改为True则是默认同意接受
# android.accept_sdk_license = False

# (str) app 入口类,一般不修改
#android.entrypoint = org.renpy.android.PythonActivity

# (str) app主题类型,一般不修改
# android.apptheme = "@android:style/Theme.NoTitleBar"
如果你程序需要访问网络,那么Permissions app权限配置的android.permissions = INTERNET的“#”要取消掉,不然APK应用会在手机打开时闪退。

添加第三库,例如访问网络的requests库:

requirements = python3,kivy,requests

修改载入apk的画面(logo.png放在main.py同一目录下):

presplash.filename = %(source.dir)s/logo.png

修改apk的桌面显示图标(位置同上,尺寸512*512)

icon.filename = %(source.dir)s/icon.png

7、运行打包命令

运行打包命令:

kdpp go

如果在打包一个项目后,要打包其他项目时,先运行清理环境命令:

kdpp clean

未经允许不得转载:棋哥SEO博客 » Python Kivy学习笔记4 – 打包APK

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址