跨平台:将python程序编译到android手机

举报
码乐 发表于 2023/12/27 11:01:31 2023/12/27
【摘要】 简介警告: 请谨慎按本文执行,没有进行完整的测试。 并且请更新相关工具到最新版本。 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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。