1. 程式人生 > >蘋果系統iOS、macOS應用管理機制

蘋果系統iOS、macOS應用管理機制

iOS、macOS系統應用管理機制

 

  蘋果系統包括:iOS、macOS、watchOS、tvOS。應用軟體的生命週期為:開發、上線、安裝、使用、解除安裝。這篇文件將從應用生命週期的各個環節介紹蘋果系統對應用的管理機制,主要詳細介紹iOS和macOS,watchOS與tvOS由於使用者數量少,以及流程與iOS相似度較高,只作了簡單介紹。

iOS

一、開發

註冊賬號:

  單純開發是不用付費的,使用模擬器就可以。如果要真機除錯,或者提交appstore,需要申請開發者帳號。

 

  需要提交:1、註冊一個蘋果賬號作為開發者賬號。2、個人或企業的姓名、地址、聯絡方式等相應資料。3、能夠做美金結算的信用卡賬。4、支付99美金給蘋果公司。

  另外,申請企業賬號需要提供DUNS(鄧白氏編碼)以及稅務等相應資料。D-U-N-S Number 是一組唯一的九位數字,用於檢查所在組織的身份和法人實體狀態。如果未擁有此識別碼,需要將資訊提交給 Dun & Bradstreet,以獲取一個免費的 D-U-N-S Number。

  Apple 開發者到期 App 是會下架,但是已經安裝 App 的使用者,手機仍能使用App,App Store裡面搜尋不到。續費 Apple 開發者後,App 會在當天上線App Store。Apple開發者到期時不能轉讓App。

開發工具:

  蘋果應用開發需要使用mac系統下的Xcode,使用Objective-C和Swift語言。Xcode由蘋果公司開發的整合開發環境,免費對使用者使用,可以開發iOS、macOS、watchOS、tvOS四個系統應用。

二、上線

應用開發完成後,如要釋出上架App store,大致經過以下8個步驟。

  1. 登入Apple開發者中心網站,選擇certificates,Identifiers and profiles,在APP IDs選項裡註冊一個APP ID,用於標識一個或一組APP,需要填寫APP的描述和需要註冊的服務功能。

  2.建立開發證書,證書分為iOS Development(開發證書)和iOS Distribution(釋出證書),開發證書用於真機除錯,有一年使用期限。釋出證書用於APP的釋出。

  3.配置iOS Provisoning Profiles(debug)描述檔案,Provisoning Profiles是蘋果簽名認證的Plist檔案,列舉了開發證書、APP ID、以及授權執行裝置的UDID(為一個裝置的唯一標識)。

  4.在Xcode中進行應用證書註冊並打包APP。在工程裡將Provisoning Profiles配置匯入,完成後就可以打包APP了,匯出APP包。

  5.真機除錯。可以在授權的裝置上進行真機除錯,將打包匯出的APP包安裝於裝置上,安裝時系統會對開發證書進行認證,成功後app會安裝在裝置上,可以在裝置上對app進行測試。

  6.真機測試沒問題後,可以對APP進行上架釋出。這裡需要進入開發者中心建立釋出證書,並配置Provisoning Profiles 描述檔案。

  7.需要在itunes connect 上建立本應用的專案。在開發者中心的itunes connect管理介面建立一個新APP專案,填寫APP的相關資訊包括描述、銷售範圍、版本資訊、關鍵詞等。

  8.提交稽核。需要提供一個測試賬號用於稽核人員進行測試。應用提交之後稽核人員對應用進行稽核。稽核針對安全、效能、業務、設計、法律五個層面。

    安全:不包含不良內容,不造成人身安全隱患、資料安全、不得在指定容器範圍外讀寫資料、不具有特殊許可權

    效能:APP完成度、硬體相容性、能耗、佔用系統資源量、網路效能

    業務:付款、廣告合乎標準

    設計:不涉抄襲、有價值、

    法律:隱私、智慧財產權

  蘋果官方要求,開發和上線應用必須通過Xcode這一整合開發工具,也就是隻能在mac電腦下完成。但如果想在windows環境下完成開發,也可以通過一些其它途徑。藉助LBuilder、HBuilder、APICLoud、APPCan等工具,可以把網站打包成APP,之後通過上架輔助軟體Appuploader進行windows下APP的上架。Appuploader是ios上架輔助工具,可以直接得到.p12和.mobileprovision證書檔案,上傳ipa到App store,打破了上架ios只能在蘋果電腦用Xcode的限制,使用費用100元/年。

