6.3 Android 打包_使用Buildozer打包成apk

        在 Linux 环境下通过 Buildozer、 Python-for-Android 和 Kivy Launcher 等方面绍如写好的程序打包为在 Android 环境下可执行的文件。

6.3.1 使用 Buildozer 软件打包为 apk【我用的方式】

        使用 Buildozer 可以自动构建整个打包的过程,该软件会自动下载并设置 python-for-android的必备组件,包括 Android SDK 和 NDK,然后构建一个可自动推送到设备的 apk,这也是官方首推新使用的一种方式。
        安装 命令:

git clone https://github.com/kivy/buildozer.git
cd buildozer
sudo python setup.py install

pip3 install --user --upgrade buildozer

        完成后还需要按安装Buildozer的依赖环境。如:Ubuntu18(64bit)可以执行一下命令

sudo apt update
sudo apt install -y git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-configzlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev
pip3 install --user --upgrade cython virtualenv # 如果在虚拟环境中把 --user删除
# 把下面这一行添加到 ~/.bashrc文件最后一行
export PATH=$PATH:~/.local/bin/

        安装成功后,通过cd命令进入到需要打包项目的同级目录中,执行以下命令生成buildozer.spec配置文件:

buildozer init

参考以下参数编辑 buildozer.spec 配置文件:

【由于使用文字翻译的照片,可能有符号是中文输入法的情况,仅供参考】

[app]
# 以下为通用配置
# 应用名称
title = 51斩百词
# 包名
package.name = myapp

#域名
package.domain = com.cocpy

# main.py文件所在的位置,由于该配置文件是在项目内生成的(即同级目录),故设置为“.”
source.dir = .

# 需要打包进来的文件的扩展名
source,include_exts = py,kv,atlas,db,sql,ttf,png,jpg,docx,xml,mp3

# 匹配列表
# source,include_patterns = files/*,image/*

# 不需要打包进来的文件的扩展名
#source.exclude_exts = spec

# 排除的目录
#source.exclude_dirs = tests, bin

#排除的列表
#source.exclude_patterns = license,images/*/*.jpg



# 应用版本(写法一)
version = 1.0.0

# 应用版本(写法二)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py

# 应用依赖包,很重要,大部分闪退都是因为具体的依赖未打包进来
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy

# 自定义源文件
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy

# 通过garden安装的包
garden_requirements = navigationdrawer,matplotlib

# 预加载图片文件
#presplash.filename = %(source.dir)s/data/presplash.png
# 应用图标
icon.filename = %(source.dir)s/image/CCWord.png


#应用支持的方向(landscape, sensorLandscape,portrait or all)
orientation = portrait

# 声明的服务列表
#services = NAME:ENTRYPOINT_TO_PYNAME2:ENTRYPOINT2_TO_PY

#
# OSX Specific
#

# OSX配智
# 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
#
# Android配置
#全屏显示1,非全屏0
fullscreen = 1

# (string) Presplash background color (for new android toolchain)
# 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 = white

#申请的权限
android.permissions = INTERNET,WRITE_EXTERNAL_STORAGE,READ_EXTERNAL_STORAGE

#支持的Android API版本,越高兼容性越好
#android.api = 27

# 支持最低的Android API版本,越低越好
#android.minapi = 21

# 使用的Android SDK版本
#android.sdk = 20



#使用的Androld NDK版本
#androld.ndk = 17c

#支持最低的NDK版本
#android.ndk_ap1 = 21

# 使用私有存储(True)or公共存储(False)
#android.private_storage = True

# Android NDK路径
#android.ndk_path =

# Android SDK路径
#android.sdk_path =

# ANT路径,为空会自动下载
#android.ant_path =

#是否跳过更新SDK
# android.skip_update = False

#是否自动接受SDK协议
# android.accept_sdk_license = False

#默认入口
#android.entrypoint = org.renpy.android.PythonActivity

# 项目白名单
#android,whitelist =

# 白名单路径
#android.whitelist_src =

# 里名单路径
#android.blacklist_src =

# (list) List of Java .jar files to add to the libs so that pyjnius can access
# their classes. Don't add jars that you do not need, since extra jars can slow
# down the build process. Allows wildcards matching, for example:
# OUYA-ODK/libs/*.jar添加的Android jar包
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar

