跨平台:将python程序编译到android手机
【摘要】 简介警告: 请谨慎按本文执行,没有进行完整的测试。 并且请更新相关工具到最新版本。 1 安装工具环境Ubuntu20为编译环境sudo apt install default-jresudo apt install default-jdk添加环境变量 sudo vim /etc/environment JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd...
简介
警告: 请谨慎按本文执行,没有进行完整的测试。 并且请更新相关工具到最新版本。
1 安装工具环境
Ubuntu20为编译环境
sudo apt install default-jre
sudo apt install default-jdk
添加环境变量
sudo vim /etc/environment
JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
source /etc/environment
1.1 安装 编译工具依赖
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install -y 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
2 下载安装编译工具
https://python-for-android.readthedocs.io/en/latest/quickstart/
2.1 android SDK编译工具链接
https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip
2.2 android NDK 编译工具链接
https://dl.google.com/android/repository/android-ndk-r23b-linux.zip
2.3 平台工具
wget https://dl.google.com/android/repository/platform-tools_r31.0.3-linux.zip
2.4 创建android-sdk 工具目录
结构形如
android-sdk
platform-tools
cmdline-tools
...
android-ndk-r23b
2.5 环境变量
# Update Bash
sudo nano ~/.bashrc
# Android - SDK Tools & Platform Tools
export ANDROID_HOME=/data/android_pycompare/android-sdk
export PATH=/data/android_pycompare/android-sdk/platform-tools:/data/android_pycompare/android-sdk/cmdline-tools/tools:/data/android_pycompare/android-sdk/cmdline-tools/tools/bin:${PATH}
# Save .bashrc
# Reload Bash
source ~/.bashrc
3 编译环境 创建
$SDK_DIR/tools/bin/sdkmanager "platforms;android-27"
3.1 安装构建工具
$SDK_DIR/tools/bin/sdkmanager --list
$SDK_DIR/tools/bin/sdkmanager "build-tools;28.0.2"
3.2 配置p4a 以使用SDK、NDK
编辑您~/.bashrc或其他喜欢的 shell 以包含在 android 上构建所需的新环境变量
Adjust the paths!
export ANDROIDSDK="/data/android_pycompare/cmdline-tools"
export ANDROIDNDK="/data/android_pycompare/android-ndk-r23b"
export ANDROIDAPI="27" # Target API version of your application
export NDKAPI="21" # Minimum supported API version of your application
export ANDROIDNDKVER="r23b" # Version of the NDK you installed
使用以下命令在任何命令上配置 SDK、NDK 和 Android API 的 PATH:
--sdk-dir PATH相当于$ANDROIDSDK
--ndk-dir PATH相当于$ANDROIDNDK
--android-api VERSION相当于$ANDROIDAPI
--ndk-api VERSION相当于$NDKAPI
--ndk-version VERSION相当于$ANDROIDNDKVER
4 构建
指定根工作目录
安装一个 API 平台作为目标
sudo cmdline-tools/bin/sdkmanager "platforms;android-27" --sdk_root=counds
安装构建工具
#查看所有选项
$SDK_DIR/tools/bin/sdkmanager --list
# TODO
$SDK_DIR/tools/bin/sdkmanager "build-tools;28.0.2" --sdk_root=counds
Kivy 或 SDL2 应用程序
要构建应用程序,你需要指定名称,版本,一包标识符,您要使用的引导(SDL2为kivy或SDL2应用程序)和要求
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My application" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy
注意 --requirements:您必须添加应用程序运行所需的所有库/依赖项。 例子:–requirements=python3,kivy,vispy。对于 SDL2 应用程序, 不需要 kivy,但您需要添加您可能使用的任何包装器(例如pysdl2)。
这个p4a apk …命令使用python3、 kivy以及您在需求中指定的所有其他内容构建发行版。它将使用 SDL2 引导程序打包,并生成一个.apk文件。
test
p4a apk --private ./cound --package=link.letschats.counds --name "counds" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy --sdk_root=counds
test2
p4a apk --private ./cound --package=link.letschats.counds --name "counds" --version 0.1 --bootstrap=sdl2 --requirements=python3,kivy --sdk_root=counds --android_sdk=./android-sdk/cmdline-tools/bin/ --android_ndk=android-ndk-r23b --ignore-setup-py
4.1 构建一个 WebView 应用程序
要构建您的应用程序,您需要有一个名称、版本、一个包标识符,并明确使用 webview 引导程序,以及要求:
p4a apk --private $HOME/code/myapp --package=org.example.myapp --name "My WebView Application" --version 0.1 --bootstrap=webview --requirements=flask --port=5000
4.2 重建
p4a clean_all
4.3 仅仅清理构建环境,避免重新下载
p4a clean_builds && p4a clean_dists
高级用法
可用编译工具列表
p4a recipes
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)