日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

iospython开发工具_使用Python开发iOS程序

發(fā)布時間:2025/3/13 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iospython开发工具_使用Python开发iOS程序 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

們見過使用JS、Lua、Ruby開發(fā)iOS程序的,但是基本沒有見過使用Python開發(fā)iOS程序(軟件)的,這是為什么?關于這個問題,我后面會回答。

那么,怎么用Python開發(fā)iOS程序呢?其實我們最主要解決的就是下面幾件事情:

在iOS App中安裝Python解釋器。

搭建Python和objc通信的橋梁。

如何配置工程并開發(fā)。

如果不使用UIKit這些,那么就要使用OpenGL ES這些了,這種方式,主要是用于開發(fā)游戲的,我們這里不涉及這些。

當然,以下所有內容都是在一臺已經安裝了Xcode的Mac上進行的。

在iOS App中安裝Python解釋器

Python-iOS-support

pybee開源了一個可以嵌入到iOS工程中的Python編譯腳本,具體位置在這:

默認是使用Python 3.4.2,編譯x86_64、i386、ARMv7、ARMv7s、ARM64共5個版本,然后打成一個臃腫包,可選framework或者.a。

如果真的要用于生產環(huán)境的話,只要把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 3.4.x

Python 3.5.x

按照作者的說法,Python版本是可以更換的,但是我嘗試過,我將最新版本的Python 2.7.11放進去,是無法編譯成功的。

有一些人提到了這個問題,但是作者還是建議使用3.4.x或者3.5.x版本,2.7x版本他已經不再支持了。

修改Python版本的地方在:

PYTHON_VERSION=3.4.2

替換為其他版本即可。

編譯

切到Python-iOS-support目錄,設置編譯參數(shù),直接編譯。我們這只需要iOS版本,所以直接make iOS即可。

編譯成功之后,會在build目錄上生成Python.framework和OpenSSL.framework。

如果編譯出問題,或者不想煩這個事情的,可以直接下載編譯好的版本:

搭建Python和objc通信的橋梁

rubicon-objc是一個連接Python和objc的橋梁。

首先,我們需要安裝一下:

pip install rubicon-objc

那么,它有什么用呢,這就有意思了,我們來看一下它是這么寫的。

這塊的內容,前提條件是你要懂點iOS。

#!/usr/bin/python

# -*- coding: utf-8 -*-

from ctypes import cdll

from ctypes import util

from rubicon.objc import ObjCClass, objc_method

# 載入Foundation框架

cdll.LoadLibrary(util.find_library('Foundation'))

# 獲取NSArray類

NSArray = ObjCClass("NSArray")

# 等同于

# NSArray *myArray = [NSArray arrayWithObjects:@"ok", @"ok1", @"ok2", nil]

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

print myArray.count

print myArray.indexOfObject_("ok2")

輸出結果是:

是不是很好玩!

調用objc的方式和以前objc直接的寫法很像,只是有一些需要改變,比如:

方法名不使用:,而是使用_。

多參數(shù)需要使用Python的方式,比如objc里面的方法是:

**objc:**

-(BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;

**Python**

array. writeToURL_atomically_(url, atomically)

不能使用nil,Python里面使用None代替。

等等。

具體用法大家可以自行探究一下。

如何配置工程并開發(fā)

創(chuàng)建工程

Python所需要的工程和直接用Xcode創(chuàng)建的不太一樣,手動改寫的話,還比較麻煩,所以我們直接用模板工具生成。

cookiecutter是一個可以在模板中快速創(chuàng)建工程的一個工具,Python-iOS-template是pybee開源的一個使用Python開發(fā)iOS工程的模板。

首先,我們需要安裝cookiecutter,直接使用pip安裝即可:

pip install cookiecutter

安裝好后,直接使用cookiecutter命令創(chuàng)建工程:

cookiecutter https://github.com/pybee/Python-iOS-template

建好的工程目錄結構如下:

app目錄是放置我們創(chuàng)建的python文件的地方。 app_packages目錄是放三方包的地方,等同于我們在電腦端的site_packages文件夾。

工程里面可以同時存在objc文件和python文件,兩者可以各自運行,并不沖突。

完善工程

Talk is cheap, show me the code.

不得不承認,rubicon-objc幾乎沒有文檔。

我在github上找到一個項目,iOS-Python-Project。這是使用rubicon-objc開發(fā)的一個Python-iOS工程,但是很可惜的是,我這邊運行出錯。

我借鑒了iOS-Python-Project,修改了一個可以運行的工程,有興趣的可以去下載一下。

工程里面并沒有集成Python.framework和OpenSSL.framework,因為這兩個framework太大了,clone下來的時間會很長,所以不如直接在Github上下載編譯好的framework,地址在這邊:

下好了之后,framework一般放置于根目錄下面,相對于我這個demo,那么放置的目錄就是python-iOS/,和apptest.xcodeproj同級。

這個demo運行起來大概是這個樣子:

demo中只修改了rootViewController的背景,然后在上面添加了一個label。

當然,它還能做很多事情,怎么做,我也不知道。

它的文檔太少了,我甚至不知道怎么才能使用CGRect,因為它不是一個類,我無法import進來。

總結

開頭我提到為什么很少有人會使用Python去開發(fā)iOS程序(軟件),我個人認為主要有以下幾個原因:

IDE的支持 – 如果你已經在我的demo上寫了幾行,你會發(fā)現(xiàn),沒有任何objc庫的提示。本來我們objc這門語言就是寫法很長很詳細的,要想直接手寫出整個方法名,那真是X了🐶了。

系統(tǒng)庫 – 一般來說,iOS程序一般至少都要有幾個頁面的,那么UIKit基本就是我們必須的,除非你想使用OpenGL ES畫,或者直接HTML等。而要用到UIKit,肯定要寫一堆是Python但是完全像objc的代碼,因為那方法名就是這么定義的。這樣寫太累了,不如直接用objc寫。

Python解釋器過大 – 我生成的只有ARMv7和ARM64的Python.framework就已經有20M+了,再加上好幾M的OpenSSL.framework,這得多大。即使打到生產包里面,我相信估計也有10M~20M了,相比較而言,lua的解釋器就只有200k。

技術支持 – 連我們上面說到的rubicon都沒有文檔,萬一出事了,找誰解決?社區(qū)上也沒幾個人這么干,提問的話,又有幾個人可以幫助你。Ruby可以用RubyMotion來開發(fā)iOS,但是它還是有一些人用的。

在文章最后,我只想說:

雖然Python不適合開發(fā)iOS程序,但是,很好玩啊。

這就夠了。

我們給App做hotfix的時候,如果不算HTML方案的話,主要有兩種,一種是lua的wax,還有一種是js的JSPatch。

lua寫patch的時候也具有上面的1、2兩個缺點,但是補丁這種東西本來就很短,稍微寫點也無妨。

或許,你可以試試使用Python給你的App做hotfix。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的iospython开发工具_使用Python开发iOS程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。