专栏首页工科生日常如何用python写一个安卓APP?(上)

如何用python写一个安卓APP?(上)

嘿嘿!被我骗进来了吧!有这种想法的人不在少数,但谁都明白这是不明智的,然而不明智不代表不可行,不管怎样,有一点永远不会变,那就是有这种想法的靓仔靓女一定和小瓦一样帅气逼人!噢耶~Let's Go~~ ——聪明的瓦肯人


1 针对这个问题 我劝大伙儿谨慎尝试 谨慎尝试 为什么咧 我把大家骗进来的目的 就是让大家看看 什么叫做 好惨一男的 不过放心 你依然可以看到 这个问题的 可能有效解决方案 然后 你就可以付诸实践 至于结果 我就不知道了 2 想必大家都知道 正常安卓APP的开发 主流靠的是Java、Kotlin 而其他语言的开发可能就需要 开发框架 python就不例外 要想使用python开发 就需要使用kivy这个 开源的python开发框架 具体如何操作呢 继续往下看 3 首先 你肯定得安装了python 这一点不多说 然后 以Windows为例安装kivy 送上官网安装教程

https://kivy.org/doc/stable/installation/installation-windows.html#install-win-di

算啦 料定你懒得打开 跟着我做吧 官网教程建议你 为你的kivy工程 生成一个虚拟环境 这样更加干净独立 当然这也是可以自主决定的 so 我是怎么简单怎么来 First 键盘win+R 输入cmd,运行 打开命令行窗口 Then 为了确保你有最新的 pip 命令行输入

python -m pip install --upgrade pip

我就不为其生成虚拟环境了 然后开始安装相关依赖文件 建议你换到国内镜像源 否则速度缓慢 甚至要访问外国网站

python -m pip install docutils pygments pypiwin32 kivy.deps.sdl2 kivy.deps.glewpython -m pip install kivy.deps.gstreamer

最后 正式安装kivy (每一步命令都要回车哦)

python -m pip install kivy

你也可以选择安装kivy例程

python -m pip install kivy_examples

验证kivy是否安装成功 其实就是 编写一个kivy程序 运行是否成功 本次就编写下面的程序为例

#!/usr/bin/env python3# -*- coding: utf-8 -*-
from kivy.app import Appfrom kivy.uix.scatter import Scatterfrom kivy.uix.label import Label                                                 #以上导入各种类class TestApp(App):                              #继承了App这个类,派生TestApp类    def build(self):        s = Scatter()                            #实例化一个Scatter控件,这是一个多点触控控件,可以实现缩放、移动、旋转        l = Label(text='hello',font_size=130)    #实例化Label标签控件,用来显示文字        s.add_widget(l)                          #将Label添加到Scatter控件上        return s                                 #返回新生成的Scatter控件
TestApp().run()                                  #作为App的子类,可以执行父类中的run()函数

保存运行 结果

successfully!!! 更多kivy相关知识 请到这里

https://kivy.org/doc/stable/

4 但我们要的是安卓APP 现在仅仅是在电脑上的GUI 怎么办呢 莫急 kivy自然为你解决 还提供了3种方案供你选择 分别是

所以说 小瓦使用的是Buildozer 由于现在只适配于linux 在windows上需要安装虚拟机 我选择的虚拟机管理程序是 virtualbox 打开virtualbox中出现的 bios未开启虚拟机允许等问题 自行解决 kivy官方还算良心 已经帮我做好了安装好buildozer的 虚拟机镜像 下载地址

http://txzone.net/files/torrents/kivy-buildozer-vm-2.0.zip

一切顺利 导入虚拟机 在virtualbox设置中 配置好共享文件夹和内存(很重要) 共享文件夹的目的 就是实现windows主机与linux虚拟机 文件互传 具体点 就是将windows编写的python程序 传到linux处理打包成APK 开启(密码是kivy)

然后将上面的python程序文件 重命名为main.py buildozer只能识别main.py 将其放入共享文件夹 (比如我的共享文件夹:H盘/share-vm) 在虚拟机中将该文件夹sf_share-vm打开 将main.py复制到虚拟机桌面 一切就是这么的easy! 5 ok 是时候进行激动人心的APK打包啦 我的第一款安卓APP近在眼前 噢耶~ 首先 你需要打开终端(Terminal Emulator) 然后

cd Desktop            #回车转到桌面

再然后

buildozer init        #初始化buildozer,生成buildozer.spec文件                      #你可右击open with 'MousePad',修改title、package.name、package.domain

最后

buildozer -v android_new debug      # -v可以让下载过程可视化

最终你会在桌面多得这些文件

上面的命令就是 一顿download 一顿check 主要下载的是安卓的SDK、NDK、ANT等 (该过程你可能需要访问外国网站) 然后过了许久 又是一顿骚操作 (buildozer自动化程度就是高) 对于我这种安卓盲 这就是福音呀 满心期待的我等待着桌面bin文件夹中的 APK文件(正常情况下) 然而事实却是

我知道你看不清红色警告 # Aild not found,please install it 这意味着我失败了 buildozer的自动化也是有漏洞的 我以为 我添加了Aild即可 其实 我又开启了一段 与bug要死要活的斗争 over


预知后事如何,请听下回分解! ——聪明的瓦肯人

本文分享自微信公众号 - 工科生日常(ES-Daily),作者:聪明的瓦肯人

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • HoneyTalk——我和我女朋友的专属情侣聊天器

    Arduino聊天室是一个匿名群聊应用 但是今天的应用是一对一 专属情侣聊天 话不多说 还不快来看看

    聪明的瓦肯人
  • 浅谈连杆行走机构

    话说近几年足类行走机器人真是大热之中,但谁都明白,对于行走机器人的真正有计划的研究早在几十年前就已经在实验室中悄然展开,否则又怎会有近几年所谓的技...

    聪明的瓦肯人
  • 我大胆把玩了"Stanford Doggo"四足机器人!

    说大胆把玩 当然是要强迫她 按照我的意思 摆出我喜欢的体位 走出我侧目的步调 扭出我满意的身姿

    聪明的瓦肯人
  • 聊一聊相等运算与 SameValue

    SameValue 与 SameValueZero 其实是 ecma 中,比较值是否相等的算法,具体参考如下:

    IMWeb前端团队
  • leetcode508. Most Frequent Subtree Sum

    Given the root of a tree, you are asked to find the most frequent subtree sum. T...

    眯眯眼的猫头鹰
  • 【腾讯 TMQ 】WIFI 安全测试,其实不难

    作为WiFi安全的一部分,近年来WiFi安全事件层出不穷,而其中的ARP攻击事件更加普遍,越来越成为移动互联网时代手机用户的一大痛点。本文主要讲解WIFI的安全...

    腾讯移动品质中心TMQ
  • B站:6.curd monogodb

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    suveng
  • C# 文本框 TextChanged 延时触发

    跟着阿笨一起玩NET
  • MySQL系统运行状态实时监控(python版本)

    昨天的文章,用shell写了一个简单的MySQL系统运行状态实时监控的模版,《MySQL系统运行状态实时监控(shell版本)》,对于这种操作,任何语言都可以完...

    bisal
  • 如何快速掌握HTTP协议(高清思维导图 )

    HTTP 协议极其庞杂,它影响着浏览器、爬虫、代理服务器、防火墙、CDN、Web 容器、微服务等诸多方面,自身的规范却并不统一,所要面对的各类软件的新旧版本也同...

    猿哥

扫码关注云+社区

领取腾讯云代金券