真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用Python實現(xiàn)iOS自動化打包-創(chuàng)新互聯(lián)

這篇文章將為大家詳細講解有關(guān)使用Python實現(xiàn)iOS自動化打包,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供南川網(wǎng)站建設(shè)、南川做網(wǎng)站、南川網(wǎng)站設(shè)計、南川網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、南川企業(yè)網(wǎng)站模板建站服務(wù),十載南川做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

一:基于編譯的打包

這種打包方式應(yīng)該是目前所有打包方式中最快的,就是編譯工程--找到.app文件--新建Payload文件夾--拷貝.app到Payload文件夾--壓縮成zip--更改后綴名為ipa--完成!

1.我們演示過程如下圖:

使用Python實現(xiàn)iOS自動化打包

手動打包

2.其實上面的打包過程快的話2分鐘左右可以完成,作為一個追求效率的攻城獅,怎么可能滿足在此,而基于測試包的頻繁性,我們肯定不想一直做這樣重復(fù)性而沒多少技術(shù)含量的工作,接下來,我們就把這個過程自動化!

使用Python實現(xiàn)iOS自動化打包

自動化打包1

在上圖中,我們只需要執(zhí)行python腳本,可以看到桌面很快生成了一個ProgramBag的文件夾,打開文件夾,彩蛋就在里面了!由于我寫的腳本里包含了上傳蒲公英的代碼,這個包有28.3M,網(wǎng)絡(luò)不太好會影響上傳時間,真正的打包時間是可以忽略不記的,也就是執(zhí)行腳本,敲擊回車就好了的事!

使用Python實現(xiàn)iOS自動化打包

自動化打包2

這里我們將打好的包自動上傳到蒲公英網(wǎng)站,完成后自動打開下載地址,這個過程在網(wǎng)絡(luò)好的條件下2分鐘左右完成,99.9%的時間是發(fā)在上傳包上!這里上傳完成會自動打開到下載的網(wǎng)頁。

3.演示過程完畢,接下來我們就來看看原理是怎么實現(xiàn)的吧!下面開始講解Python的具體代碼~ 靜心看完,相信你能看懂,說不定自己也可以很快寫一個腳本,用來解決平常重復(fù)性的工作。下面是核心打包腳本:

#編譯打包流程
def bulidIPA():
  mkdir(PayLoadPath)
  #將app拷貝到PayLoadPath路徑下
  commands.getoutput('cp -r %s %s'%(appFileFullPath,PayLoadPath))
  #在桌面上創(chuàng)建packBagPath的文件夾
  commands.getoutput('mkdir -p %s'%packBagPath)
  #將PayLoadPath文件夾拷貝到packBagPath文件夾下
  commands.getoutput('cp -r %s %s'%(PayLoadPath,packBagPath))
  #刪除桌面的PayLoadPath文件夾
  commands.getoutput('rm -rf %s'%(PayLoadPath))
  #切換到當(dāng)前目錄
  os.chdir(packBagPath)
  #壓縮packBagPath文件夾下的PayLoadPath文件夾夾
  commands.getoutput('zip -r ./Payload.zip .')
  print "\n*************** 打包成功 *********************\n"
  #將zip文件改名為ipa
  commands.getoutput('mv Payload.zip Payload.ipa')
  #刪除payLoad文件夾
  commands.getoutput('rm -rf ./Payload')

有沒有似曾相識的感覺?看綠色文字的部分,其實就是liunx命令,通過腳本包裝了一層,可以理解為我們以前在terminal手動輸入的命令,現(xiàn)在是自動幫我們輸入并執(zhí)行了,大大解放了我們的雙手!

 #將app拷貝到PayLoadPath路徑下
  commands.getoutput('cp -r %s %s'%(appFileFullPath,PayLoadPath))

我們來分析上面這一句,我用OC的偽代碼來實現(xiàn)的話對應(yīng)下面這句:所以上面的%s相當(dāng)于OC中的%@,是一種格式符,后面的appFileFullPath代表我們工程的.app存放的路徑,PayLoadPath代表我們在桌面上新建的PayLoad文件路徑

copy("%@,%@",A,B)

然后結(jié)合注釋(自戀下:注釋寫的還算挺詳細的)基本上代碼的執(zhí)行過程我們就一目了然了,至于前面的commands.getoutput是基于commands組件的命令,理解為可以在terminal執(zhí)行命令即可,下面有一句代碼需要說明:這是一句切換當(dāng)前目錄的命令

os.chdir(packBagPath)

等價于

commands.getoutput('cd %s'%packBagPath)

不要問我為什么沒有用下面的命令,那是因為這句命令我這邊執(zhí)行不成功,被坑了很久,至于原因,還不知道為什么(如果你解決了,歡迎騷擾我),所以用上面python提供的命令代替了。

4.至此,我們將第一步的手動打包過程實現(xiàn)了自動話,如果不需要上傳蒲公英,上面的9行命令就夠用了!接下來我們實現(xiàn)上傳蒲公英的腳本:

