zoukankan      html  css  js  c++  java
  • iOS开发--in house发布和安装(ipa重新签名)

    in house从字面意思理解就是‘内部的’,in house版本的ipa就是一个用于公司内部使用或测试的一个苹果应用程序安装包。

    作为一个app应用程序开发者,在app应用程序在苹果商店上架前总需要将安装包安装到ios机器上进行测试,这个时候我们就需要打包in house版本的ipa了,打包in house实际上是一个将ipa应用程序重新签名的一个过程。下面我们就讲述如何发布in house

            一般来说打包in house需要以下东西

    MAC机器,一般打包ipa都是在MAC机上打包的,一个后缀名为.mobileprovision概要配置文件,一个后缀名为P12的证书,还有一个后缀名为.cer的证书,还有就是你想重新签名的ipa.

    如果你的P12证书已经包含专用密钥那么只需要在MAC上双击P12j将证书和密钥导入到钥匙串中去。

    如果没有包含专用密钥,那么为P12导入专用密钥 ,在mac机中双击P12和密钥在钥匙串中倒开然后选中证书和专用密钥,右键导出两项如下图

    然后弹出另外一个对话框提示保存的路径和格式,路径自己定,格式选择"个人信息交换(.P12)")


    这样我们就得到了一个包含专用密钥的P12证书

    这样我们就在钥匙串中有了证书。

    你可以在MAC机上新建一个文件夹,放入概要配置文件123.mobileprovision,P12证书,cer证书,和test.ipa

    在文件夹中新建一个ResourceRules.plist文本写入如下代码

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>rules</key>
    <dict>
    <key>.*</key>
    <true/>
    <key>Info.plist</key>
    <dict>
    <key>omit</key>
    <true/>
    <key>weight</key>
    <real>10</real>
    </dict>
    <key>ResourceRules.plist</key>
    <dict>
    <key>omit</key>
    <true/>
    <key>weight</key>
    <real>100</real>
    </dict>
    <key>^SC_Info/.*.sinf$</key>
    <dict>
    <key>omit</key>
    <true/>
    <key>weight</key>
    <integer>10000</integer>
    </dict>
    <key>^SC_Info/.*.supp$</key>
    <dict>
    <key>omit</key>
    <true/>
    <key>weight</key>
    <integer>10000</integer>
    </dict>
    </dict>
    </dict>
    </plist>

    然后再在文件夹中我们命名为inhouse.sh,在inhouse.sh写入如下命令

    if ! ([ -f "$1" ]); then
    echo "${1}"不是合法文件
    exit
    fi
    ipaName=${1%.ipa}
    if [ "$ipaName" = "$1" ]; then
    echo "${1}"不是ipa文件
    exit
    fi
    unzip ${ipaName}.ipa
    rm -rf Payload/*.app/_CodeSignature/
    cp 123.mobileprovision Payload/*.app/embedded.mobileprovision
    (/usr/bin/codesign -f -s "iPhone Distribution: Ifree studio limited" --resource-rules Payload/*.app/ResourceRules.plist Payload/*.app/) || {
    echo failed
    rm -rf Payload/
    exit
    }


    zip -r ${ipaName}Inhouse.ipa Payload/
    rm -rf Payload/


    其中Ifree studio limited就是证书在钥匙串中的名字可以查看上图中钥匙串的名称

    然后就是在mac机器上的终端命令中跳到文件夹中执行./inhouse.sh test.ipa

    这样就会打包出ipa了

    如果提示没有权限可以通过命令

     chmod 777 inhouse.sh为inhouse.sh添加权限,另外如果在执行sh命令时候报错可以在命令中输入
     export CODESIGN_ALLOCATE="/Applications/Xcode.app/Contents/Developer/usr/bin/codesign_allocate"
    这样我就在文件中得到了一个名字为testInhouse.ipa的文件。


  • 相关阅读:
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Path Sum
    Symmetric Tree
    Solve Tree Problems Recursively
    632. Smallest Range(priority_queue)
    609. Find Duplicate File in System
    poj3159最短路spfa+邻接表
  • 原文地址:https://www.cnblogs.com/james1207/p/3299652.html
Copyright © 2011-2022 走看看