三、安裝

  在 iOS 出來之前,在主流作業系統(Mac/Windows/Linux)上開發和執行軟體是不需要簽名的,軟體隨便從哪裡下載都能執行,導致平臺對第三方軟體難以控制,盜版流行。蘋果希望解決這樣的問題,在 iOS 平臺對第三方 APP 有絕對的控制權,一定要保證每一個安裝到 iOS 上的 APP 都是經過蘋果官方允許的,怎樣保證呢?就是通過簽名機制。

ios正規的應用安裝方式分為三種:

1.通過APP store安裝

  對於通過APP store安裝的應用,iOS為了確保所有的應用程式沒有被修改,要求必須使用蘋果頒發的證書對可執行程式碼進行簽名。開發者使用蘋果頒發的釋出證書籤名後,將應用題叫道APPstore稽核,稽核成功後,蘋果使用其私鑰對程式進行簽名。使用者從APPstore下載安裝應用,iOS呼叫系統程序獲取provisioning profile檔案,對應用程式進行證書校驗。

 

2.開發 App 時直接把開發中的應用安裝進手機進行除錯,即在上線時的真機除錯

  開發時安裝APP,它有兩個需求,1)安裝包不需要傳到蘋果伺服器,可以直接安裝到手機上。2)蘋果必須對這裡的安裝有控制權,包括a.經過蘋果允許才可以這樣安裝。b.不能被濫用導致非開發app也能被安裝。蘋果使用雙層簽名的機制,

  1)在你 Mac 開發機器生成一對公私鑰,這裡稱為公鑰L,私鑰L。

  2)蘋果自己有固定的一對公私鑰,跟上面 AppStore 例子一樣,私鑰在蘋果後臺,公鑰在每個 iOS 裝置上。這裡稱為公鑰A,私鑰A。

  3)把公鑰 L 傳到蘋果後臺,用蘋果後臺裡的私鑰 A 去簽名公鑰 L。得到一份資料包含了公鑰 L 以及其簽名,把這份資料稱為證書。

  4)在蘋果後臺申請 AppID,配置好裝置 ID 列表和 APP 可使用的許可權,再加上第③步的證書,組成的資料用私鑰 A 簽名,把資料和簽名一起組成一個 Provisioning Profile 檔案,下載到本地 Mac 開發機。

  5)在開發時,編譯完一個 APP 後,用本地的私鑰 L 對這個 APP 進行簽名,同時把第④步得到的 Provisioning Profile 檔案打包進 APP 裡,檔名為embedded.mobileprovision,把 APP 安裝到手機上。

  6)在安裝時,iOS 系統取得證書,通過系統內建的公鑰 A,去驗證embedded.mobileprovision的數字簽名是否正確,裡面的證書籤名也會再驗一遍。

  7)確保了embedded.mobileprovision裡的資料都是蘋果授權以後,就可以取出裡面的資料,做各種驗證,包括用公鑰 L 驗證APP簽名,驗證裝置 ID 是否在 ID 列表上,AppID 是否對應得上,許可權開關是否跟 APP 裡的 Entitlements 對應等。

