<ruby id="fvjdb"></ruby>

      <ol id="fvjdb"><th id="fvjdb"><p id="fvjdb"></p></th></ol>

      <ol id="fvjdb"><th id="fvjdb"><p id="fvjdb"></p></th></ol>

          <ruby id="fvjdb"><th id="fvjdb"></th></ruby>
          <form id="fvjdb"></form>

                  全國服務熱線:400-660-5510
                  首頁 > IOS開發>iOS 9 App Thinning
                  11 2017 April

                  iOS 9 App Thinning

                  發布日期:2017-04-11
                  瀏覽數: 9479
                          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 的情況



                  ?
                   
                   
                  av福利在线导航,av高清乱伦毛片群,av高清美腿丝袜毛片,av高清无码区

                    <ruby id="fvjdb"></ruby>

                      <ol id="fvjdb"><th id="fvjdb"><p id="fvjdb"></p></th></ol>

                      <ol id="fvjdb"><th id="fvjdb"><p id="fvjdb"></p></th></ol>

                          <ruby id="fvjdb"><th id="fvjdb"></th></ruby>
                          <form id="fvjdb"></form>