一、App 打包,生成 plist 文件

1.打包---将.app包转为.ipa包,其方法主要有四种:

(1)Apple推荐的方式,即实用xcode的archive功能

方法:Xcode菜单栏->Product->Archive->三选一,一般选后两个。

局限性:个人开发一般采用这种方法,但是当一个证书多人使用时就稍显麻烦。一般多人开发时都是采用provisioning profile+P12文件来进行真机调试。上述方法在最后导出ipa包时需要输入appleID,这时还要向团队的其他人要。采用provisioning profile+P12真机调试的方式不要求开发者知道appleID以及密码,密码一般放在leader那里。

(2)iTunes拖入

        itunes里的“我的应用程序”是指电脑上的程序,不要求联机,可以把里面的app删除,具体步骤请看动态图:

(3)自动编译脚本

        编写一个全自动编译脚本,从而不用打开XCODE编译运行即可实现打包,方法和步骤如下:

A.所需语句(可直接在命令行中执行)

xcodebuild -configuration Release       

进入所在工程的根目录文件夹,执行上面的语句,即可开始自动使用release模式build该工程文件。

注意:文件必须添加证书。

mkdir -p ipa/Payload
            cp -r ./Release-iphoneos/PRODUCT_NAME.app  ./ipa/Payload

            cd ipa
            zip -r $FILE_NAME *

进入生成的app文件所在的文件夹,执行上面的语句,可将app文件打包为ipa文件。

注意:app文件可直接导入iTunes后直接运行,但是没有icon,只需将icon放入./ipa文件夹一起打包即可。

app文件默认生成路径(可修改)

Xcode3:所在工程根目录/build/Debug-iphoneos/PRODUCT _NAME

Xcode4:./user/USER_NAME/library/Developer/Xcode/DerivedData/

PRODUCT_NAMERANDOM_STRING/Build/Products/ Debug-iphoneos/PRODUCT _NAME

icon要求:不大于500*500,格式为jpg,命名为iTunesArtwork,不能有后缀。

B. 脚本的写法(mac/linux)

脚本格式

#!/bin/sh

           上面蓝色的语句。 

           exit 0

脚本创建方法

打开终端

           vim FILE_NAME.sh

           按“i”进入编辑模式

           输入脚本内容(可粘贴)

           按“Esc”退出编辑模式

           按“ZZ”(大写)保存并退出

关于权限:

使用ls -l可以查看当前目录下文件及文件夹的权限。 这里将权限改为777即可chmod 777 FILE_NAME ,然后重命名为.ipa,即:mv xx.zip xx.ipa。

总上便是自动编译脚本的过程,从中可以知道其缺点:不出错还好,一旦有语法错误或者其他错误出现就不好处理。

(4)解压改后缀名

这种方式是在xcode编译产生出.app包的基础上进行进一步处理,通过简单的压缩以及该后缀名即可实现ipa发包。

这种方式下又可通过脚本自动处理以及手动处理两种途径实现,推荐脚本方法,一劳永逸。

A.脚本自动生成ipa包

Step1: 新建文件夹,命名为“distribute”,新建distribute.sh脚本文件,内容为:(注意,脚本中所有appName请先替换成你的真正app名称).

     rm -rf appNamemkdir appNamemkdir appName/Payloadcp -r appName.app appName/Payload/appName.appcp Icon.png appName/iTunesArtworkcd appNamezip -r appName.ipa Payload iTunesArtworkexit 0     

Step2: 将要转化的.app文件放到distribute/文件夹下,这时的文件夹目录结构是这样的:

     distribute/distribute.shdistribute/appName.app

Step3: 运行distribute.sh脚本

打开Terminal,cd到distribute文件夹下,把distribute.sh拉到terminal中执行。如果提示permission denied,则用“chmod 777 distribute.sh”命令赋予权限后,再执行一次distribute.sh。

Step4: 大约若干秒后,会在distribute/文件夹下生成appName/文件夹,里面的appName.ipa就是我们想要的包。

B.手动压缩改后缀方式,这种方式与4.1的方法本质是一样的。

Step1: 新建“Payload”文件夹,注意名字要一字不差;

Step2: 将你的.app包放到Payload中,注意app的名字不做任何更改,就用xcode生成的app名称;

Step3: 在Payload文件夹上右键压缩成zip,然后将生成的.zip文件后缀改成.ipa即可。

2.生成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>items</key><array><dict><key>assets</key><array><dict><key>kind</key><string>software-package</string><key>url</key><string>http://172.17.22.124/test.ipa</string></dict></array><key>metadata</key><dict><key>bundle-identifier</key><string>com.sunli.test</string><key>bundle-version</key><string>1.1.0</string><key>kind</key><string>software</string><key>releaseNotes</key><string>1.1版本发布</string><key>title</key><string>testDemo</string></dict></dict></array>
</dict>
</plist>