3.企業內部分發,可以直接安裝企業證書籤名後的 APP

  企業內部應用,即只在企業部門和員工內部使用、不對外公開的應用。蘋果提供了專門的In-House證書用來發布這種應用,可以分發給任意的手機,只要通過一個URL即可下載安裝,不用上傳到App Store稽核。In-House應用,有時需要根據部門需求進行版本的快速迭代,因為不需要App Store稽核,所以可以做到隨時修改,隨時釋出,節省了大量的時間。

  在打包安裝時同樣需要建立證書,證書型別為In-House型,之後建立配置檔案(Distribution Provisioning Profiles),過程和其他證書建立過程類似。在Xcode中匯入配置檔案,打包程式,可以匯出ipa和plist檔案。Plist檔案中包含ipa的URL、安裝時顯示的 icon 的url、bundle id、版本號、安裝前的提示資訊。將plist檔案上傳至伺服器,企業員工在safari瀏覽器中輸入連結即可安裝。Safari操作的具體流程是:

  1)Safari解析輸入的字串,找到plist檔案

  2)根據plist檔案裡面提供的資訊下載並安裝ipa包,還會訪問大小圖示,大小圖示在ipa包正在下載時顯示,當下載完畢後顯示程式自帶的圖示

  3)下載安裝後,如果想開啟程式還需要在手機 設定->通用->描述檔案與裝置管理,在“企業級應用”分組下,點選 信任 開發者的證書裡面選擇相應的證書信任後,方可開啟程式。

  綜上,3種安裝方式歸根結底,都是通過驗證安裝程式的provisioning profile檔案。安裝應用程式時,Provisioning Profile 檔案被拷貝到 iOS 裝置中,執行該 iOS App 的裝置通過它來認證安裝的程式。Provisioning Profile 把AppID、簽名證書、裝置授權這些資訊全部打包在一起,方便我們在除錯和釋出程式打包時使用。這樣,只要在不同的情況下選擇不同的 Provisioning Profile 檔案就可以了。

 

  除了在正規途徑下安裝應用以外,通過“打破”原有許可權,獲取更高許可權,可以實現脫離官方平臺,自由安裝第三方的應用,即我們口中的“越獄”。

  iOS系統具有封閉性,通過程式碼簽名機制限制未經簽名的程式碼在iOS系統中執行。使用者不能訪問系統資源,也無權修改,只能使用蘋果頒發證書的正規途徑的應用或程式介面完成系統允許的操作。越獄後,使用者可以獲得許可權訪問與修改系統檔案,繼而獲得更多的許可權,完成之前未被iOS允許的功能。越獄的原理是通過漏洞。至少需要2個漏洞,第一個漏洞用來完成專有程式碼執行,第二個漏洞用來使核心的安全措施失效,提升許可權。

  越獄之後安裝應用可不通過APP store,有一些越獄者製作的類似APP store的應用安裝商店,APP store預設安裝位置為/var/mobile/Applications目錄裡,越獄後可安裝在根目錄下,所以牆紙、主題、鈴聲等一些個性化應用在越獄後可以得到安裝。

四、使用

iOS程式5種狀態:

1. Not running:

  應用還沒有啟動,或者應用正在執行但是途中被系統停止

2.Inactive:

  當前應用正在前臺執行,但是並不接收事件(當前或許正在執行其它程式碼)。一般每當應用要從一個狀態切換到另一個不同的狀態時,中途過渡會短暫停留在此狀態。唯一在此狀態停留時間比較長的情況是:當用戶鎖屏時,或者系統提示使用者去響應某些(諸如電話來電、有未讀簡訊等)事件的時候。

3.Active:

  當前應用正在前臺執行,並且接收事件。這是應用正在前臺執行時所處的正常狀態。

4.Background:

  應用處在後臺,並且還在執行程式碼。大多數將 要進入Suspended狀態的應用,會先短暫進入此狀態。然而,對於請求需要額外的執行時間的應用,會在此狀態保持更長一段時間。另外,如果一個應用要求啟動時直接進入後臺執行,這樣的應用會直接從Notrunning狀態進入Background狀態,中途不會經過Inactive狀態。比如沒有介面的應用。注此處並不特指沒有介面的應用,其實也可以是有介面的應用,只是如果要直接進入background狀態的話,該應用介面不會被顯示。

5.Suspended:

  應用處在後臺,並且已停止執行程式碼。系統自動的將應用移入此狀態,且在此舉之前不會對應用做任何通知。當處在此狀態時,應用依然駐留記憶體但不執行任何程式程式碼。當系統發生低記憶體告警時,系統將會將處 於Suspended狀態的應用清除出記憶體以為正在前臺執行的應用提供足夠的記憶體。

 

應用啟動過程:

1、執行main函式

2、在此方法中呼叫UIApplicationMain

