zoukankan      html  css  js  c++  java
  • 如何Python写一个安卓APP

    前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般),那么久Google了一下Python写安卓的APP的可能性,还真行。

    既然要写个APP,那么总得要有个想法吧。 
    其实笔者想做两个APP来着,一个是自己写着好玩的,一个是关于运维的。 
    关于运维的APP,设计应该如下 
    可能长这样:

    这里写图片描述

    然后设计应该是这样:

    这里写图片描述

    如果觉得可行的话,评论留言一下你觉得应该写进这个APP的运维常用命令吧^_^,笔者暂时想到的是top,free -m,df –h,uptime,iftop,iotop,如果有什么好的想法就狠狠的砸过来吧,笔者到时应该也会把这个写成一个项目放到github上,大家一起用嘛,开源才是王道,哈哈。

    好吧,进入正题。 
    我们使用kivy开发安卓APP,Kivy是一套专门用于跨平台快速应用开发的开源框架,使用Python和Cython编写,对于多点触控有着非常良好的支持,不仅能让开发者快速完成简洁的交互原型设计,还支持代码重用和部署,绝对是一款颇让人惊艳的NUI框架。 
    因为跨平台的,所以只写一遍代码,就可以同时生成安卓及IOS的APP,很酷吧。 
    本文会带大家写一个Hello world并瞧一瞧Python版的2048的代码

    kivy安装 
    环境说明:笔者在用的是Python2.7.10 
    这里仅介绍windows平台安装 
    所有平台参考: https://kivy.org/#download

    更新pip,setuptools

    python -m pip install --upgrade pip wheel setuptools
    
    • 1
    • 2

    然后是安装所需要的依赖

    python -m pip install docutils pygmentspypiwin32 kivy.deps.sdl2 kivy.deps.glew \
    kivy.deps.gstreamer --extra-index-url https://kivy.org/downloads/packages/simple/
    
    • 1
    • 2
    • 3

    值得注意的是,上面的安卓需要访问Google,所以请自备梯子,而且kivy.deps.gstreamer这个包比较大(95MB),可以单独本地安装,http://pan.baidu.com/s/1o7mlxNk 
    然后就是安装kivy了

    python -m pip install kivy
    
    • 1
    • 2

    至此,安装就已经完毕了,值得注意的是64位系统没有开启虚拟化支持,在导入kivy的时候会报错,如果是64位系统就设置一下机器的BIOS,开启虚拟化支持吧。 
    注:这里只是kivy的运行环境,这样我就能直接在windows机器上直接调试了,怎么将代码编译成APK文件我们会在后面讲到。

    如果kivy在python中应该就能导入了。

    这里写图片描述

    按照世界惯例,我们”hello”一下吧。 
    新建一个.py文件

    from kivy.app import App
    from kivy.uix.button importButton
    
    class TestApp(App):
        def build(self):
            return Button(text='Hello,kivy')
    
    TestApp().run()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行:

    这里写图片描述

    然后会弹出一个框,大概如下,点击”hello,kivy”会变颜色

    这里写图片描述

    点击窗口并按“F1”会这个窗口的一些属性

    这里写图片描述

    然后我们回过头看一看代码。

    ##导入App,然后让TestApp这个类继承
    from kivy.app import App
    ##导入一个Button,运维有这个button,当你点击的时候才会有所反应
    from kivy.uix.button importButton
    
    ###定义类,名字必须是xxxApp
    class TestApp(App):
        ###build一个Button
        def build(self):
            ###返回一个Button,文字内容是“Hello,kivy”
            return Button(text='Hello,kivy')
    
    ##运行,因为继承了App,所以才有的run这个方法
    TestApp().run()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    上面就是我们的Hello了 
    在windows上运行当然没有什么太大的意义,怎么在安卓手机上运行才是我们想要的, 
    这时我们需要一个编译环境。 
    官方说明的环境,如下:

    You’ll need:
        A     linux computer or a virtual machine
        Java
        Python     2.7 (not 2.6.)
        Jinja2     (python module)
        Apache     ant
        Android     SDK
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    虽然官方提供了一个似乎还不错的虚拟机镜像,但是还是有很多内容需要翻出去,所以笔者在这里提供相对而言更加完善的镜像 
    下载地址:http://pan.baidu.com/s/1geyAY7x 
    注:virtualbox,vmware需自行下载 
    root密码:kivy 
    默认使用账户kivy,密码:kivy123

    当然你也可以下载官方镜像,因为第一次编译需要去国外下一大堆东西,所以请自备梯子。

    Virtual Machine 
    A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation: 
    Kivy Buildozer VM 
    Or select the Torrent

    在笔者提供的镜像里,桌面上有一个dev_and,只要将上面写的代码,放入这个文件夹即可(当然也可以在其他目录,后面会讲到)。

    cd Desktop/dev_and/
    
    • 1
    • 2

    初始化会在当前目录生成一个buildozer.spec文件 用于配置生成的apk相关信息

    buildozer init
    
    • 1
    • 2

    修改buildozer.spec文件

    vi buildozer.spec
    
    • 1
    • 2

    至少修改下面三项

    # (str) Title of your application
    title = helloworld
    
    # (str) Package name
    package.name = helloapp
    
    # (str) Package domain (needed for android/ios packaging)
    package.domain = youer.com
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    然后注释

    # (str) Application versioning (method 1)
    #version.regex = __version__ = ['"](.*)['"]
    #version.filename = %(source.dir)s/main.py
    下面这行改为非注释
    version = 1.2.0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    最后我们生成我们需要的apk文件

    buildozer -v android debug
    
    • 1
    • 2

    buildozer.spec更详细的相关参数配置参考: 
    http://buildozer.readthedocs.org/en/latest/specifications.html

    buildozer命令会在当前文件夹创建一个bin,该文件夹里面有我们想要的apk文件

    helloapp-1.2.0-debug.apk

    安装以后应该是这样

    这里写图片描述

    话说在编译的时候可能出现空间不足的情况,根据虚拟机的不同(vmware或virtualbox)自行扩容吧。

    最后我们来瞧瞧简易版Python开发的2048这个游戏的源代码。 
    代码来自:https://github.com/mvasilkov/kb/tree/master/6_2048 
    先看效果图

    这里写图片描述这里写图片描述这里写图片描述

    试玩了一下,还是蛮流畅的,有兴趣的可以下载玩一下 
    下载地址:http://pan.baidu.com/s/1eQZACDW 
    这个游戏代码虽然不长,但是还是蛮占篇幅的,所以简要的说明一下流程:

    这里写图片描述

    主要由三部分组成,一是素材,图片音频之类的文件,二是Python代码,三是kv文件,这个kv文件有点像html中的css。 
    Python代码的文件名一般命名为main.py 
    然后一定有一个叫做XXXApp的类,并继承App。 
    比如该类叫做GameApp,那么该目录下的kv文件则必须为Game,如上图所示,如果不是,那么kv文件中的一些设定就不会生效。 
    比如设定一个标签

    Label:
        id: time
        text: 'xxxx'
        font_size: 60
    
    • 1
    • 2
    • 3
    • 4
    • 5

    id为time,text文本内容为’xxxx’,然后字体为60 
    好吧,点到为止吧,不过似乎什么都没点到~~~

    从无到有做一个App,我想我会另起一篇文章吧。

  • 相关阅读:
    DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
    DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
    DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
    DVWA 黑客攻防演练(七)Weak Session IDs
    DVWA 黑客攻防演练(六)不安全的验证码 Insecure CAPTCHA
    DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
    工作流表结构设计
    Visual Studio 2019尝鲜----新建空项目体验
    《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
    .NET快速开发平台的在线预览
  • 原文地址:https://www.cnblogs.com/xiongwei/p/8056535.html
Copyright © 2011-2022 走看看