url 中需要填写你的 ipa 包下载地址

bundle-identifier 填写你打包时的 bundle id

bundle-version 版本号

reseaseNotes 发布信息

title app名称,下载时会弹出安装提示,提示内容包含 title

二、启动 apache 服务,配置 Https

1. 启动 Apache

Mac OS X 自带了 Apache 服务,我们只需要启动它就可以了,在终端中输入:

   sudo apachectl start

然后在浏览器中尝试输入http://127.0.0.1 , 如果出现 It Works!那么就是启动成功。

站点的默认目录是 /Library/WebServer/Documents/。

2. 开启 Https 服务

因为 iOS7.1 以后, Apple 不再支持 HTTP 方式的 OTA ,所以需要为 Apache 开启 HTTPS 服务。

①. 制作 OpenSSL 证书

生成服务器私钥

    mkdir /private/etc/apache2/ssl cd /private/etc/apache2/sslsudo openssl genrsa -out server.key 1024

生成签署申请

需要完整填写各项信息,Common Name必须是服务器 ip 或域名,其他信息可以随意填写。

    sudo openssl req -new -key server.key -out server.csr

如果这一步漏填信息,可能会导致最后生成的 ca 文件是空的。

生成 CA 私钥

    sudo openssl req  -new -x509 -days 365 -key ca.key -out ca.crt

创建 demoCA

在 ssl 目录下创建 demoCA 文件夹,然后进入 demoCA ,创建一个 index.txt 和 serial ,index.txt 为空, serial 内容为01,然后再创建一个空文件夹 newcerts,然后执行命令。

sudo openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key

②. 配置 SSL 服务

A. 编辑 httpd.conf 文件

   sudo vim /private/etc/apache2/httpd.conf

把以下三行代码前头的注释去掉

   LoadModule ssl_module libexec/apache2/mod_ssl.soInclude /private/etc/apache2/extra/httpd-ssl.confInclude /private/etc/apache2/extra/httpd-vhosts.conf

注意:如果你的 httpd.conf 中缺少了某行,你可以自行添加进去即可(我的 httpd.conf 中就没有后面两行,自己加上去的)。

B.编辑 httpd-ssl.conf 文件

sudo vim /private/etc/apache2/extra/httpd-ssl.conf

把以下两行代码的注释去掉

  SSLCertificateFile "/private/etc/apache2/server.crt"SSLCertificateKeyFile "/private/etc/apache2/server.key"

全文搜索是要注意,可能它的路径和我贴的不一致,然后修改路径,改成你的证书文件路径。

  SSLCertificateFile "/private/etc/apache2/ssl/server.crt"SSLCertificateKeyFile "/private/etc/apache2/ssl/server.key"

C.编辑 httpd-vhosts.conf 文件

  sudo vim /private/etc/apache2/extra/httpd-vhosts.conf

在 NameVirtualHost *:80 后面添加

  NameVirtualHost *:443

然后在文件末尾添加

<VirtualHost *:443> SSLEngine on SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULLSSLCertificateFile /private/etc/apache2/ssl/server.crtSSLCertificateKeyFile /private/etc/apache2/ssl/server.keyServerName 172.17.22.124DocumentRoot "/Library/WebServer/Documents/"
</VirtualHost>

ServerName 填写你的 ip

DocumentRoot 填写你的站点路径

D.检查 apachectl 配置

sudo apachectl configtest

如果它提示:Syntax OK ,那就完成90%了,如果它提示有错,那就要根据错误提示自行解决了。

E.重启 Apache 服务

sudo apachectl restart

这样就可以用 https 访问本地服务器了

三、建立在线安装服务

跳转到你的站点目录,我是 /Library/WebServer/Documents/

   cd /Library/WebServer/Documents/

然后把 plist 文件,ipa 包,还有前面生成在 ssl 目录中的 ca.crt 文件都拖到站点目录中,然后新建网页

   sudo vim index.html

输入以下内容

<html>
<body>
<a href="itms-services://?action=download-manifest&url=https://172.17.22.124/test.plist" class="app_link">click to install app</a>
<br><br>
<a title="iPhone" href="http://172.17.22.124/ca.crt">ssl install</a>
</body>
</html>

url中必须填写 https 开头的 ipa 包下载地址,然后下载前需要安装 ssl 证书,所以第二行附上 ca.crt 证书的下载地址。