2.1 建立UIApplication物件(UIApplication物件是應用程式的象徵,一個UIApplication物件就代表一個應用程式。每一個應用都有自己的UIApplication物件,而且是單例的,如果試圖在程式中新建一個UIApplication物件,那麼將報錯提示。一個iOS程式啟動後建立的第一個物件就是UIApplication物件,且只有一個。利用UIApplication物件,能進行一些應用級別的操作。)

2.2 建立UIApplication的delegate物件。(UIApplication Delegate的作用是當應用程式發出一系列系統事件如來電或鎖屏等,做出相應的反應。新建完專案,都有個帶有“AppDelegate”字眼的類,它就是UIApplication的代理,AppDelegate預設已經遵守了UIApplicationDelegate協議,已經是UIApplication的代理。系統事件如程式降將要啟動、程式啟動完成、程式進入後臺、程式進入前臺、程式退出等。)

2.3 開啟訊息迴圈

3、delegate物件開始監聽系統事件

3.1 app啟動完成後會呼叫delegate物件的程式載入完成的方法

3.2 如果app的plist設定了main storyboard 會建立UIWindow物件(如 果沒有設定則不建立)

3.3 建立main storyboard中繫結的controller物件(stroyboard中箭 頭指向的控制器)

3.4 設定給window物件的rootViewController

3.5 設定window物件可見

螢幕響應順序

  iOS和安卓系統具有不同的螢幕響應順序,IOS對螢幕的響應順序是:觸控→媒體→服務→架構,而安卓是:程式→框架→螢幕顯示資源→架構。所以在視覺效果上,iOS會有更流暢的感覺。

 

後臺管理機制

  從iOS 3開始,蘋 果為iPhone引進了push notification,不啟動應用也 能收到推送訊息,原理是 訊息由APNS(Apple Push Notification Service, Apple Push伺服器)統一管 理,隨著iOS 4的釋出,iOS也開始有了 多工功能,當你點選H o m e鍵後,當前 程式轉入後臺(iOS 4之前按Home鍵就 直接幹掉應用了),後臺應用以墓碑的形 式(退出前的狀態)儲存在記憶體中,使用者 可以快速恢復。但是蘋果對後臺的限制非 常嚴格,只有一些特殊應用可以在後臺 真正執行,比如音訊播放類、VoIP類、 newsstand、位置服務等。

  如果不做任何配置的話,你的應用最 多隻能在後臺執行5秒,之後就會被掛起 (存於記憶體但不執行),如果你配置了後 臺執行(如需下載),大概在594秒(9.9 分鐘)時程序停止,程式同樣也會被掛 起,一旦系統需要記憶體了,最早的後臺進 程就會被殺掉以釋放記憶體。

  從 iOS 7 開始, 一旦手機鎖屏, 後臺應用將會很快被暫停, 之後當系統被喚醒時,那些暫停的後臺應用會一起繼續執行。現在的iOS後臺管理很智慧, 他會記憶你每天什麼時段開啟什麼應用, 經過一段時間後, 他會在適當時間喚醒相應的應用。iOS7新增三種後臺模式:

Baxkground Fetch 後臺應用重新整理

  iOS 7 之前的應用必須在開啟時才能聯網獲取資料, 而它可以讓應用在後臺直接獲取資料。

Silent Remote Notifications  靜默推送喚醒

  iOS 7 之前當收到訊息後, 只有開啟應用才能從APNS獲取推送的具體訊息, 現在在收到訊息後, 會自動喚醒相應的APP , 讓該APP在後臺獲取訊息, 再通知使用者。

Background Transfer Servce  後臺傳輸

  以前一旦下載被轉移到後臺最多隻能持續執行549秒(9.9分鐘), 現在所有的下載任務會交給系統獨立的程序去完成, 不管APP在前臺、掛起還是被殺掉, 下載都在繼續進行。

 

自動清理機制

  iOS系統在安裝應用或者使用過程中儲存空間不足時,會自動清理一些應用的快取以釋放空間。

