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


iOS开发--in house发布和安装(ipa重新签名)的更多相关文章

  1. iOS开发之企业发布无线安装APP

    前提是注册成为企业开发者(¥299),申请到证书并安装到本地,可以正常使用Xcode在IOS移动设备上进行Debug. 首先build看是否报错.如无错 执行下一: 执行Product—Archive ...

  2. ios开发环境配置及cordova安装与常用命令

    一.ios开发环境配置 1.首先要有台Mac Book,如果有Mac Book,跳过步骤2.3.4,如果没有,执行步骤2.3.4: 2.下载并安装VMware Workstation,最好是下最新版本 ...

  3. IOS开发中Xcode常用插件安装与管理(转)

    XCode中插件管理工具:Alcatraz    转自http://www.cocoachina.com/industry/20140506/8325.html 苹果现在的成绩得益于其始终如一的坚持. ...

  4. iOS不用上架就能下载安装ipa应用内测:使用FIR.im发布自己的移动端APP

    本文转自:http://www.cnblogs.com/imzzk/p/firim.html 一次很偶然的机会知道fir.im,这家公司主要的产品就是帮助开发者方便便捷地发布iOS或者Android应 ...

  5. iOS开发手记 - iOS9.3 Xcode7打包ipa文件在其他越狱机器上运行的方法和一些问题

    现在Xcode7可以用一个appleid就可以往手机上部署测试app,不再需要$99,这也是方便.但是要把app发给别人的手机上运行还是不行,除非别人的手机在你身边可以直接通过Xcode安装 关于怎么 ...

  6. iOS开发学习-cocoapods的配置安装

    安装coacoapods步骤: 在终端输入如下命令,升级ruby版本: sudo gem update —system 出现这个,标志着安装成功. 完成之后,再输入如下命令: gem sources ...

  7. ITMS-SERVICES://方式安装IPA在IOS 7.1中的变化

    转:https://laoyur.com/?p=414 iOS7.1中,通过itms-services://方式安装ipa已经发生了改变,.plist文件必须是https://的,.ipa文件的链接则 ...

  8. 苹果iOS App上架流程,非iOS开发人员上架教程

      iOS应用上线发布流程一般包含相关证书文件的配置.Xcode的设置.App Store Connect填写App的相关信息.ipa包上传.审核结果以及相关邮件回复.相关证书文件的配置与Xcode的 ...

  9. XE7 & IOS开发之开发账号(2):发布证书、发布授权profile的申请使用,附Ad hoc真机调试、生成ipa文件演示(XCode所有版本通用,有图有真相)

    网上能找到的关于Delphi XE系列的移动开发的相关文章甚少,本文尽量以详细的图文内容.傻瓜式的表达来告诉你想要的答案. 原创作品,请尊重作者劳动成果,转载请注明出处!!! 注意,以下讨论都是以&q ...

随机推荐

  1. django virtualenv

    1. virtualenv virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:1. 在没有权限的情况下安装新套件2. 不同应用可以使用不同的套件版本3. ...

  2. shell学习之字符串处理

    1.获取字符串长度 value=abcd;echo ${#value} 输出:42.获取子串 value=abcd;:} 输出:d value:a:b,其中a表示起始位置,b表示获取的子串的长度. 3 ...

  3. BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Description 为了避免餐厅过分拥挤,FJ要求奶牛们分3批就餐.每天晚饭前,奶牛们都会在餐厅前排队入内,按F ...

  4. BZOJ 1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    1607: [Usaco2008 Dec]Patting Heads 轻拍牛头 Description   今天是贝茜的生日,为了庆祝自己的生日,贝茜邀你来玩一个游戏.     贝茜让N(1≤N≤10 ...

  5. hadoop、spark/storm等大数据相关视频资料汇总下载

    小弟不才,工作中也用到了大数据的相关东西.一開始接触的时候,是通过买来的教学视频入的门.这两天整理了一下自己的视频资料.供各位进行下载. 文档截图:

  6. IT忍者神龟之Java动态代理与CGLib代理

    <br>public class UserDAOImpl{ <br><br>    public void save() { <br>        / ...

  7. Android事件机制全然解析

    android事件是一级一级传递的,假设父控件不拦截.就传给子控件,假设父控件想要消费事件也就是拦截事件的话,须要重写这种方法 public boolean onInterceptTouchEvent ...

  8. 7.2.1 生成1~n的排列(全排列)【STL__next_permutation()_的应用】

    #include <stdio.h> #include <math.h> #include <string.h> #include <stdlib.h> ...

  9. Altera FPGA中的pin进一步说明

    最近END china上的大神阿昏豆发表了博文 <FPGA研发之道(25)-管脚>,刚好今天拿到了新书<深入理解Altera FPGA应用设计>第一章开篇就讲pin.这里就两者 ...

  10. HttpComponents 也就是以前的httpclient项目

    HttpComponents 也就是以前的httpclient项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协议最新的版本和建议.不 ...