IPA 的 OTA 之旅,讓你的 app 不透過其他方式直接安裝到手機

Journey on programming
6 min readMay 25, 2018

--

先說,我之所以會碰到這個東西是因為,最近需要包 ipa 給其他人進行測試,以往把 ipa 安裝到手機的方法,如果不是想要正式透過 testflight 進行測試的話,就是透過 AdHoc 的憑證,包成 ipa 檔給其他人進行安裝,而安裝的方法現在從網路上找到的幾乎都是教你從 iTunes 把 ipa 匯到手機裡面,但是從 v12.7 開始,APP 這個選項已經從 iTunes 左邊的選單當中被移除了,目前網路上有找到的解決方法主要是下列幾種。

  1. 降級 -> 12.6,只要回到 12.7 以前的版本,這個功能就又回來了
    => 治標不治本,如果 iTunes 又有新版,不可能一輩子不更新
  2. 透過 Apple Configurator 2 / XCode 來安裝 ipa 到手機上
    => 這個工具一開始的目的是要讓企業來做大量部署的,如果要用來做該用途,不是不行。
    但如果今天要測試 app 的是你老闆,你確定這個繁瑣的程序,他會買單嗎?

登登!OTA 之旅就此展開了~

OTA 的原文是 over the air,指的是讓你的手機不透過任何第三方媒介,就可以直接安裝 ipa ,讓我們看看怎麼做吧!

*匯出 ipa 的方式不在本文的討論範疇,如果有需要的讀者可以參考下列資源
https://stackoverflow.com/questions/5499125/how-to-create-ipa-file-using-xcode
https://www.youtube.com/watch?v=TZjbfjdiIPU

*OTA 必須透過 web server 來完成,至於怎麼搭建一個開放的 web server 就又是另外一個故事了,所以我們這邊透過 dropbox 來協助我們達成目的。

注意! 在你取得 dropbox 分享連結之後,請幫我完成下列兩件事情:

  1. 請手動把 www.dropbox.com 替換成 dl.dropboxusercontent.com
  2. 如果網址最後有 ?dl= 的字樣,請幫我刪除,就保留 xxxxxx.ipa 或 manifest.plist 這樣就好

重點步驟

  1. 請先申請一組 dropbox 帳號,並且把你的 ipa 上傳到某個你喜歡的資料夾當中,然後開放共享,並且取得連結
  2. 接著將下列的程式碼,複製到文字編輯器當中

要修改的東西主要有下面幾項,我都有透過 **** 要改成的項目 ***** 來做標記,主要是 ipa 的開放連結、app bundle identifier、bundle version、app title

<?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>***** public share link for you ipa *****</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>***** app bundle identifier *****</string>
<key>bundle-version</key>
<string>***** bundle version *****</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>***** App Title *****</string>
</dict>
</dict>
</array>
</dict>
</plist>
  1. 修改完成之後,將該檔案儲存成 manifest.plist ,然後也一並將該檔案上傳到 dropbox 上,同樣的也開放共享,並且取得連結
  2. 接著把下列的程式碼,複製到文字編輯器當中

這邊要修改的東西就是 App Title 跟 manifest.plist 這個檔案的公開連結

<html>
<title>***** App Title *****</title>
<h1><a href>Install App</a></h1>
</html>
  1. 修改完成之後,把該檔案儲存成 install.html 並且也將該檔案上傳到 dropbox 當中。
  2. 接下來,僅需要把 install.html 的這個共享連結,分享給要測試的人,並且請他用 dropbox 的 app 開啟,就可以順利運行該 html 並且直接點擊進行安裝了。
  • 註1: 這邊之所以一定要透過 dropbox 的 app 是因為我自己實際測試,在手機上,不管是透過 chrome / safari 都會顯示該 html 的原始碼,而不會轉譯成 html 的格式,讓我們直接點擊前往下載,但是 dropbox 的 app 可以完成此功能。
  • 註2: 我這邊是透過 Ad hoc 來做安裝,所以在你產生 ipa 之前,請先確定 XCode 的 Provisioning Profile 當中的 device list 有包含到需要安裝此 app 的 uuid ,如果沒有的話,請回到 apple developer 當中去做新增的動作,詳細可以看我的前一篇文章。
    https://medium.com/@zhongwei0717/code-signing-流程與名詞解釋-e7435dab6573
  • 註3: 別看到 Ad hoc 就以為跟 Ad 有關,這邊的 Ad hoc 是拉丁文中所使用的短語,指的是特定目的的、臨時的意思,所以常用來形容一些特殊的,且不能用於其他方面的,為了某一個特定狀況而設定的解決方案。
    https://zh.wikipedia.org/wiki/Ad_hoc

Reference

https://medium.com/@lefty./itunes-12-7-移除了-apps-的選項-我該如何安裝-ipa-檔案到-ios-裝置-2cad1d35d017

https://medium.com/@alexdimango/distributing-an-ipa-over-the-air-with-dropbox-ios-10-in-five-minutes-579fcdc7a0bb

--

--

Journey on programming

Software Developer at 91APP. If you like my articles, please clap and follow me on Medium. Never stay still, never plateau!