更新2018-6-7:
今天準(zhǔn)備從之前的0.13.0
版本升級(jí)到0.18.0
版本念祭。操作流程如下:
下載源碼
源碼整個(gè)替換,刪除之前的,放入新的
更新
遷移源碼變更的類
WXEditComponent
涧黄、WXNavigationDefaultImpl
波丰、WXTextInputComponent
蹬敲、WXGlobalEventModule
里的
/// 不太清楚為啥要注釋掉之前的一些判斷
- (void)fireGlobalEvent:(NSNotification *)notification
{
NSDictionary * userInfo = notification.userInfo;
for (WXModuleKeepAliveCallback callback in _eventCallback[notification.name]) {
callback(userInfo[@"param"], true);
}
}
然后spec文件里版本同步就行了。
那么問(wèn)題來(lái)了
WXJSASTParser這個(gè)文件中的
#include <string>
在執(zhí)行l(wèi)int時(shí)居然報(bào)錯(cuò)莺戒,找不到string.h
文件伴嗡。
處理中...
加入--use-libraries
即可解決
場(chǎng)景:我們用的是WeexSDK版本0.13.0,當(dāng)時(shí)是公司一大神集成到項(xiàng)目里的从铲,方式是本地pod瘪校,可以看到文件結(jié)構(gòu)是這樣的
場(chǎng)景來(lái)了,公司有七八個(gè)項(xiàng)目名段,我們都會(huì)采用這樣的復(fù)制文件夾阱扬,本地pod的方式來(lái)安裝WeexSDK,由于需要根據(jù)項(xiàng)目需求修改源碼伸辟,所以我們會(huì)有七八個(gè)項(xiàng)目同時(shí)進(jìn)行修改不同或者相同地方源碼麻惶,這個(gè)時(shí)候問(wèn)題來(lái)了,這修改如何同步怎么同步信夫,這時(shí)窃蹋,就需要我們引用同一處地方的WeexSDK了,考慮了一下有兩種方式解決:
第一種静稻,把WeexSDK放在公司的gitlab上做成私有pod
第二種警没,把WeexSDK放在公司的gitlab上做成git submodule
由于功力不夠暫只能使用第一種,初步判定第二種方式實(shí)現(xiàn)起來(lái)比第一種方式復(fù)雜振湾。
所以我們就得處理好podspec文件杀迹,那么問(wèn)題來(lái)了,就算去官網(wǎng)0.16.0的版本用
pod lib lint
命令還是不行的恰梢,也許是pod的機(jī)制不一樣吧佛南,官網(wǎng)就是一個(gè)framework的,而我們的場(chǎng)景是需要源碼開(kāi)放修改嵌言,所以只能自己重新弄個(gè)lib
來(lái)加入源碼及資源文件了嗅回。
這里在驗(yàn)證時(shí)老是說(shuō)什么
license
找不到,于是我就從隨便弄了個(gè)放進(jìn)去
然后podspec文件里也沒(méi)做什么大改動(dòng)摧茴,主要是修改了一下源碼 及資源文件的路徑
當(dāng)然還是建議把源碼里的警告那么都修改好绵载。
接著在做weex模塊時(shí)遇到 了,non-modular header inside framework module
苛白,解決方案s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES'}
由于項(xiàng)目使用到了libbz2.tbd
娃豹,所以這個(gè)大坑浪費(fèi)了很多時(shí)間,網(wǎng)上的寫(xiě)法是s.library = 'z'
购裙,找了很久沒(méi)有相關(guān)的懂版,可能是自己理解不夠深入吧,后面終于想明白了躏率,應(yīng)該寫(xiě)成s.library = 'bz2'
,然后還需要注意的是躯畴,我們依賴了自己的私有的WeexSDK民鼓,得有個(gè)依賴 s.dependency 'YourWeexSDK'
,在驗(yàn)證spec時(shí)用的命令是pod spec lint CKKWeekModule.podspec --sources='私有Specs地址類似CocoaPods的 ,https://github.com/CocoaPods/Specs.git' --allow-warnings
蓬抄,接下來(lái)就是如何解耦丰嘉、中間件、往組件化方向發(fā)展了