• 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的文件。


  • 相关阅读:
    Web开发实用网站资源
    Web开发实用网站资源
    Ubuntu的LAMP与相关软件安装设置
    Ubuntu的LAMP与相关软件安装设置
    试除法求最小N个素数之二
    试除法求最小N个素数之二
    Python程序-输出1000以内素数
    Python程序-输出1000以内素数
    Ubuntu安装MPICH3集群计算环境
    Ubuntu安装MPICH3集群计算环境
  • 原文地址:https://www.cnblogs.com/james1207/p/3299652.html
Copyright © 2020-2023  润新知