实现iOS App的在线安装

举报
Serendipity·y 发表于 2022/02/16 23:26:58 2022/02/16
【摘要】 一、App 打包,生成 plist 文件     1.打包---将.app包转为.ipa包,其方法主要有四种:      (1)Apple推荐的方式,即实用xcode的archive功能        方法:Xcode菜单栏->P...

一、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名称).


   
  1. rm -rf appName
  2. mkdir appName
  3. mkdir appName/Payload
  4. cp -r appName.app appName/Payload/appName.app
  5. cp Icon.png appName/iTunesArtwork
  6. cd appName
  7. zip -r appName.ipa Payload iTunesArtwork
  8. exit 0     

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


   
  1. distribute/distribute.sh
  2. distribute/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文件

     模板如下:  

    
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5.    <key>items</key>
  6.    <array>
  7.        <dict>
  8.            <key>assets</key>
  9.            <array>
  10.                <dict>
  11.                    <key>kind</key>
  12.                    <string>software-package</string>
  13.                    <key>url</key>
  14.                    <string>http://172.17.22.124/test.ipa</string>
  15.                </dict>
  16.            </array>
  17.        <key>metadata</key>
  18.            <dict>
  19.                <key>bundle-identifier</key>
  20.                <string>com.sunli.test</string>
  21.                <key>bundle-version</key>
  22.                <string>1.1.0</string>
  23.                <key>kind</key>
  24.                <string>software</string>
  25.                <key>releaseNotes</key>
  26.                <string>1.1版本发布</string>
  27.                <key>title</key>
  28.                <string>testDemo</string>
  29.            </dict>
  30.        </dict>
  31.    </array>
  32. </dict>
  33. </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 证书

            生成服务器私钥

 


   
  1. mkdir /private/etc/apache2/ssl
  2. cd /private/etc/apache2/ssl
  3. sudo 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
  

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


   
  1. LoadModule ssl_module libexec/apache2/mod_ssl.so
  2. Include /private/etc/apache2/extra/httpd-ssl.conf
  3. Include /private/etc/apache2/extra/httpd-vhosts.conf

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

   B.编辑 httpd-ssl.conf 文件

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

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


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

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


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

     C.编辑 httpd-vhosts.conf 文件

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

      在 NameVirtualHost *:80 后面添加

  NameVirtualHost *:443
  

      然后在文件末尾添加


   
  1. <VirtualHost *:443>
  2.    SSLEngine on
  3.    SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
  4.    SSLCertificateFile /private/etc/apache2/ssl/server.crt
  5.    SSLCertificateKeyFile /private/etc/apache2/ssl/server.key
  6.    ServerName 172.17.22.124
  7.    DocumentRoot "/Library/WebServer/Documents/"
  8. </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
  

       输入以下内容


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

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

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

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

文章来源: blog.csdn.net,作者:Serendipity·y,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/Forever_wj/article/details/50762890

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。