上次尝试了一下kivy,并且使用Kivy Laucher在安卓手机上成功运行python程序,非常好!又get了一项开发安卓手机端程序的新技能。 但是Kivy Laucher的方式还是不同于安卓手机常用的apk包。如果和其他人写好的程序,Kivy Laucher的方式还是比较麻烦的。 所以,我们来尝试打包apk! Kivy官方推荐使用Buildozer来打包,说什么可以自动化打包过程。然而我试了一下,发现安装各种依赖的过程非常的痛苦,虽然是自动下载的,但是因为网络环境的问题,非常的不顺畅。且每次新建一个项目后,打包过程会重复下载很多依赖,这一点让我非常的不理解。如果下载依赖的过程很快也就罢了,无奈每次下载过程都很慢,且会发生问题。 其实p4a也是Kivy官方推荐的打包方式,虽然需要些手工活,但是其实过程也并不复杂。 而且,(似乎)Buildozer也是基于p4a的。 WSL是Windows Subsystem for Linux,就是Windows下的Linux子系统,比较新版的Win10都可以安装。因为打包需要Linux环境,所以可以用虚拟机安装一个Linux系统。但是因为虚拟机有些笨重,而且安装虚拟机和一个新的Linux系统也有些麻烦,所以WSL成为一个非常好的选择。 安装方便,卸载方便,而且WSL和Windows主系统共享一个文件系统,拷贝文件也非常方便。 安装WSL的方法就不多说了,网上的介绍非常的多。WSL可安装的Linux有几个版本,我们这里使用Ubuntu。就目前来说,安装好的Ubuntu版本代号应该是Focal。 我用uname查看的信息如下: 首先更改apt源为国内源 将文件更改为如下内容 更新系统 编辑文件内容如下 上面的命令如果出现 注意SDK/NDK的版本,请安装推荐的版本,避免出现问题 运行如下命令(注意第二行里的 输入 修改 在文件末尾添加如下内容 现在可以删除之前zip文件解压缩的sdk文件夹 注意:这里不需要用 不过Buildozer推荐安装的是build-tools;29.0.0,所以也可以安装29.0.0版本 如下也可以列举所有可以安装的build-tools的版本 可以看到最新版的是 打包命令就不多解释了,请参考官方的文档。需要注意的是 第一次运行打包命令会自动下载很多包和依赖,要耐心等待。 整个过程对网络要求也很高,对于大部分人来说,大概率会出现下载不了的情况。 随后出现了下载中断,或者下载速度很慢,我们可以Ctrl+C中断下载,使用其他办法下载如下软件包,并保存于 随后再次运行打包命令,就会自动跳过下载hostpython3,继续后面的过程了。 你可能需要针对几个文件的下载反复操作类似上面的命令。或者采用科学的上网方法以避免网络问题。 打包过程我也注意到出现了其他的错误提示,不过都并没有中断而继续了,所以就没有在意。不知后面有没有其他问题。 经过一番波折以后,当返回命令提示符时,在运行打包命令的当前目录下应该已经生成了一个apk文件。 还有一个好消息是,一次打包后,以后再给别的项目打包就不用再次下载那么多依赖了。 在我的电脑上,用Windows资源管理器访问 拷贝那个apk文件到手机里,运行,安装……就可以在手机屏幕上看到安装好的Hello World软件了。 基于kivy的python程序apk打包搞定了!过程并不复杂,但是网络很关键。 其实打包的讲究还是很多的,具体可以参考官网文档 https://kivy.org/#support。还有,如果要在应用市场发布apk,还需要配置权限、加签名等其他的操作,这些都到需要的时候再研究吧。 以上是我基于具体操作所作的笔记,希望可以帮助到其他人。目录
打包工具
所以我又尝试了 python-for-android (以下简称p4a)。
关于打包apk的官方文档: https://kivy.org/doc/stable/guide/packaging-android.htmlp4a
WSL
$ uname -a Linux DESKTOP-MY 4.4.0-18362-Microsoft #836-Microsoft Mon May 05 16:04:00 PST 2020 x86_64 x86_64 x86_64 GNU/Linux
配置环境
WSL的配置
cd ~ mkdir bak cp /etc/apt/sources.list ~/bak/ sudo vi /etc/apt/sources.list
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
sudo apt-get update sudo apt-get upgrade
安装各种依赖和包
根据buildozer的说明文档安装依赖
https://buildozer.readthedocs.io/en/latest/installation.html#targeting-androidsudo apt-get update sudo apt-get install git zip unzip openjdk-8-jdk python3-pip autoconf libtool pkg-config zlib1g-dev libncurses5-dev libncursesw5-dev libtinfo5 cmake libffi-dev libssl-dev
mkdir ~/.pip vi ~/.pip/pip.conf
[global] index-url = https://mirrors.aliyun.com/pypi/simple/
pip3 install --user --upgrade Cython==0.29.19 virtualenv # the --user should be removed if you do this in a venv
安装p4a的依赖
https://python-for-android.readthedocs.io/en/latest/quickstart/sudo dpkg --add-architecture i386 sudo apt-get update sudo apt-get install build-essential ccache git zlib1g-dev python3 python3-dev libncurses5:i386 libstdc++6:i386 zlib1g:i386 openjdk-8-jdk unzip ant ccache autoconf libtool libssl-dev
Package ... is not configured yet.
的报错,解决方法如下:sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/ sudo mkdir /var/lib/dpkg/info/ sudo apt-get update sudo apt-get -f install
安装p4a
pip3 install python-for-android
安装Android SDK/NDK
下载SDK
https://developer.android.google.cn/studio?hl=zh-cn#downloads
也可以直接点击下面的下载链接
https://dl.google.com/android/repository/commandlinetools-linux-6514223_latest.zip?hl=zh-cn文件名: commandlinetools-linux-6514223_latest.zip 文件大小: 82 MB SHA-256: ef319a5afdb41822cb1c88d93bc7c23b0af4fc670abca89ff0346ee6688da797
下载NDK
r19b
。下面这个NDK的下载网页没有这个版本,可以直接点击之后的r19b
版本的下载链接
只有r19c: https://developer.android.google.cn/ndk/downloads/older_releases?hl=zh-cnr19b
下载链接: https://dl.google.com/android/repository/android-ndk-r19b-linux-x86_64.zip?hl=zh_cnSHA-1: 16F62346AB47F7125A0E977DCC08F54881F8A3D7
安装SDK/NDK
解压
mkdir ~/androidsdk cd ~/androidsdk unzip /mnt/c/p4a/commandlinetools-linux-6514223_latest.zip mkdir ~/Android cd ~/Android mkdir SDK unzip /mnt/c/p4a/android-ndk-r19b-linux-x86_64.zip
部署cmdline-tools
$HOME
,这里不可以使用“~
”符号)cd ~/androidsdk/tools/bin/ ./sdkmanager --sdk_root=$HOME/Android/SDK "cmdline-tools;latest"
y
回车,接受许可协议添加环境变量
.bashrc
vi ~/.bashrc
export ANDROID_SDK_ROOT="$HOME/Android/SDK" export PATH=$PATH:~/.local/bin/:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/:$ANDROID_SDK_ROOT/tools/:$ANDROID_SDK_ROOT/platform-tools/ export ANDROIDSDK="$HOME/Android/SDK" export ANDROIDNDK="$HOME/Android/android-ndk-r19b" export ANDROIDAPI="27" # Target API version of your application export NDKAPI="21" # Minimum supported API version of your application
cd ~ rm -rf ~/androidsdk/
Ctrl+D
关闭窗口,然后再次打开Ubuntu下载安装API platform和build-tools
安装 API platform,推荐的API level是27。sdkmanager "platforms;android-27"
--sdk_root=...
参数了。
sdkmanager "build-tools;28.0.2"
sdkmanager "build-tools;29.0.0"
sdkmanager --list | grep build-tools
"build-tools;30.0.0"
打包过程
新建一个hello world项目
$ mkdir ~/helloworld $ cp /mnt/c/p4a/helloworld/* ~/helloworld/ $ ls -l ~/helloworld/ total 3640 -rwxrwxrwx 1 zz zz 3725920 Jun 13 10:31 DroidSansFallback.ttf -rwxrwxrwx 1 zz zz 77 Jun 13 10:31 hello.kv -rwxrwxrwx 1 zz zz 359 Jun 13 10:31 main.py
打包命令
p4a apk --private $HOME/helloworld --package=org.example.hello --name "Hello World" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy
--private $HOME/helloworld
是为了指定项目所在的文件夹。打包过程可能遇到的问题
如果出现下载慢或者下载不了的情况,可以手动下载。例如下载hostpython3的时候出现如下提示:[INFO]: Downloading hostpython3 [INFO]: -> running mkdir -p /home/zz/.local/share/python-for-android/packages/hostpython3 [INFO]: -> directory context /home/zz/.local/share/python-for-android/packages/hostpython3 [INFO]: -> running basename https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz [INFO]: -> running rm Python-3.8.1.tgz [INFO]: -> running rm -f .mark-Python-3.8.1.tgz [INFO]: Downloading hostpython3 from https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
c:p4a
下
https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
然后将下载的文件拷贝到对应的文件夹内(注意对应上面的一堆[INFO]信息)touch /home/zz/.local/share/python-for-android/packages/hostpython3/.mark-Python-3.8.1.tgz cp /mnt/c/Users/zz/Desktop/Python-3.8.1.tgz /home/zz/.local/share/python-for-android/packages/hostpython3/
$ ls -l *.apk -rw-rw-rw- 1 zz zz 14887306 Jun 13 13:15 unnamed_dist_1__armeabi-v7a-debug-0.1-.apk
测试
C:UserszzAppDataLocalPackagesCanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgscLocalStaterootfshomezz
可以看到apk文件,你的目录位置也许不同,不过搜索apk的文件名总是可以找到相应位置的。
点击它,就可以运行。
结束
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算