主頁 >  其他 > 蘋果系統iOS、macOS應用管理機制

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

2020-09-20 07:01:42 其他

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/40269

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/86879.html

標籤:其他

上一篇:【人類觀察所】"當代人"正經歷的生活

下一篇:hadoop之HDFS核心類Filesystem的使用

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more