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

  • 说明
  • 环境准备
    • 开发环境准备(windows)
    • 编译环境准备
      • 自行配置制作编译环境
      • 偷懒:直接下载配置好的虚拟机
  • 编译
  • 验证APK
  • 总结

说明

环境 详情 备注
开发环境系统 windows 代码生成环境
编译环境系统 centos 安卓apk编译环境
编程语言 Python 3.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. 测试
  • 将如下代码写入新文件,并命名为 mian.py
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并首次编译

  • main.py到上传至指定目录(这里的目录是/root/text/),并进入该目录
cd /root/text/
  • 生成android应用程序配置(应用名、版本等)
buildozer init
  • 在执行完buildozer init后,会在当前目录下生成一个buildozer.spec的文件,该文件内容即使配置信息。我们一般修改以下几项内容
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/python3vim /usr/local/python3/lib/python3.8/site-packages/buildozer/targets/android.py # 将代码中用到的https://github全部替换成https://gitee即可# 下载过程中,在下载完android adk相关组件时回需要手动同意安装SDKtools和platform的下载和安装,需要这样手动处理的有两个地方

验证APK

  • 编译完成!并产生成APk文件

    编译成功后,会在当前目录下创建一个新的bin目录,并在该目录下生成一个apk文件

  • 测试apk

    关于测试生成的apk文件有以下几个方法

    1. 真机USB调试:配置虚拟机usb选项,并链接手机进行usb直接同步到手机安装调试
    2. 将该apk文件下载到本地,导入手机模拟器

    在这里我采用第二种方法进行

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

总结

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

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

  • Android用java/Kotlin;
  • Win用C#/.net;
  • IOS用C/C++/Objective-C,新潮点的还有Swift

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

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

  1. Python 编写的图形程序打包为安卓 APP、IOS

    如果想使用 Python 语言编写图形界面程序,那么有不少的框架可以提供支持,比如 Kivy.Tkinter.PyQt.WxPython.pyui4win等等. 这些框架都是只能创建桌面图形界面程序, ...

  2. Windows下Qt编写Android应用程序的环境搭建记录

    目录 前言 配置开发环境 安装JDK1.8 安装SDK 安装NDK Qt配置OpenCV C++&Java混合编程 结语 前言 由于要在手机上实现一些应用,例如部署目标检测模型.添加单目测距定 ...

  3. 【转】独家教程:用PHP编写Android应用程序

    Google的开源Android移动操作系统正在席卷全球智能手机市场,和苹果不一样,它对那些想将应用程序提交到iPhone App Store的开发人员有着严格的指导方针和要求,Google的Andr ...

  4. 教你用Python 编写 Hadoop MapReduce 程序

    摘要:Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据. 本文分享自华为云社区<Hadoop Streaming:用 Python 编写 ...

  5. 使用Python编写网络扫描程序

    使用Python编写网络扫描程序 ​ 网络扫描程序通过向成百上千台计算机发送请求并分析其响应,扫描第2层和第3层网络中指定范围内的网络ID.利用某些扩展技术,网络扫描程序还可以获得通过Samba和Ne ...

  6. python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。

    一.编程题目         编程题目1:python编写一计票程序,键盘输入候选人姓名(输入"#"结束),使用字典存储并统计出候选人得票数.        编程题目2:pytho ...

  7. Python编写简易木马程序

    0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 +JEDI(python自动补全 ...

  8. python 编写仓库管理程序

    好的,我可以提供一些建议来帮助你编写仓库管理程序. 首先,你需要确定仓库管理程序的功能.是否需要跟踪库存数量?是否需要记录进出货记录?是否需要提供报告?确定好你的需求后,你可以开始设计你的程序的数据结 ...

  9. 使用python编写一个爬虫程序

    使用 Python 编写爬虫程序需要以下几步: 导入必要的库.你可以使用 requests 库来发送 HTTP 请求,使用 BeautifulSoup 库来解析 HTML/XML 文档. 构建爬取的 ...

最新文章

  1. 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)
  2. react 日期怎么格式化_手写React的Fiber架构,深入理解其原理
  3. matlab simulink 电气连接
  4. idea-单独运行main类
  5. 操作符(++,+,+=,小于号,(),--等)重载
  6. jQuery 的原型关系图
  7. Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突)
  8. 计算机工作应用工作简历,计算机应用专业工作简历范文
  9. 5G + 云网融合,加速万物互联
  10. 多功能计算机使用说明,多功能分装机/多功能分装机
  11. Linux下启动Oracle数据库
  12. QEMU/KVM PCI Passthrough(82599ES) DPDK 网络性能测试
  13. python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
  14. 投入产出模型中的经济分析(直接消耗系数等)
  15. HanLP中文分词、人名识别、地名识别
  16. 修改服务器cimc地址,UCSC系列服务器的CIMC设置.PDF
  17. window镜像制作
  18. 整合stripe线上支付收款
  19. 中文分词评价指标——正确率、召回率和F1
  20. STM32CubeIDE开发(三十一), stm32人工智能开发应用实践(Cube.AI).篇一

热门文章

  1. 计算机和心理学哪个好考,我是学计算机的今年大三,想考心理学的研究生,不知道未来的就业怎么样?有什么大发展,想问问大家给点建...
  2. python UDP通信数据包解析将结果写入Excel中
  3. [Research Tips] 我的zotero文献管理方案: 云端同步+iPad批注+overleaf笔记
  4. 跨域问题 cros错误
  5. Adam算法及python实现
  6. (java)加号的多种用法
  7. Mysql text 多少个汉字
  8. lvds单8转双8芯片_液晶驱动板中的 LVDS 单6 单8 双6 双8 指的是什么
  9. 银河超级计算机cpu是什么,超级计算机TOP500结束GPU与CPU之争
  10. [推荐]如何提升人体免疫力