APP更新推送

  當app有新版本時,可以在APP store裡更新應用。APP在安裝的時候,會在資料庫裡appid對應的列表下新增版本號的關鍵字。使用者在【更新】介面重新整理操作後,傳送請求查詢使用者表,並關聯APP資訊表獲取到使用者安裝過的每一款APP的最新版本號列表。然後把最新版本號列表中的app版本號,與本地的app版本進行比對,如果最新版本號列表中的版本號大於本地版本號,則會有更新提示。

五、解除安裝

iOS檔案目錄結構:

/:為根目錄

Applications: 存放所有的系統 APP 和來自 Cydia 的 APP,不包括從 App Store 下載的APP

Developer: 供開發者使用

Library:系統資源,使用者設定

System:系統的重要組成部分

User:使用者目錄,實際指向 /var/mobile

bin:存放使用者級可執行檔案,如 ls、mv 等

dev:裝置檔案

etc:存放系統指令碼、hosts 配置、SSH 配置檔案等

sbin:存放系統二進位制檔案

usr:使用者工具和程式

var:變數檔案,在正常執行的系統中其內容不斷變化的檔案

 

  應用都是安裝在/var/mobile/Applications目錄下,且應用沙盒機制,每一個應用分配自身的儲存空間,不能越界訪問。應用程式沙盒目錄下有三個資料夾Documents、Library(下面有Caches和Preferences目錄)、tmp。Documents:儲存應用執行時生成的需要持久化的資料iTunes會自動備份該目錄。Library/Caches:一般儲存的是快取檔案,例如圖片視訊等,此目錄下的檔案不會再應用程式退出時刪除,在手機備份的時候,iTunes不會備份該目錄。Library/Preferences:儲存應用程式的所有偏好設定iOS的Settings(設定),iTunes會自動備份該檔案目錄下的內容。tmp:臨時檔案目錄,在程式重新執行的時候,和開機的時候,會清空tmp資料夾。

  iOS 中 app 對本地儲存只能訪問到自己的根目錄,再往上就沒有許可權了。在刪除應用時,app自身的儲存空間的根目錄會直接刪除,在機制內不會留下殘留檔案。

Mac OS

  Mac OS是基於Unix核心的圖形化作業系統;由蘋果自行開發,不對外銷售,一般情況下在普通PC上無法安裝,只安裝於蘋果的裝置中。mac OS雖然也對應用有較嚴格的管理機制,但與手機端iOS系統相比,使用者具有更多的許可權。

一、開發

  mac OS應用的開發過程與iOS的開發類似,需要付費註冊開發者賬號,同樣使用Xcode作為開發工具。

二、釋出

  應用開發完成後,釋出方式與iOS下有所不同。除了在app store線上釋出,還可以在平臺以外發布。mac開發下的證書有5種:

開發證書:

(1)Mac Development:用於開發和測試的證書,跟iOS development證書一樣;執行在指定裝置上需要把裝置的UUID新增到devices裡面去。

釋出證書:

Mac App Store

(2)Mac App Distribution:這個用於 Xcode 自己把.app 檔案上傳到 Mac App Store,具體的上線過程與iOS應用類似。

(3)Mac Installer Distribution:這是用於開發者自己把.app 檔案打包成 .pkg 檔案,再用 Xcode 自帶的 App Application Loader 上傳到 Mac App Store ,可用於上傳到store前模擬真實的store環境。

Developer ID

(4)Developer ID Application:這個用於開發者使用開發者帳號簽名,匯出一個線下發布版本的 .app 檔案,但是由於脫離了蘋果的 Mac App Store,還是加上許可協議打包成 .pkg 檔案再發布比較好,給使用者一個決定是否安裝的機會。這就要用到第5個證書。

(5)Developer ID Installer:用於開發者打包,同時加上開發者帳號簽名,打包生成一個.pkg的安裝包,可以裝到任意一臺Mac電腦上執行安裝過程。

  5種證書,開發證書用於開發和測試,釋出證書就對應著app store和線下兩種釋出形式。根據需要的釋出形式建立對應的證書,證書的建立過程可參考iOS應用的證書建立,釋出的具體過程可以按照官方文件和Xcode的提示一步步來。當然如果不想用證書也不擔心使用者拒絕來源不明的應用的話,也可以不用任何證書籤名打包應用,用預設的簽名方式就可以。

