如何使用 Python 开发 iOS 程序?

更多腾讯海量技术文章,请关注云加社区:https://cloud.tencent.com/developer

作者:陶海军

常见支持开发 iOS 的第三方语言

Js 语言

Lua 语言

Ruby 语言(RubyMotion)

怎么用 Python 开发 iOS 程序

其实我们最主要解决的就是下面几件事情:

在 iOS App 中安装 Python 解释器

搭建 Python 和 objc 通信的桥梁(rubicon)

如何配置工程并开发

在 iOS App 中安装 Python 解释器

Python-iOS-support

pybee 开源了一个可以嵌入到 iOS 工程中的 Python 编译脚本,具体位置在这:

https://github.com/pybee/Python-iOS-support

默认是使用 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 解释器编译

cd 到 Python-iOS-support 目录,设置编译参数,直接编译。我们这只需要 iOS 版本,所以直接 make iOS 即可。

Python 解释器framework

如果编译出问题,可以直接下载编译好的版本:

https://github.com/pybee/Python-iOS-support/releases

搭建 Python 和 objc 通信的桥梁

rubicon-objc 是一个连接 Python 和 objc 的桥梁。

首先,我们需要安装一下:

打开 mac 终端运行下面命令 pip install rubicon-objc

Python 写 iOS 语法

1)调用 objc 的方式和以前 objc 直接的写法很像.

2)方法名不使用:,而是使用_ 如:OC 代码:[label setText:@"xxx title"]

Python 代码:

label.setText_("xxx title")

3)不能使用 nil,Python 里面使用 None 代替 如:

myArray = NSArray.arrayWithObjects_("ok", "ok1", "ok2", None)

Python 可支持 iOS 插件功能

1、iOS 内嵌 lua wax 可实现 app 下发插件能力。

2、iOS 内嵌 jsPatch 可实现 app 下发插件能力。

3、iOS 如果内嵌 Python 解释器与 rubicon 通信框架,利用 OC runtime 同样可以下发 python 文件来实现下发插件能力。

Python 开发 iOS 总结

1、没有 Oc 语法高亮 IDE 的支持 ,OC 系统库方法名较长开发者必须熟记各名方法名,这无疑给开发增加难度。

2、Python 解释器过大生成的只有 ARMv7 和 ARM64 的 Python.framework 就已经有 20M 了;相比较而言,lua 的解释器就只有 200k。

3、技术支持 rubicon 没有任何官方文档;开者过程出现一些 rubicon 框架自身的 BUG,无人解决。

一个可以编译执行的 demo

运行结果如下:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180115A074F000?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券