美文网首页iOS技术专题pythoniOS开发那些事
Python脚本实现iOS自动化打包

Python脚本实现iOS自动化打包

作者: 无意惹东风 | 来源:发表于2018-05-10 01:00 被阅读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文件,但是这个文件是不能正常安装使用的。亲测。

    相关文章

      网友评论

        本文标题:Python脚本实现iOS自动化打包

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