最后在 iphone 的 Safari 浏览器中输入地址http://172.17.22.124/index.html 或者https://172.17.22.124/index.html

先安装证书,再安装 app,便大功告成!

实现iOS App的在线安装相关推荐

  1. IOS 7.1 在线安装IPA(OTA无线发布)整理

    本地服务器名:xampp 思路: 1.将生成的 .plist文件放到dropbox中 复制分享链接  将连接写入到index.html中 2.将ipa程序包 放在本地或者上传到dropbox中 获取连 ...

  2. 在线html转ipa,iphone在线安装 ipa 应用:利用 itms-services 协议实现 iOS 应用程序在线安装功能...

    越狱后的  iOS  可以实现像企业证书分发程序那样通过访问网页点击按钮一键安装APP. 先决条件: 已越狱(Jailbreak) 越狱后已安装 Appsync 步骤: 1. 在 html 页面加入类 ...

  3. ios越狱设备在线安装ipa方法

    对于越狱设备,我们可以在线安装ipa,无需下载ipa再通过其他软件来安装.实现这个功能很简单,首先你需要一个web服务器,可供下载ipa和plist文件.然后准备plist.最后公布下载地址,点击下载 ...

  4. IOS在线安装App

    在越狱设备上可以安装,如果设备不越狱也想安装,就要企业发布权限了,可惜我没有,所以不能测试了! 1.创建ipa及plist文件: XCode菜单栏->Product->Archive-&g ...

  5. IOS客户端app在线安装ipa包,

    在github上建立安装需要的plist文件, <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ...

  6. ios 隔空投安装ipa_IOS客户端app在线安装ipa包,

    在github上建立安装需要的plist文件, items assets kind software-package url http://192.168.2.20/test.ipa metadata ...

  7. ipa在线安装搭建_前端技术不懂打包IPA?打包 iOS 的 IPA 文件教程奉上

    IPA 文件,即 iOS 应用的安装包文件,扩展名为 .ipa.能否正确的打包 IPA 文件,是决定了 IPA 文件上传到微导流后能否被正确安装的关键.以下说明了如何正确打包 iOS 应用的 IPA ...

  8. 【转】借助第三方支持https协议的存储实现自己网站上扫描二维码安装IOS APP

    使用plist安装,一般是企业级开发者账号不需要登录到APP STORE的IOS设备应用发布时所用到的技巧. 准备: *一台运行着OSX的苹果电脑,最新版的XCODE,用于导出ipa和plist 一个 ...

  9. iOS adhoc 版本App 如何制作安装

    这个其实很早之前,大概在2010年的时候就搞了,后面经过xcode的n次升级,形式不断变化,并且呢,itunes后来不支持app store了,我也不需要大批量,高频次的给别人测试,后来我就没搞了.需 ...

最新文章

  1. tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
  2. 手动制作linux live,Linux下Live USB如何制作
  3. 全选文字的快捷键_高效办公必备Excel快捷键之Ctrl+26个字母!掌握它们,告别加班...
  4. 云服务器维护人员,云服务器维护工作难吗
  5. 无限踩坑系列(8)--猿界神猿
  6. python微信图标制作_Python十分钟制作属于你自己的个性logo
  7. mysql连接池满了_《MySql体系结构与存储引擎》面试腾讯前总结
  8. java 多线程 面试题整理(更新......)
  9. 一个B站下载视频的网站
  10. 为什么不同文化中都会发现圆形房屋
  11. php 木马,PHP后门木马详解
  12. js拆分百分数_计算百分比Javascript
  13. Spring启动执行流程
  14. TPC116S8 DAC芯片
  15. python中各种属性与方法深析
  16. 笔记《基于无人驾驶方程式赛车的传感器融合目标检测算法研究及实现》
  17. 2004胡润IT富豪榜
  18. MATLAB散点密度图的画法三
  19. Henry前端笔记之 something about devtool
  20. nginx防护规则,拦截非法字符,防止SQL注入、防XSS,nginx过滤url访问,屏蔽垃圾蜘蛛,WordPress安全代码篇

热门文章

  1. 洛谷 P3177 [HAOI2015]树上染色
  2. JSON在PHP中的基本应用
  3. lazy初始化和线程安全的单例模式
  4. 【DevExpress v17.2新功能预告】增强ASP.NET TreeList
  5. 关于最近使用文档的几个技巧
  6. 【数据结构】排序相关题目及各种排序方法的总结
  7. 每日算法C语言1-求某整数
  8. python如何离线安装第三方模块_扣丁学堂python开发之第三方模块pip离线安装
  9. vue中模板编译compiler源码详解
  10. 数组nn从外围1递增_最完整的PyTorch数据科学家指南(1)