大型真人秀节目:buildozer 折腾记

先贴3个库的链接 : kivybuildozer, p4a(python-for-android) 

buildozer 是 kivy 开发小组基于自家的 python-for-android 开发的傻瓜式 android 编译工具,用于将 python 项目编译成为 .apk 文件。

本文记录了整个折腾过程(不完全整理,非线性时间顺序),建议读完再操作,因为前面可能是我踩过的坑 ....  (时间是 2019年6月22日21:31:38 )

配置

     OS : UBUNTU 18.04 LTS (官方 buildozer 虚拟机 XUBUNTU 由于无法换到可以用的源,被替换了)

     python : python3

     buildozer : 0.39 ( 通过 812 ISSUE 升级到了 0.40.dev0)

     python-for-android: master

     kivy: 1.11.0

先按照官方步骤完成 buildozer 虚拟机的安装,buildozer 虚拟机安装的是 xubuntu 系统。

首先建议将 buildozer 使用开发分支重新安装,可以解决一个 'Buildozer' object has no attribute 'translate_target' 的问题。

pip install --upgrade https://github.com/kivy/buildozer/archive/4c2152b.zip

在 xubuntu 系统中切换至 项目目录,执行

buildozer init

一个名为 buildozer.spec 的文本文件会被自动生成,里面的内容将指导整个编译过程

我这里的 main.py 内容很简单,只有一个按钮

from kivy.app import App
from kivy.uix.button import Button


class SimpleApp(App):

    def build(self):
        return Button(text='joke')

if '__main__' == __name__:
    SimpleApp().run()

那么将问题简化为编译一个带有 kivy 的程序为 .apk 文件,不包含其他任何依赖

bin 和 build_area 目录分别是编译结果输出目录和编译中间目录,在 buildozer.spec 文件中分别指定到 bin_dir 和 build_dir

按照 README 中所说,从 https://www.crystax.net/en/download 下载了 ndk 并解压,对 buildozer.spec 做如下修改

# (str) Title of your application
title = SimpleAppTitle

# (str) Package name
package.name = SimpleApp

# (str) Package domain (needed for android/ios packaging)
package.domain = dav.test

...

# Require python3crystax:
requirements = python3crystax,kivy

# Point to the directory where you extracted the crystax-ndk:
android.ndk_path = /home/kivy/Desktop/Projects/android/android-ndk-r17c/

另外,你一定有需求的就是打开调试日志

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

于是就可以按照示例进行编译了,按如下即可,后面俩(deploy run)是部署和运行,需要连接 android 设备

buildozer android debug

那么发现下载过程非常慢,于是就去 p4a(python-for-android) 克隆库下来,指定到目录,同时指定为 master(master 会包含 python3 编译所遇到的一些已知问题的处理)

# (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
p4a.source_dir = /home/kivy/Desktop/Projects/python-for-android

# (str) python-for-android branch to use, defaults to master
p4a.branch = master

其他的包怎么办呢????我能有的思路就是自己通过比较快速的方法下载好包,替换到 buildozer 执行过程的目录中。那么问题就变成该怎么完成替换了(下载我已经解决好了 ^_^)

那么首先我们看日志

评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值