为了偷懒,我开始用Python编写Android应用程序
为了偷懒,我开始用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)
- 更新pip、wheel、setuptools
python -m pip install --upgrade pip wheel setuptools
- 安装Python第三方包/模块
python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew kivy.deps.gstreamer
- 安装kivy模块
python -m pip install kivy
- 测试
- 将如下代码写入新文件,并命名为 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()
- 运行如图所示
编译环境准备
自行配置制作编译环境
- Centos软件升级更新
yum -y upgrade
- 安装依赖
# 安装系统工具
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
- Python安装(这里采用的Python3.8.1)
这里不做详细简述,可以参照Centos 下载+ 安装 + 配置 Python3(新) - 更新pip、wheel、setuptools
python3 -m pip install --upgrade pip wheel setuptools
- 安装会用到的第三方Python包
pip3 install cython
- 安装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文件有以下几个方法
- 真机USB调试:配置虚拟机usb选项,并链接手机进行usb直接同步到手机安装调试
- 将该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应用程序相关推荐
- Python 编写的图形程序打包为安卓 APP、IOS
如果想使用 Python 语言编写图形界面程序,那么有不少的框架可以提供支持,比如 Kivy.Tkinter.PyQt.WxPython.pyui4win等等. 这些框架都是只能创建桌面图形界面程序, ...
- Windows下Qt编写Android应用程序的环境搭建记录
目录 前言 配置开发环境 安装JDK1.8 安装SDK 安装NDK Qt配置OpenCV C++&Java混合编程 结语 前言 由于要在手机上实现一些应用,例如部署目标检测模型.添加单目测距定 ...
- 【转】独家教程:用PHP编写Android应用程序
Google的开源Android移动操作系统正在席卷全球智能手机市场,和苹果不一样,它对那些想将应用程序提交到iPhone App Store的开发人员有着严格的指导方针和要求,Google的Andr ...
- 教你用Python 编写 Hadoop MapReduce 程序
摘要:Hadoop Streaming 使用 MapReduce 框架,该框架可用于编写应用程序来处理海量数据. 本文分享自华为云社区<Hadoop Streaming:用 Python 编写 ...
- 使用Python编写网络扫描程序
使用Python编写网络扫描程序 网络扫描程序通过向成百上千台计算机发送请求并分析其响应,扫描第2层和第3层网络中指定范围内的网络ID.利用某些扩展技术,网络扫描程序还可以获得通过Samba和Ne ...
- python编写一计票程序,键盘输入候选人姓名(输入“#”结束),使用字典存储并统计出候选人得票数。python实现分段函数。
一.编程题目 编程题目1:python编写一计票程序,键盘输入候选人姓名(输入"#"结束),使用字典存储并统计出候选人得票数. 编程题目2:pytho ...
- Python编写简易木马程序
0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 +JEDI(python自动补全 ...
- python 编写仓库管理程序
好的,我可以提供一些建议来帮助你编写仓库管理程序. 首先,你需要确定仓库管理程序的功能.是否需要跟踪库存数量?是否需要记录进出货记录?是否需要提供报告?确定好你的需求后,你可以开始设计你的程序的数据结 ...
- 使用python编写一个爬虫程序
使用 Python 编写爬虫程序需要以下几步: 导入必要的库.你可以使用 requests 库来发送 HTTP 请求,使用 BeautifulSoup 库来解析 HTML/XML 文档. 构建爬取的 ...
最新文章
- 调包侠福音!机器学习经典算法开源教程(附参数详解及代码实现)
- react 日期怎么格式化_手写React的Fiber架构,深入理解其原理
- matlab simulink 电气连接
- idea-单独运行main类
- 操作符(++,+,+=,小于号,(),--等)重载
- jQuery 的原型关系图
- Java Gradle入门指南之依赖管理(添加依赖、仓库、版本冲突)
- 计算机工作应用工作简历,计算机应用专业工作简历范文
- 5G + 云网融合,加速万物互联
- 多功能计算机使用说明,多功能分装机/多功能分装机
- Linux下启动Oracle数据库
- QEMU/KVM PCI Passthrough(82599ES) DPDK 网络性能测试
- python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
- 投入产出模型中的经济分析(直接消耗系数等)
- HanLP中文分词、人名识别、地名识别
- 修改服务器cimc地址,UCSC系列服务器的CIMC设置.PDF
- window镜像制作
- 整合stripe线上支付收款
- 中文分词评价指标——正确率、召回率和F1
- STM32CubeIDE开发(三十一), stm32人工智能开发应用实践(Cube.AI).篇一
热门文章
- 计算机和心理学哪个好考,我是学计算机的今年大三,想考心理学的研究生,不知道未来的就业怎么样?有什么大发展,想问问大家给点建...
- python UDP通信数据包解析将结果写入Excel中
- [Research Tips] 我的zotero文献管理方案: 云端同步+iPad批注+overleaf笔记
- 跨域问题 cros错误
- Adam算法及python实现
- (java)加号的多种用法
- Mysql text 多少个汉字
- lvds单8转双8芯片_液晶驱动板中的 LVDS 单6 单8 双6 双8 指的是什么
- 银河超级计算机cpu是什么,超级计算机TOP500结束GPU与CPU之争
- [推荐]如何提升人体免疫力