vlambda博客
学习文章列表

QPython 开源笔记 一 关于github里项目模块的介绍

上次立了FLAG要开始正儿八经地推进qpython开源项目。


从上周开始到,利用空闲时间,清理了qpython github,把最新的qpython代码上传,并且进行了初步的整理



## 以下是构建完QPython安卓App的代码模块


QPython

QPython aims to to provide a full features Python / Python3 scripting engine for the latest Android 

QPython目标是为最新的安卓提供一个全特性的Python/Python 脚本引擎。


QPython也是接下来我们要重点按照开源组织形式推进的核心项目。QPython可能无法兼容一些老的系统,如6.0以下的。


当前仓库已经包含了最新的代码,你想不想在AS里运行一下自己修改过后的QPython ?


QPython3

QPython3 aims to to provide limited features Python3 scripting engine for the most Android systems which from 4.3+ to 9.x

QPython3 目标是为大多数安卓系统,从4.3到9.x提供一个功能受限的Python3 脚本引擎。

当前QPython3的代码还在整理中,在未来同样会开放出来。


QPython3希望能让大家的旧安卓系统也能发挥作用,通过QPython3把旧安卓手机充分利用起来,成为一个“超级类iot终端“。

未来可能会考虑重新调整下命名,让QPython 和 QPython3的定位能通过名字体现出来。


QPysl4a

QPysl4a is forked from https://www.github.com/damonkohler/sl4a/, and it provides the Android Layer APIs for script engine.


It is not a standalone project, it will be included by QPython / QPython3 as a submodule.


QPysl4a由https://www.github.com/damonkohler/sl4a/ (老的SL4A) forked后进行诸多修改而来,它为脚本引擎提供了安卓层API支持。

它不是一个独立项目,它会被QPython / QPython3作为子模块的方式引用。


其实现在SL4A又一个潜力未被挖掘,以及用SL4A来制作应用界面,这个能让程序应用更加的安卓原生化,且还能动态改变,因为它是像安卓原生开发一样,通过解析XML来渲染界面。


Pygamesdl2-jni

Pygamesdl2-jni should be compiled with NDK, and it lets you run some limited pygame scripts on QPython.


It is not a standalone project, it will be included by QPython as a submodule.


Pygamesdl2-jni需要用NDK编译,它能让你在QPython上运行有限的pygame脚本。

它不是一个独立的项目,它也会被QPython按照子模块的方式引用。


之前QPython是内嵌支持kivy作为一种UI,但是看到pygamesdl2后,我觉得用这种方式结合SL4A的方式更加友好,除了它有支持游戏开发的潜力外,它依赖的文件比kivy少了很多,花些时间就能完全读懂其代码,不像kivy那么复杂,所以后来的版本就把kivy去掉了。


Qftplib

QFtplib provides basic ftp features for Android project.

It is not a standalone project, it will be included by QPython / QPython3 as a submodule


QFtplib为安卓项目提供基础的ftp功能。

它不是一个独立的项目,它将会被 QPython / QPython3按照子模块的方式引入。


QBaselib

QBaselib provides basic base libraries / utils for Android project.


It is not a standalone project, it will be included by QPython / QPython3 as a submodule.


QBaselib也为安卓项目提供了基础的库 / 工具函数。


它也不是一个独立的项目,它也将会被 QPython / QPython3作为一个子模块引入。


这个库,有点历史,还是我早年做移动创业时候的产物,当时怎么快怎么来,代码只增不减 :) 当年做过几个数百万安装的App都是在这个包的基础上开发出来的。一个星期就能出MVP ,快速发布,虽然BUG多多,但是很快见到市场反响。可 惜那个凭手快就能抓取增长机遇的窗口很快就过去了,现在又是新的更有难度的挑战了。



## 除了上面外,还有用于构建QPython内核的

QPython3-toolchain

QPython3-toolchain is a tools collection, helping you build QPython3's core from source code and QPython3's extensions like umpy / scipy / pandas / matplotlib / theano / keras / scikit-learn.


QPython3-toolchain 是一个脚本工具集合,能帮你从源码构建出 QPython3的内核和扩展,如numpy / scipy / pandas / matplotlib / theano / keras / scikit-learn 等。


目前的QPython3 & QPython 所用的Python3 内核,都是用这个构建出来的内容,预先打包放到了上面的QPython / QPython3项目资源包里,所以构建上面的安卓程序不需要重新进行构建。


但是如果想要自己定制或者编译Python扩展给QPython项目来用,就得使用这个工具来进行交叉编译了,目前AIPY系列的库,如numpy / scipy / pandas / matplotlib / theano / keras / scikit-learn / Notebook等扩展库,都是基于这个构建的。


目前还没整理完,还差一点工作,另外还有使用文档。


cpython

The Python core for QPython3, which is forked from Python.


这个就是从python官方forked过来的,这个主要是被上面的QPython3-toolchain使用的,用于编译qpython的内容的,目前是基于3.6.x的,另外某些代码做了修改。但是在保留原来的基础上新建了一个分支。这样通过git操作就能很方便地和官方代码保持同步。


## 此外,我们还有一些示例项目

app-call-qpython-api

An Android sample project shows how to call QPython API.


一个展示如何在安卓App里调用QPython API的示范项目。Play市场上有个tasker-qpython-plugin,能让用户自己写些QPython脚本,然后通过tasker(自动化工具)来驱动安卓工作。这个takser-qpython-plugin就是使用了QPython API的方式来调用脚本。


qpy-calcount

QPyCalCount is a sample project for QPython which show how to use QSL4A features.


QPyCalCount 是一个QPython示范项目,用于展示如何使用QPython SL4A特性的,在这里主要是展示了如何动态渲染安卓原生界面的特性。


qpy-flappybird

QPyFlappybird is a sample game project for QPython which uses pygamesdl2 features.


QPyFlappybird是一个QPython示范游戏项目,它使用了pygamesdl2的特性。QPython需要大于2.4.0才能跑。


上面的库,代码有点乱,大家多担当 : ) 重构项目,整理得清晰易懂是今年的重点任务。



关于github里项目模块的介绍就到这里。


另外,我们很希望感兴趣、有能力的朋友加入进来,开源项目的本质是参与,迎接挑战、获得成长,赢得喜悦都在参与之中。


项目管理、沟通、设计、市场、开发、测试,都需要!

一起来玩吧,留下你的email,我们会邀请你加入QPython SLACK小组。