iOS技术专题pythoniOS开发那些事

Python脚本实现iOS自动化打包

2018-05-10  本文已影响0人  无意惹东风

尊重原创:贴原文地址 https://www.jianshu.com/p/1f47066da6f7

首先声明一点:上面地址的文章其实已经讲述的很详细了,但是我为什么还要写这篇文章呢。因为我早上洗脸的时候突然想到我为什么不把app的文件路径直接作为参数传过去呢,那样的话我的py文件就不用每个项目都再打开修改路径了不是。
鉴于此,我就想到了写这篇文章。

显然,我就是在原有基础上进行了参数传递这个操作,我们将需要打包的app文件路径在终端作为Python执行的一个input部分输入,就可以生成一个和项目名称相同的ipa文件(这点也做了优化,原文生成的统一是Payload.ipa,个人感觉不是很便于区分。拙见勿喷~~~)。

那么,具体的代码实现是怎么样的呢。

    # 输入路径
    fullPath = input('请输入您要打包文件的路径:')
    print ("\n您输入的文件路径为:%s\n" % fullPath)
    # 倒序查找全路径中的项目名称,rfind方法获取到的是索引值
    print("----rfind:%s"%fullPath.rfind('/'))
    # 进行名称字符串的截取(原来的路径字符串并没有被改变)
    projectName = fullPath[fullPath.rfind('/')+1:-4]
    
    # 设置打包文件的路径
    ipaPath = '/Users/UserName/Desktop/'+projectName
    ipaDir = '/Users/UserName/Desktop/'+projectName+'Ipa'

以上是优化代码的主要部分。
主要操作就是对输入的内容进行了字符串截取,拿到了一个项目名称相同的字符串作为后面要用到的ipa包的包名。
其中的用户名UserName其实就是你电脑的用户名,大家用到的时候记得更改就好。

下面贴出最终的代码:

#!/usr/bin/env python
#coding=utf-8

import os
import commands

def bulidIPA():
    # 输入路径
    fullPath = input('请输入您要打包文件的路径:')
    print ("\n您输入的文件路径为:%s\n" % fullPath)
    # 倒序查找全路径中的项目名称,rfind方法获取到的是索引值
    print("----rfind:%s"%fullPath.rfind('/'))
    # 进行名称字符串的截取(原来的路径字符串并没有被改变)
    projectName = fullPath[fullPath.rfind('/')+1:-4]
    
    # 设置打包文件的路径
    ipaPath = '/Users/UserName/Desktop/Payload'
    ipaDir = '/Users/UserName/Desktop/'+projectName+'Ipa'

    # 创建Payload文件夹
    commands.getoutput('mkdir -p %s' % ipaPath)

    # 将app拷贝到PayLoadPath路径下
    commands.getoutput('cp -r %s %s'% (fullPath, ipaPath))

    # 在桌面上创建packBagPath的文件夹
    commands.getoutput('mkdir -p %s' % ipaDir)

#    # 将PayLoadPath文件夹拷贝到packBagPath文件夹下
    commands.getoutput('cp -r %s %s' % (ipaPath, ipaDir))
#
#    # 删除桌面的PayLoadPath文件夹
    commands.getoutput('rm -rf %s' % ipaPath)
#
    # 切换到当前目录
    os.chdir(ipaDir)

    # 压缩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')

bulidIPA()

注意点:
1-python对换行对齐要求很严格,代码缩进如果不对的话就会编译不过,这个需要特别注意
2-终端输入路径时候,要保证你的项目是在“Generic iOS Device”选项下编译出来的。并且输入路径需要在前后加上单引号。切记。
3-rfind是Python字符串倒序查找索引的方法。
4-文件路径的查找方法,直接通过Xcode找到打开项目找到编译后的.app文件,拖过来就是全路径了。

以上就是关于使用Python实现iOS自动化打包的方法了,希望可以帮到大家。
要不是因为我懒我也不会想到这个优化方法了,不知道是不是真正算得上优化,但是我个人觉得还是有点好处的。


0511更新:通过和原文作者的沟通,对代码进行了修正更改
主要是因为打包的文件夹和文件需要用Payload来命名,如果不是Payload的话虽然也会生成一个ipa文件,但是这个文件是不能正常安装使用的。亲测。

上一篇下一篇

猜你喜欢

热点阅读