<dfn id="bh0bl"></dfn>
  • <span id="bh0bl"><wbr id="bh0bl"><del id="bh0bl"></del></wbr></span>

      1. <u id="bh0bl"><wbr id="bh0bl"></wbr></u><span id="bh0bl"></span>
            全國服務熱線:400-660-5510
            首頁 > IOS開發>iOS 9 App Thinning
            11 2017 April

            iOS 9 App Thinning

            發布日期:2017-04-11
            瀏覽數: 9678
                    App Thinning 是蘋果在去年 WWDC, 也就是 iOS 9 中推出的為 App 瘦身的一個新的技術。 App Thinning 主要分為 3 個部分:
                    * App Slicing
                    * Bitcode

                    * On Demand Resources

                    App Slicing
                    我們正常的應用中都會用到圖片資源,為了適配 iPhone 6 Plus 以及 iPhone 6, 圖片資源需要包含 @2x 的圖片 和 @3x 的圖片,而 Slicing 就是在這一步進行優化,Slicing 會根據用戶在 App Store 下載的不同設備選擇對應的資源。例如:當用戶使用 iPhone 6 在 App Store 上下載 App 的時候,App Store 只會給予他 @2x 的圖片,而不會像以前一樣,不管三七二十一我把所有的資源都給你,根據蘋果的描述,這大約能節約你 30% 到 50% 的大小。而你要做的事情,僅僅是使用 Xcode 7 IDE, 并且使用其中的 Assert Catalog 管理你的資源文件。
            不過 Slicing 因為 iCloud 備份的問題, 知道 iOS 9.0.2 以及 Xcode 7.0.1 才可以被使用
                    Bitcode
                    Bitcode 是蘋果在你 App 被下載之前做的另外一件優化。Bitcode 是你的代碼編譯為最終可執行文件的中間的一層,當你的 App 以 Bitcode 的形式提交到 iTunes Connect 的時候,iTunes Connect 會自動為合適的機器編譯出對應的代碼,例如:對于 64 位機器的 iPhone 6 或者 iPad Air 2,Bitcode 會為其編譯出適合 64 位機器可執行文件。
                    對于 iOS app 來說, Bitcode 不是必須的,但 Bitcode 編譯選項為 Yes(這里應該只是一個過渡期,有些第三方庫如果不在繼續維護了需要盡快換掉), 對于 tvOS 和 watchOS 的 app,Bitcode 的的選項必須為 Yes。
                    On Demand Resources
                    最后一個 App Thinnig 步驟是 On Demand Resources, On Demand Resources 在游戲的制作中比較常見,主要為了一些沒用的資源在用到了才會去下載,比如,當我們設計一個游戲有 3 個關卡的時候,第一關的資源在 App 被下載的時候就已經下載好了,但是,出于對 App 大小的考慮,此時,第二關的資源是不需要下載的, 可以等到第一關結束以后,或者第一關進行到一半的時候后臺進行下載。
                    On Demand Resources 中的資源包括了 圖片,音效等等, 下面是一個 On Demand Resources 的 Demo, 語言的話,我們選用 Swift.
                    Demo 是這樣的: 首頁只有一個 Button,默認情況下 Assets 里面的圖片 Group 沒有被下載, 當點擊 Button 以后,會先去看 Group 時候已經存儲下載完畢, 如果沒有下載,則會去觸發一個下載請求,下載完成后,把圖片顯示到居中的位置。

                    @IBAction func downloadBarButtonItemTouchUpInside(sender: UIButton) {
                    let tags = NSSet(array: ["Group"])
                    self.resourceRequest = NSBundleResourceRequest(tags: tags as! Set)
                    self.resourceRequest?.conditionallyBeginAccessingResourcesWithCompletionHandler() {
                    resourceAvailable in
                    if resourceAvailable {
                    dispatch_async(dispatch_get_main_queue()) {
                    self.imageView.image = UIImage(named: "Group")
                    }
                    } else {
                    self.resourceRequest?.beginAccessingResourcesWithCompletionHandler() {
                    error in
                    if error == nil {
                    dispatch_async(dispatch_get_main_queue()) {
                    self.imageView.image = UIImage(named: "Group")
                    }
                    } else {
                    print(error)
                    }
                    }
                    }
                    }

                    }

                    另外,我們可以通過 Xcode 中的 Disk 來查看 On Demand Resources 的情況



            ?
             
             
            91游泳美女教练啪啪自拍视频|亚洲性爱 桃色 第一页|久久午夜无码免费人妻艳妇|国产精品久久久久久久久久鸭