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

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 【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

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

目录
相关文章
|
9天前
|
Android开发 iOS开发
android自动化编译
android自动化编译
|
8天前
|
C# Android开发 开发者
Android gradle编译时字节码处理
Android gradle编译时字节码处理
13 1
|
3天前
|
开发工具 Android开发
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
技术经验分享:Android编译命令m、mm、mmm区别及工程搭建示例
|
5天前
|
人工智能 API 语音技术
探索Gemini Pro AI在智能Android应用中的魅力
探索Gemini Pro AI在智能Android应用中的魅力
11 0
|
8天前
|
Java 程序员 API
Android 编译插桩操纵字节码
Android 编译插桩操纵字节码
7 0
|
7天前
|
机器学习/深度学习 人工智能 前端开发
Python中的模块化编程
【6月更文挑战第17天】Python模块化编程与软件架构设计的关键在于拆分任务到独立模块,提高代码的可维护性、可重用性和可扩展性。例如,学生管理系统可分解为录入、查询和删除模块。MVC和MVVM架构模式有助于组织代码,而微服务和函数式编程将在未来发展中扮演重要角色。通过示例代码,读者能学习如何实现这些概念,提升项目开发效率和质量。
155 57
|
14天前
|
测试技术 虚拟化 云计算
GitHub高赞!速通Python编程基础手册,被玩出花了!
随着云时代的来临,Python 语言越来越被程序开发人员喜欢和使用,因为其不仅简单易学,而且还有丰富的第三方程序库和相应完善的管理工具。 从命令行脚本程序到 GUI程序,从图形技术到科学计算,从软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有 Python 的身影。 今天给小伙伴们分享的这份手册采用以任务为导向的编写模式,全面地介绍了 Python 编程基础及其相关知识的应用,讲解了如何利用 Python 的知识解决部分实际问题。
GitHub高赞!速通Python编程基础手册,被玩出花了!
|
3天前
|
数据挖掘 数据处理 Python
Python编程入门:从基础到实践
【6月更文挑战第26天】这篇文章引导读者逐步学习Python编程,从基础语法如变量、数据类型(整数、浮点数、字符串)到条件语句、循环(if/for/while),再到函数定义和模块导入。通过实例展示了Python在文本处理、数据分析(使用pandas)和Web开发(使用Flask)的应用。学习Python能为初学者开启更广阔的技术领域,如面向对象编程、并发和网络编程等。
|
1天前
|
设计模式 程序员 测试技术
老程序员分享:Python数据模型及Pythonic编程
老程序员分享:Python数据模型及Pythonic编程
10 1
|
5天前
|
Python
Python多进程编程详细剖析
Python多进程编程详细剖析
14 3