编程语言
首页 > 编程语言> > 为了偷懒,我开始用Python编写Android应用程序

为了偷懒,我开始用Python编写Android应用程序

作者:互联网

为了偷懒,我开始用Python编写Android应用程序


说明

环境详情备注
开发环境系统windows代码生成环境
编译环境系统centos安卓apk编译环境
编程语言Python3.8.1
软件依赖(cetneos)vim make wget tar unzip zip bzip2 patch autoconf
automake libtool lld
zlib-devel bzip2-devel
openssl-devel ncurses-devel
sqlite-devel readline-devel tk-devel gcc gcc-c++ make libffi-devel
java java-devel git
配置编译环境时使用
虚拟硬盘最少给到8G以上的存储空间
Python第三方包(win环境下)
docutils
pygments
pypiwin32
kivy.deps.sdl2
kivy.deps.glew
kivy.deps.gstreamer
kivy
其中pip是自带一般可以忽略或者升级一下
kivy必须最后才可以安装
Python第三方包(centos环境下)cython
kivy
buildozer
其中pip是自带一般可以忽略或者升级一下
kivy必须最后才可以安装
其他工具VirtualBox:虚拟机
XFTP:**Centos<==>本地(Win)**文件上传下载

环境准备

开发环境准备(windows)

  1. 更新pip、wheel、setuptools
python -m pip install --upgrade pip wheel setuptools
  1. 安装Python第三方包/模块
python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew kivy.deps.gstreamer
  1. 安装kivy模块
python -m pip install kivy
  1. 测试
from kivy.app import App
from kivy.uix.button import Button
class TestApp(App):
   def build(self):
       return Button(text='Hello World')
TestApp().run()

编译环境准备

自行配置制作编译环境

  1. Centos软件升级更新
yum -y upgrade
  1. 安装依赖
# 安装系统工具
yum -y install vim make wget tar unzip zip bzip2 patch autoconf automake libtool lld
# 安装基础依赖
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc gcc-c++ make libffi-devel
# java依赖安装
yum -y install java java-devel git 
  1. Python安装(这里采用的Python3.8.1)
    这里不做详细简述,可以参照Centos 下载+ 安装 + 配置 Python3(新)
  2. 更新pip、wheel、setuptools
python3 -m pip install --upgrade pip wheel setuptools
  1. 安装会用到的第三方Python包
pip3 install cython
  1. 安装kivy 和 buildozer
# 当整个环境配置完成后。buildozer将会占据5G左右的存储空间
pip3 install kivy buildozer

偷懒:直接下载配置好的虚拟机

由于,整个虚拟环境的配置过程坑多,且时间漫长,其中又需要从github下载,虽然国内有gitee但不一定有copy
因此,我将我编制好的系统上传到百度云,
下载传送门链接:Centos_kivy.ova
提取码:kivy
登录账户:root
账户密码:kivy2021
下载下来导入OrVirtualBox即可仅直接进项下面的编译操作
PS:下载链接过期/被封/失效通知我

编译

为了下载buildozer其他所需组件,导入main.py 初始化buildozer并首次编译

cd /root/text/
buildozer init
vim buildozer.spec
# (str) Title of your application
title = My Application  # 应用名称
# (str) Package name
package.name = myapp    # 包名
# (str) Package domain (needed for android/ios packaging)
package.domain = org.test     # 域名
# (str) Application versioning (method 1)
version = 0.1           # 版本
 buildozer -v android debug
 # 由于这里是初次配置,因此为首次编译,因此它会自动下载 android sdk、apache ant、android ndk等组件
 # 这些下载是通过git下载的,因此在执行之前可以先ping一下自己的centos到github的延迟
 # 如果延迟过高可以进到buildozer源代码中去修改android.py
 # 比如我的python安装在/usr/local/python3
 vim /usr/local/python3/lib/python3.8/site-packages/buildozer/targets/android.py 
 # 将代码中用到的https://github全部替换成https://gitee即可

 # 下载过程中,在下载完android adk相关组件时回需要手动同意安装SDKtools和platform的下载和安装,需要这样手动处理的有两个地方

在这里插入图片描述

验证APK

<iframe allowfullscreen="true" data-mediaembed="bilibili" id="i6k2E8Hr-1622593338829" src="https://player.bilibili.com/player.html?aid=205881090"></iframe>

Centos系统中通过 buildozer 编译打包 Python-kivy 的 android APK 安装运行测试

总结

使用kivy开发框架,相比于传统的Android SDK开发来比:
  一般的Android应用,直接调用Android系统的原生控件,例如:文字渲染(颜色、距离、大小等)交由系统处理。
  而Kivy,它的各种控件都不是系统原生提供的,而是用OpenGL自己画出来的,所以很作组件需要另行他法。
  如果说你要开发中大型的Android应用,kivy很多轮子需要单独来造,时间成本和效率成本是很低的
  但是说如果只是开发一个简单的小应用,还可以可以学习一下
  另外如果说要开发Android/IOS/Win多平台的GUI应用程序,kivy也是可以考虑以下的。

不过,大型或者企业级的多平台GUI开发都是专项的,比如:

  而如果说只是想制作一个Android或者其他平台的图形化软件,不想话另外的精力和时间去学习其他的语言即其框架,那就用kivy吧。虽然坑多点,不过都是小问题,没有什么能阻止你学习的脚步

标签:Python,buildozer,应用程序,devel,编译,kivy,pip,Android,安装
来源: https://blog.csdn.net/qq_38872258/article/details/117458881