三、安裝

mac OS上對於應用的不同釋出形式,也有不同的安裝方法,可以分為三種。

  1.對於app store上的應用,即上一部分的(2)(3)釋出方式,使用者可以直接登入自己的蘋果賬戶,進行購買或者獲取資源下載,對軟體的購買在平臺完成,蘋果會抽取一部分分成。app store上的應用經過蘋果內部人員的稽核和測試,本身會具有更高的完整度、質量和執行穩定性。但是國內應用的很多軟體app store都沒有,需要線下的方式進行安裝。

  2.第二種安裝方式是線下的.app格式的應用的安裝,即上一部分的(4)釋出方式。這種使用者可以自行從網上搜索下載源,一般下下來的安裝檔案是一個.dmg格式的磁碟映像,dmg 是蘋果的壓縮映象檔案,類似於 Windows 下的 ISO,雙擊開啟後會給系統掛上一個類似行動硬碟的虛擬磁碟,安裝完後可以右鍵彈出。它是 macOS 應用軟體通用的打包格式,裡面一般包含“應用程式名.app”的圖示和一個應用程式資料夾(/Applications)快捷方式。直接將圖示拖曳至應用程式資料夾,即可完成安裝,非常快捷。

  3.第三種是.pkg安裝包的安裝,即上一部分的(5)釋出方式。.pkg屬於系統級軟體的安裝程式,類似於windows中的.exe安裝程式,會閱讀許可協議並選擇安裝位置、安裝內容,一般會修改系統配置,許可權較高,需要sudo授權。

  對於一些來源不明或沒有證書的應用,在開啟安裝程式時有時會出現“檔案已損壞,打不開”。這是由於系統的安全機制對來源不明的軟體的限制。可以通過在命令列裡修改許可權,在系統偏好設定的安全性與隱私設定裡,改成允許任何來源的應用。

  有時還會提示“來自身份不明的開發者”,這時同樣在偏好設定的安全性與隱私設定裡,可以看到要開啟的應用被阻止的提示,點選“仍要開啟”即可。

  蘋果的應用為.app的格式,既是一個包,包含應用的全部內容,可以右鍵顯示包內容,對裡面的檔案或配置進行修改(具有比iOS更高的許可權),同時也是一個可執行檔案,安裝在Applications資料夾後會自動出現在系統的Launchpad(啟動臺)裡。

四、解除安裝

  mac上對於應用的解除安裝,由於安裝方式不同,解除安裝方式也不同。app store裡安裝的應用,類似於iOS,在Launchpad(啟動臺)里長按圖示,點叉號即可解除安裝。線下的app store平臺外自己安裝的應用極少數會自帶解除安裝程式,多數直接在Applications資料夾裡右鍵刪除即可。只是對於.pkg安裝包安裝的應用,由於有時具有較高許可權,可能會修改系統配置,所以刪除應用後有時可能會有解除安裝殘留,可以通過第三方解除安裝軟體或手動刪除。

watchOS

  watchOS是蘋果公司基於iOS 系統開發的一套使用於Apple watch的手錶作業系統。它的應用的開發與上線與iOS相同,使用者只能通過App store來安裝應用。在2019年6月之前,對應用程式的安裝不能在apple watch上直接進行,只能結合iphone使用。連線之後在iPhone上開啟Apple Watch應用程式,來安裝需要的表上應用。安裝完成後,會首先在iPhone上面顯示。需要說明的是,Apple Watch APP應用程式都是必須要配合iPhone使用的,因此所有安裝到Apple Watch上面的應用程式,都會同時安裝到iPhone上。2019年6月之後釋出的新的watchOS系統,自帶app store,不用再連線iphone來安裝應用,可以直接在app store裡獲取安裝。

  解除安裝應用也是兩種方式,既可以在apple watch內直接解除安裝,也可以與iPhone配對,通過iPhone裡的apple watch應用來管理手錶應用。

