天天看點

【iOS 開發】內建 Weex 注意事項

撰寫本文時,Weex 還沒有完全開源, 這是官方的文檔中心 這是 Weex 團隊放在 Github 上的一些文章 ,你可以上 官網

申請通路 Weex 的 Github 頁面。

這篇文章介紹一下如何快速內建 Weex 到你的 iOS Project 裡面。

如果你還沒有 Weex 的 SDK,你可以下載下傳一下這個官方給的

WeexSample ,工程裡面有 WeexSDK.framework 這個檔案,這樣如果你慣用 Objective-C 的話,參考 這篇文章 ,你就可以清晰明了地知道這個 Sample 是怎麼寫出來的,但是這篇文章沒有告訴你這些事:

  • 這裡面有兩個檔案 SRWebSocket.h 和 SRWebSocket.m,這是 facebook 的開源項目 SockerRocket ,運作這個項目必須有這個東西(至少暫時是這樣,或許以後 Weex 團隊會嘗試自己搞個類似的東西出來?)
  • 官方目前沒有 Swift 版本的 Sample,這裡有個來自第三方的 示例 ,可以參考一下,這個示例有一點點問題,代碼風格不太 Swifty,問題我寫在下面了,其他諸如 print 寫成 NSLog 這種,無傷大雅,好歹是用 Swift 運作起來了
  • Weex 是用 OC 寫的,Swift 項目內建它,裡面需要橋接檔案,如果你不知道這個是什麼,可以參考我 之前的一篇文章 ,這個檔案裡面隻需要寫這些(不需要 import SRWebSocket):
#import <WeexSDK/WXSDKEngine.h>
#import <WeexSDK/WXSDKInstance.h>
#import <WeexSDK/WXLog.h>
#import <WeexSDK/WXAppConfiguration.h>
           
  • 官方展示的 OC 版本的這段代碼:
- (void)dealloc
{
    [_instance destroyInstance];
}
           

在 Swift 裡面的寫法是:

// Deprecated
//    override func finalize() {
//        instance.destroyInstance()
//    }

deinit {
    instance.destroyInstance()
}
           
  • 雖然官方在很多地方都提到這一點,為了防止還是有人忽略,再寫一遍:請在 Build Settings 的 Other Link Flags 裡面加入 -ObjC
  • 官網開源的代碼中,沒有把 SDK 做成 .framework,而是直接一個檔案夾,工程通過 Pod 來把這個 SDK 內建到項目中,順便也通過 Pod 內建了其他内容,這是 Podfile 裡的内容(可以看到 WeexSDK 是通過本地路徑加進來的):
    source 'https://github.com/CocoaPods/Specs.git'
    platform :ios, '7.0'
    #inhibit_all_warnings!
    
    target 'WeexDemo' do
      pod 'WeexSDK', :path=>'../sdk/'
      pod 'SDWebImage', '3.7.5'
      pod 'SocketRocket', '0.4.2'
      pod 'ATSDK-Weex', '0.0.1'
    end