对,你没有看错,就是使用Python开发iOS程序!
我们见过使用JS、Lua、Ruby开发iOS程序的,但是基本没有见过使用Python开发iOS程序(软件)的,这是为什么?关于这个问题,我后面会回答。
那么,怎么用Python开发iOS程序呢?
其实我们最主要解决的就是下面几件事情:
在iOS App中安装Python解释器。
搭建Python和objc通信的桥梁。
如何配置工程并开发。
如果不使用UIKit这些,那么就要使用OpenGL ES这些了,这种方式,主要是用于开发游戏的,我们这里不涉及这些。
当然,以下所有内容都是在一台已经安装了Xcode的Mac上进行的。
在iOS App中安装Python解释器
Python-iOS-support
pybee开源了一个可以嵌入到iOS工程中的Python编译脚本,具体位置在这:
https://github.com/pybee/Python-iOS-supp...
默认是使用Python 3.4.2,编译x86_64、i386、ARMv7、ARMv7s、ARM64共5个版本,然后打成一个臃肿包,可选framework或者.a。
如果真的要用于生产环境的话,只要把Makefile中的TARGETS-iOS=iphonesimulator.x86_64 iphonesimulator.i386 iphoneos.armv7 iphoneos.armv7s iphoneos.arm64
修改为:TARGETS-iOS=iphoneos.armv7 iphoneos.arm64
我们只需要支持ARMv7和ARM64即可,ARMv7s可以兼容ARMv7,所以可以让包小一些。
修改Python版本的地方在:PYTHON_VERSION=3.4.2
替换为需要版本即可。
编译
切到Python-iOS-support目录,设置编译参数,直接编译。我们这只需要iOS版本,所以直接make iOS即可。
编译成功之后,会在build目录上生成Python.framework和OpenSSL.framework。
搭建Python和objc通信的桥梁
rubicon-objc是一个连接Python和objc的桥梁。
首先,我们需要安装一下:pip install rubicon-objc
调用objc的方式和以前objc直接的写法很像,只是有一些需要改变,比如:
方法名不使用:,而是使用_。
多参数需要使用Python的方式
如何配置工程并开发
创建工程
Python所需要的工程和直接用Xcode创建的不太一样,手动改写的话,还比较麻烦,所以我们直接用模板工具生成。
cookiecutter是一个可以在模板中快速创建工程的一个工具,Python-iOS-template是pybee开源的一个使用Python开发iOS工程的模板。
首先,我们需要安装cookiecutter,直接使用pip安装即可:pip install cookiecutter
创建完工程生成的目录:
app目录是放置我们创建的python文件的地方。
app_packages目录是放三方包的地方,等同于我们在电脑端的site_packages文件夹。
工程里面可以同时存在objc文件和python文件,两者可以各自运行,并不冲突。