tvOS

  tvOS是蘋果公司專門為Apple TV設計的作業系統,基於 iOS。2016年3月釋出了 tvOS 9.2 作業系統。Apple TV是蘋果公司推出的一款高清電視機頂盒產品,使用者可以通過Apple TV線上收看電視節目,也可以通過Airplay功能,將iPad、iPhone、iPod和PC中的照片、視訊和音樂傳輸到電視上進行播放。tvOS也可以安裝一些應用,具有獨立的應用生態,通過自帶的app store進行搜尋和安裝。

  tvOS應用的開發與釋出也與iOS類似,需要註冊成為開發者,使用官方的開發工具xcode進行開發,開發與釋出同樣需要建立證書。具體過程均與iOS相同。

  在國內目前使用者不多,不能直接收看國內的有線衛視節目,需要聯網安裝app來收看電視臺。

蘋果系統與其他系統比較

iOS與macOS對比

  兩個系統都是蘋果自主研發的系統,但我們也可以看出,macOS的使用者比起iOS擁有更廣的許可權,可以訪問系統資源,讀寫系統目錄、系統檔案,也可以訪問應用內部目錄,對其配置檔案進行修改,還可以下載安裝來自任何來源的應用。相比之下,iOS的系統生態就更加封閉,使用者無法檢視系統檔案資源,也不能訪問應用內部,只能通過應用的介面來使用和管理應用。而對於廣大蘋果手機使用者而言,他們所使用的唯一的應用安裝方式就是通過官方的APP store。

iOS系統應用與安卓對比

  具有安裝來源不同、使用者許可權不同、執行機制不同、後臺機制不同、響應處理指令許可權不同幾大區別。相比之下優點:1)所有上線應用經過稽核,具有更高的穩定性、流暢度、安全指數、優化性,且可以保護版權,安卓應用開發者隨意開發,參差不齊。2)應用具有較低的許可權,可以更好的保護使用者隱私,相比之下,安卓許多應用如不開放許可權則不讓使用者使用。3)通過優先響應螢幕和獨特的對記憶體管理的方式使其具有更流暢的執行效果。4)iOS軟硬體垂直整合,只執行在蘋果裝置上,安卓可以執行在多種裝置上,所以iOS上的應用有更好的相容性。

  缺點:1)安卓系統開放,且開發門檻低,所以資源多,開發者多,創新也多。2)安卓系統使用者許可權大,所以操作更靈活,也更加個性化。

windows與macOS應用對比

  開發門檻不同:mac應用開發成本大,windows程式任意開發者均可以免費開發。

  安裝來源不同:windows可以隨意安裝程式,mac的可以通過app平臺或平臺之外,均會驗證證書,質量更高。

  安裝方法不同:windows安裝包進行安裝,mac可以應用商店直接獲取,或者直接複製app到應用程式,或者安裝包安裝。

  應用檔案結構不同,windows除了安裝根目錄,還會寫入登錄檔資訊,通過exe執行檔案啟動。mac的app檔案既是整個應用包,同時是啟動入口。

  解除安裝方式不同:windows通過解除安裝程式,mac直接刪除。

蘋果系統中的安全機制

Apple ID雙重認證

  首次登入一臺新裝置時,除輸入密碼外,還需要在信任裝置上的授權才可以登入。輸入驗證碼後,即確認信任這臺新裝置。由於只輸入密碼不再能夠訪問帳戶,因此雙重認證顯著增強了 Apple ID 以及所有通過 Apple 儲存的個人資訊的安全性。登入成功後,系統將不會再次要求信任裝置的驗證,除非完全退出登入帳戶、抹掉裝置資料或出於安全原因而需要更改密碼。受信任裝置是已使用雙重認證登入的裝置,可以是裝有 iOS 9 及更高版本的 iPhone、iPad 或 iPod touch 或者裝有 OS X El Capitan 及更高版本的 Mac。受信任電話號碼是指可通過簡訊或自動語音電話接收驗證碼的號碼。您必須至少驗證一個受信任電話號碼才能註冊雙重認證。

程式碼簽名

  蘋果也是通過程式碼簽名來保證每一個安裝到iOS上的APP都是經過蘋果官方允許的,防止盜版軟體、病毒入侵、靜默安裝等。蘋果也是通過程式碼簽名來保證每一個安裝到iOS上的APP都是經過蘋果官方允許的,防止盜版軟體、病毒入侵、靜默安裝等。

