如何将python应用编译到android运行

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。

1 简介

本文介绍搭建android编译环境,从下载Android SDK、NDK及平台工具,配置~/.bashrc,设定ANDROID_HOME等路径。使用SDK Manager安装Android平台和构建工具。配置p4a以使用SDK、NDK,构建Kivy或SDL2应用,或WebView应用。

treeoflife6.png

2 安装工具环境

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

3 安装 编译工具依赖

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        
  • 下载安装编译工具

4 android SDK编译工具链接

https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip

5 平台工具

wget https://dl.google.com/android/repository/platform-tools_r31.0.3-linux.zip
  • 创建android-sdk 工具目录

结构形如

android-sdk
    platform-tools
    cmdline-tools
        ...
android-ndk-r23b

6 环境变量设置

# 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

7 编译环境 创建

$SDK_DIR/tools/bin/sdkmanager "platforms;android-27"
  • 安装构建工具

    $SDK_DIR/tools/bin/sdkmanager --list
    $SDK_DIR/tools/bin/sdkmanager "build-tools;28.0.2"

8 配置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

9 构建

指定根工作目录

安装一个 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

10 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

11 构建一个 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

12 重建

p4a clean_all

  • 仅仅清理构建环境,避免重新下载

p4a clean_builds && p4a clean_dists

  • 高级用法

可用编译工具列表

p4a recipes

目录
相关文章
|
30天前
|
数据采集 监控 Java
Python 函数式编程的执行效率:实际应用中的权衡
Python 函数式编程的执行效率:实际应用中的权衡
196 102
|
3月前
|
机器学习/深度学习 数据采集 算法
Python AutoML框架选型攻略:7个工具性能对比与应用指南
本文系统介绍了主流Python AutoML库的技术特点与适用场景,涵盖AutoGluon、PyCaret、TPOT、Auto-sklearn、H2O AutoML及AutoKeras等工具,帮助开发者根据项目需求高效选择自动化机器学习方案。
325 1
|
2月前
|
存储 数据可视化 BI
Python可视化应用——学生成绩分布柱状图展示
本程序使用Python读取Excel中的学生成绩数据,统计各分数段人数,并通过Matplotlib库绘制柱状图展示成绩分布。同时计算最高分、最低分及平均分,实现成绩可视化分析。
149 0
|
1月前
|
存储 程序员 数据处理
Python列表基础操作全解析:从创建到灵活应用
本文深入浅出地讲解了Python列表的各类操作,从创建、增删改查到遍历与性能优化,内容详实且贴近实战,适合初学者快速掌握这一核心数据结构。
144 0
|
1月前
|
中间件 机器人 API
Python多态实战:从基础到高阶的“魔法”应用指南
Python多态机制通过“鸭子类型”实现灵活接口,使不同对象统一调用同一方法,自动执行各自行为。它简化代码逻辑、提升扩展性,适用于数据处理、策略切换、接口适配等场景。掌握多态思维,能有效减少冗余判断,使程序更优雅、易维护。
98 0
|
2月前
|
存储 监控 安全
企业上网监控系统中红黑树数据结构的 Python 算法实现与应用研究
企业上网监控系统需高效处理海量数据,传统数据结构存在性能瓶颈。红黑树通过自平衡机制,确保查找、插入、删除操作的时间复杂度稳定在 O(log n),适用于网络记录存储、设备信息维护及安全事件排序等场景。本文分析红黑树的理论基础、应用场景及 Python 实现,并探讨其在企业监控系统中的实践价值,提升系统性能与稳定性。
60 1
|
1月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍了基于Python的剪贴板监控技术,结合clipboard-monitor库实现高效、安全的数据追踪。内容涵盖技术选型、核心功能开发、性能优化及实战应用,适用于安全审计、自动化办公等场景,助力提升数据管理效率与安全性。
88 0
|
2月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
149 4
|
2月前
|
存储 监控 安全
Python剪贴板监控实战:clipboard-monitor库的深度解析与扩展应用
本文介绍如何利用Python的clipboard-monitor库实现剪贴板监控系统,涵盖文本与图片的实时监听、防重复存储、GUI界面开发及数据加密等核心技术,适用于安全审计与自动化办公场景。
91 0
|
2月前
|
数据采集 API 调度
Python爬虫框架对比:Scrapy vs Requests在API调用中的应用
本文对比了 Python 中 Scrapy 与 Requests 两大爬虫框架在 API 调用中的差异,涵盖架构设计、调用模式、性能优化及适用场景,并提供实战建议,助力开发者根据项目需求选择合适工具。

热门文章

最新文章

推荐镜像

更多