# 使用的Java文件
#android.add_src =



#添加AndroidAAR文档(目前只适用于sd12_gradle bootstrap)
#android.add aars =

# 添加Gradle依赖
#android.gradle_dependencies =

# 添加的Java类
#android.add_activites = com,example.ExampleActivity

#使用p4a的版本,默认master
p4a.branch = master

#控制台类别 应用或者游戏
#android.ouya.category = GAME

#控制台图标文件名称。必须是732x412的PNG图片
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png

#XML文件过滤器
#android.manifest.intent_filters =

#设置启动模式为主活动
#android.manifest.launch_mode = standard

# Android附加库复制进libs/armeabi
#android.add_libs_armeabi = libs/android/*.so
#android.add_libsarmeabi_v7a= ibs/android-v7/*.so
#android.add_libs_x86 = libs/android-x86/*.so
#android.add_libs_mips = libs/android-mips/*.so

# 屏幕是否常亮
# Don't forget to add the WAKE_LOCK permission if you set this to True
#android.wakelock = False

# (list) Android应用程序元数据设置 (key=value format)
#android.meta_data =

#要添加的Android库
#android.library_references =

# Android日志过滤
#android.logcat_filters = *:S python:D

# 用复制库取代生成libpymodules.so
#android.copy_libs = 1


#主更构建的Android架构:armeabi-v7a,arm64-v8a,x86
android.arch = armeabi-v7a

#
# Python for androld (p4a) specific
#
#p4a特性
#干载python-for-android路径,为空默认从git下载
#p4a.sourcedire

#本地的构建方法
#p4a.local_recipes =

#p4a相关文件
#p4a.hook =

# 用于构建Android的Bootstrap
# p4a.bootstrap = sdl2

#p4a端口号
#p4a.port =

#
# i0S specific
#
#iOS特性
# (str) Path to a custom kivy-ios folder
#ios.kivy_ios_dir= ../kivy-ios
# Alternately, specify the URL and branch of a git checkout:
ios.kivy_ios_url= https://github.com/kivy/kivy-ios
ios,kivy_ios_branch = master


#Another platform dependency: ios-deploy
# Uncomment to use a custom checkout
#ios.ios_deploydir = ../ios_deploy
# Or specify URL and branch
ios.ios_deploy_url = https://github.com/phonegap/ios-deploy
ios.ios_deploy_branch = 1.7.0

# (str) Name of the certificate to use for signing the debug version
# Get a list of available identities: buildozer ios list_identities
#ios,codesign.debug = "iPhone Developer: <lastname> <firstname> (<hexstring>)"





# (str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios,codesign.debug)s

[buildozer]

# (int) Log level ( 0 = error only, 1 = info, 2 = debug (with command output))
log_level = 2

# (int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1

# (str) Path to build artifact storage, absolute or relative to spec file
# build dir = ./.buildozer

#(str) Path to build output (i.e..apk,.ipa) storage
#bindir=./bin

# ---------------------------------------------------------------------------
# List as sections
#
# You can define all the "list” as [section:key].
# Each line will be considered as a option to the list.
# Let's take [app] / source.exclude_patterns.
# Instead of doing:
#
# [app]
# source.exclude_patterns = license,data/audio/*.wav,data/images/original/*
#    This can be translated into:
#
#[app:source.exclude_patterns]
#license
#data/audio/*.wav
#data/images/original/*
#

# ----------------------------------------------------------------------------
Profiles
#
#

# You can extend section / key with a profile
# For example, you want to deploy a demo version of your application without
# HD content. You could first change the title to add "(demo)" in the name
# and extend the excluded directories to remove the HD content.
#
#[app@demo]
#title = My Application (demo)
#
# [app:source.exclude_patterns@demo]
# images/hd/*
#
#     Then, invoke the command line with the "demo" profile:

#buildozer --profile demo android debug

在项目中先添加的依赖包一定要写到requirements中去,再通过以下命令生成一个调试版本的apk

buildozer -v android debug

首次打包过程会很慢,需要耐心等待。打包完成后会在项目的bin目录下生成一个apk文件。

参考官方链接:https://buildozer.readthedocs.io/en/latest

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

静候光阴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值