美文网首页
Python 语言开发 Object-C 程序

Python 语言开发 Object-C 程序

作者: 盖世英雄_ix4n04 | 来源:发表于2018-04-20 10:28 被阅读304次

    常见支持开发 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 文件来实现下发插件能力。

    原文地址 :https://cloud.tencent.com/developer/article/1005262?fromSource=waitui (转载)

    Python 开发 iOS 总结

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

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

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

    一个可以编译执行的 demo

    运行结果如下:

    相关文章

      网友评论

          本文标题:Python 语言开发 Object-C 程序

          本文链接:https://www.haomeiwen.com/subject/eilakftx.html