日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现iOS App的在线安装

發布時間:2024/5/17 编程问答 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现iOS App的在线安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、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的在线安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。