可信引導

  iOS裝置開機後採用一種稱為可信引導的方式進入系統。引導過程中,安全只讀記憶體 (SecureROM) 是首先被引導的部分,其中嵌入了根證書 (Root Certificate)用以檢查下一步所載入元件的RSA簽名。 在隨後的每個步驟中,系統校驗下一步驟所要載入元件的 RSA 簽名。這一信任鏈 (Chain of Trust) 保證了系統啟動過 程中的所有元件沒有被破壞和修改。

沙盒機制

  沙盒也叫沙箱,英文standbox,其原理是通過重定向技術,把程式生成和修改的檔案定向到自身資料夾中。在沙盒機制下,每個應用程式都有自己的儲存空間,程式之間的資料夾不能互相訪問。iOS系統為了保證系統安全,採用了這種機制。iOS 應用程式在安裝時,會建立屬於自己的沙盒檔案,應用程式不能直接訪問其他應用程式的沙盒檔案,當應用程式需要向外部請求或接收資料時,都需要經過許可權認證,否則,無法獲取到資料。應用程式中所有的非程式碼檔案都儲存在沙盒中,比如圖片、聲音、屬性列表,sqlite資料庫和文字檔案等。

資料加密

  iOS4 及以後的系統使用資料加密機制來保護檔案系 統中的系統和資料分割槽。系統和資料分割槽中的資料將由一 個基於硬體裝置的金鑰進行加密。在 iPhone3GS 以後的設 備上,該金鑰儲存於一個AES加密加速硬體上。這個基 於硬體的金鑰不能被 CPU 所訪問,只有在加解密時才能 由該加速器獲取。通過這種機制,直接從硬碟上被取走的 原始資料就無法被正確解密。同時,資料加密機制還提供 了多種加密策略供應用程式選擇。應用程式可以選擇對一 些敏感檔案使用NSFileProtectionComplete 策略而不是預設 的 NSFileProtectionNone 策略加密資料。

 

  瘋狂肆虐的電腦病毒幾乎都是針對Windows的,由於MAC的架構與Windows不同,沙盒機制、使用人數少、研究成本大、對應用安裝的管控力度,所以很少受到病毒的襲擊。

 

 

 

參考資料

【1】Bucicoiu M, Davi L, Deaconescu R, et al. XiOS: Extended application sandboxing on iOS[C]//Proceedings of the 10th ACM Symposium on Information, Computer and Communications Security. ACM, 2015: 43-54.

【2】Mohamed I, Patel D. Android vs iOS security: A comparative study[C]//2015 12th International Conference on Information Technology-New Generations. IEEE, 2015: 725-730.

【3】Ahmad M S, Musa N E, Nadarajah R, et al. Comparison between android and iOS Operating System in terms of security[C]//2013 8th International Conference on Information Technology in Asia (CITA). IEEE, 2013: 1-4.

【4】安迪. iOS真的是“偽後臺”嗎?[J]. 個人電腦, 2016(2):86-88.

【5】劉樂廷, 李敬兆, LIULe-ting, et al. IOS記憶體開發管理機制的研究[J]. 計算機與現代化, 2013(3):196-199.

【6】陳佳霖, 王軼駿, 薛質. iOS系統資料安全研究[J]. 資訊保安與通訊保密, 2012(8):100-102.

【7】Apple官方開發者賬戶幫助https://help.apple.com/developer-account/?lang=zh-cn#/dev7a05c5ce1

【8】iOS最新應用上架App Store流程https://www.jianshu.com/p/e5ac7b05750a

【9】Apple Developer-App Store 稽核指南https://developer.apple.com/cn/app-store/review/guidelines/#in-app-purchase

【10】windows使用Appuploader上架應用https://www.jianshu.com/p/6f50130b6950

【11】蘋果企業賬號釋出APP詳解https://www.jianshu.com/p/0418f5051185

【12】Provisioning Profile https://www.jianshu.com/p/0affef7cef69

【13】iOS包簽名原理https://www.jianshu.com/p/b7416aef5f5c

【14】Mac App 釋出的最後 1km https://sspai.com/post/4