目录
3.1 安装依赖软件包
3.2 安装Cython
3.3 设置环境变量
3.4 安装p4a、Android SDK、NDK以及其他编译文件
Buidozer这个打包库下载安装完毕之后,我们还需要下载一些打包安卓apk所需要的依赖文件。
3.1 安装依赖软件包
首先输入以下命令更新Ubuntu上的软件包:
sudo apt update
然后输入以下命令下载安装必要的软件依赖包:
sudo apt install -y git zip unzip openjdk-17-jdk autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
3.2 安装Cython
在终端中输入以下命令安装Cython这个第三方库:
pip3 install Cython==0.29.19 -i https://pypi.tuna.tsinghua.edu.cn/simple
3.3 设置环境变量
接下来我们要将buildozer.py这个文件添加到环境变量中,方便我们在终端中使用,这个文件在~/.local/bin路径下。双击桌面上的主目录图标打开主目录,然后按下Ctrl+H键就可以将.local这个隐藏文件夹显示出来。
现在我们打开主目录文件夹下的.bashrc文件。
然后在文件最后添加下面这一行代码,保存文件。
export PATH=$PATH:~/.local/bin/
在终端中输入$PATH后如果出现~/.local/bin的话就表明环境变量设置成功。
注:在Linux上,~就代表主目录,主目录当中会包含当前用户的名称。
3.4 安装p4a、Android SDK、NDK以及其他编译文件
幸运的是,这些我们都不需要我们去单独下载,在首次打包时运行buildozer提供的命令后就会自动下载安装了。
第一步:在桌面上新建一个名为demo的文件夹。
第二步:在demo文件夹下打开终端,输入touch main.py命令新建一个待打包的py文件。
第三步:往main.py中复制以下代码。
__version__ = "1.0.0"
from random import random
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.graphics import Color, Ellipse, Line
class MyPaintWidget(Widget):
def on_touch_down(self, touch):
color = (random(), 1, 1)
with self.canvas:
Color(*color, mode='hsv')
d = 30.
Ellipse(pos=(touch.x - d / 2, touch.y - d / 2), size=(d, d))
touch.ud['line'] = Line(points=(touch.x, touch.y))
def on_touch_move(self, touch):
touch.ud['line'].points += [touch.x, touch.y]
class MyPaintApp(App):
def build(self):
parent = Widget()
self.painter = MyPaintWidget()
clearbtn = Button(text='Clear')
clearbtn.bind(on_release=self.clear_canvas)
parent.add_widget(self.painter)
parent.add_widget(clearbtn)
return parent
def clear_canvas(self, obj):
self.painter.canvas.clear()
if __name__ == '__main__':
MyPaintApp().run()
除了第一行表明程序版本信息的代码__version__ = "1.0.0"是笔者自己加上去的之外,区域代码均来自Kivy的官方文档。
代码运行结果如下:
第四步:在终端中输入buildozer init命令,此时可以看待demo文件夹中出现了一个buildozer.spec配置文件。
第五步:在终端中输入buildozer -v android debug命令开始打包。本来在打包前都需要修改buildozer.spec文件的配置,但这第一次打包的主要目的不是为了得到apk文件,而是为了让buildozer下载python-for-android(p4a),Android SDK、NDK以及其他依赖文件,这样以后再打包时就不需要再花很长的时间去下载这些文件了。
现在可以休息下,等待buildozer把必要的文件下载完毕并打包(过程中可能会有需要用户输入y进行确认的步骤,长时间未操作也可能会让Ubuntu进入休眠状态,需要留意下)。如果出现某个文件下载失败的情况,检查下网络是否正常。
笔者这里遇到了一个下载失败的问题,需要科学上网。科学上网之后重新运行buildozer -v android debug命令即可。等待了较长一段时间之后,apk文件成功生成。
经过本教程第一、二、三节的操作,安卓apk的打包环境已经准备完毕,笔者会在下一节教程中讲解buildozer.spec配置文件中的一些常用参数并正式打包一个apk。