#上傳蒲公英
def uploadIPA(IPAPath):
  if(IPAPath==''):
    print "\n*************** 沒有找到對應(yīng)上傳的IPA包 *********************\n"
    return
  else:
    print "\n***************開始上傳到蒲公英*********************\n"
    url='http://www.pgyer.com/apiv1/app/upload'
    data={
      'uKey':USER_KEY,
      '_api_key':API_KEY,
      'installType':'2',
      'password':'',
      'updateDescription':"測試自動化打包"
    }
    files={'file':open(IPAPath,'rb')}
    r=requests.post(url,data=data,files=files)
def uploadIPA(IPAPath):
表示定義了一個函數(shù)uploadIPA,接受一個參數(shù)

requests是一個網(wǎng)絡(luò)請求的組件,我們可以把它類比為AFNetWorking,data是要傳遞的參數(shù),files是要傳遞的文件,至于上傳的參數(shù)key都是根據(jù)蒲公英提供的API來寫的。上面的password代表安裝app時所需要的密碼,同時還有兩個參數(shù),USER_KEY和API_KEY,在蒲公英應(yīng)用的位置可以找到,如圖:

使用Python實現(xiàn)iOS自動化打包

KEY說明

5.最后一步就是上傳成功,幫我們自動打開下載頁:

def openDownloadUrl():
  webbrowser.open(r'https://www.pgyer.com/manager/dashboard/app/40c633aa8dc0ba15191632860558825e',new=1,autoraise=True)
  print "\n*************** 更新成功 *********************\n"

webbrowser也是一個組件庫,這些組件庫在使用時,和OC一樣,都要先import,里面的地址代表蒲公英上應(yīng)用的地址,拷過來粘貼即可!

6.整體的腳本就完了,最后在使用時配置下面的幾個參數(shù)即可,一次配置,永久使用!

appFileFullPath = '/Users/Qinz/Library/Developer/Xcode/DerivedData/DDDS-bcghxucdqelptddawpsfmvjtoefm/Build/Products/Debug-iphoneos/DDDS.app'
PayLoadPath = '/Users/Qinz/Desktop/Payload'
packBagPath = '/Users/Qinz/Desktop/ProgramBag'

#上傳蒲公英
USER_KEY = "61ded40a68axxxxxxe9fd278acd2"
API_KEY = "a4fe2724dc6d8cxxxxxxf1994eec219e"

上圖中appFileFullPath就是我們工程文件中.app的地址,至于PayLoadPath和packBagPath只需要你將"Qinz"用戶名修改為你自己電腦的用戶名即可!

下圖演示快速設(shè)置appFileFullPath的過程:

使用Python實現(xiàn)iOS自動化打包

appFileFullPath

到此,第一種自動化打包方式講解完畢!

二:基于shenzhen打包,shenzhen是一個打包相關(guān)的庫,使用也非常方便,比第一中打包方式還要少一個路徑配置,當(dāng)然打包的速度相對比較慢,要使用下面的腳本,首先得安裝shenzhen,具體可參考https://github.com/nomad/shenzhen

def buildIpa():
  start = time.time()
  print "\n*************** IPA包生成中 *********************\n"
   #commands.getoutput('ipa build') #使用shenzheng打包ipa
  p = subprocess.Popen('ipa build', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  for line in p.stdout.readlines():
    print line,
  retval = p.wait()

  end = time.time()
  print "--------- 打包耗時:%s秒 ---------"%(end-start)
  print "\n*************** IPA包生成成功,準(zhǔn)備上傳蒲公英 *********************\n"

這里我主要是將shenzhen的打包命令"ipa build"封裝在pythone腳本中,同時記錄了打包的時間,經(jīng)過測試打包的時間在4~7分鐘左右,這個腳本中只需要配置蒲公英的USER_KEY和API_KEY,然后cd到當(dāng)前工程目錄,執(zhí)行腳本即可!打包成功會在當(dāng)前工程目錄下生成ipa包和符號化文件!使用如下:

使用Python實現(xiàn)iOS自動化打包

腳本打包

這里的描述日志是更新到蒲公英的填寫的更新日志,最后打包完成記錄如下,同時也是支持蒲公英上傳的,最后完成如圖:

使用Python實現(xiàn)iOS自動化打包

image.png

使用Python實現(xiàn)iOS自動化打包

WechatIMG30.jpeg

可以看到,打包時間耗時將近5分鐘,在我看來時間還是有點長的,所以要想快速打包測試,使用第一種方式能提高不少工作效率!

踩坑之旅:完成這個腳本的過程中,可以說是一部心酸史,一把辛酸淚,踩了不少坑(主要是之前不懂腳本),網(wǎng)上很多關(guān)于自動化打包的文章,下載下來執(zhí)行后就沒成功過,有的是需要配置一些參數(shù),繁瑣的不像自動化,目前很流行的自動化打包庫fastlane,在我使用時,按照官方的教程打包就沒有一次成功過,還有就是報錯后都不知道怎么解決,打包就像碰運氣,心里完全沒底,可以說被折磨的體無完膚,經(jīng)過多次失敗的經(jīng)歷后,我決定要自己擼一個腳本,于是學(xué)習(xí)下Python腳本的語法,也就有了現(xiàn)在的這個版本!關(guān)于AppStore的包,還是建議使用Xcode打包!

關(guān)于“使用Python實現(xiàn)iOS自動化打包”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


當(dāng)前標(biāo)題:使用Python實現(xiàn)iOS自動化打包-創(chuàng)新互聯(lián)
分享路徑:http://weahome.cn/article/dedehc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部