如何在Ubuntu上安装Buildozer以创建Kivy应用的Android APK?
在Ubuntu 13.10上安装buildozer并不简单。我重新安装了好几次Ubuntu,现在我想分享一下我是怎么安装buildozer的。
在安装buildozer的时候,我遇到了以下错误:
- 找不到./distribute.sh --> 没有找到解决办法(这也是我为什么重新安装了两次Ubuntu,可能是python安装的问题,但我不太确定)
- _add_java_src()失败 --> 添加正确的Java JDK路径解决了这个问题
4 个回答
Buildozer本身不依赖任何库,可以在Python 2.7和3.3及以上版本上运行。根据你想要开发的目标平台,你可能需要安装更多的工具。
Buildozer会尝试给你一些提示,或者帮你安装一些东西,但它并不能覆盖所有的情况。
官方文档提供了更多的信息,但这里是如何在Ubuntu 16.04 64位系统上操作的:
sudo pip install --upgrade cython==0.21
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install build-essential ccache git libncurses5:i386 libstdc++6:i386 libgtk2.0-0:i386 libpangox-1.0-0:i386 libpangoxft-1.0-0:i386 libidn11:i386 python2.7 python2.7-dev openjdk-8-jdk unzip zlib1g-dev zlib1g:i386
看看这个视频,作者是Erik Sandberg,他讲得非常清楚。接下来,你需要进入bin
文件夹,里面可以找到你编译好的APK文件。如果这样做不行,可以在下面留言告诉我。
请注意,如果你只是想编译APK文件,其实并不需要使用Kivy。我在64位的Ubuntu 13.10上使用下面这个脚本来仅安装Buildozer。
#!/bin/sh
# Install necessary system packages
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y build-essential git zlib1g-dev python2.7 python2.7-dev libncurses5:i386 libstdc++6:i386 zlib1g:i386 openjdk-7-jdk unzip
# Bootstrap a current Python environment
sudo apt-get remove --purge -y python-virtualenv python-pip python-setuptools
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | sudo python2.7
rm setuptools*.zip
sudo easy_install-2.7 -U pip
sudo pip2.7 install -U virtualenv
# Install current version of Cython
sudo apt-get remove --purge -y cython
sudo pip2.7 install -U cython
# Install Buildozer from master
sudo pip2.7 install -U git+https://github.com/kivy/buildozer.git@master
下面的步骤对我来说一直很有效:
我在Windows 7(64位)主机系统中的虚拟机(VMware player)上安装了全新的Ubuntu 13.10(32位)。
我选择使用32位版本,因为虚拟机占用的内存不多,64位系统并不是必须的。不过,64位的Ubuntu可能也能正常工作(没有测试过)。我把VMware文件的压缩包上传到了谷歌云盘(Ubuntu中root用户的密码是UbuntuBuildozer)。
你可以在这里找到压缩文件:https://drive.google.com/file/d/0B5m9_RVHCpL-YmxPVnVaYWZyZ2s/edit?usp=sharing
安装Python-Kivy(可以参考这个链接:http://kivy.org/docs/installation/installation-linux.html#ubuntu-11-10-or-newer),使用以下命令:
$ sudo add-apt-repository ppa:kivy-team/kivy
$ sudo apt-get update
$ sudo apt-get install python-kivy
如果你还没有安装pip,可以用这个命令安装:
$ sudo apt-get install python-pip python-dev build-essential
安装buildozer的前提条件:需要zlib、Git、Cython和JDK。
$ sudo apt-get install zlib1g-dev git-core cython openjdk-7-jdk
关于安装Java JDK的指南可以参考这个链接:http://tecadmin.net/install-java-jdk-ubuntu/#
安装buildozer(可以在这里找到:https://github.com/kivy/buildozer)
$ sudo pip install buildozer
初始化buildozer并开始调试(这个步骤只是为了安装Android SDK、NDK和ANT,不需要main.py,可能需要几分钟):
$ buildozer init
$ buildozer android debug
如果buildozer在_add_java_src()时失败:在/home/你的用户名/.bashrc中添加JDK路径 - 在最后添加以下几行(重要的是使用1.x版本的JDK,而不是java-7的路径):
export PATH=$PATH:/usr/lib/jvm/java-1.6.0-openjdk-i386/bin
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-i386
现在去你的应用程序的main.py,执行以下命令:
$ buildozer init
(编辑buildozer.spec文件,修改你的应用名称,并检查第28/29行或第32行的版本号 --> 这取决于你的main.py代码
具体可以参考这个StackOverflow的回答:Buildozer编译简单的Android Kivy应用程序,但在打包时失败)$ buildozer android debug deploy run