更新2018-6-7:
今天准备从之前的0.13.0
版本升级到0.18.0
版本。操作流程如下:
下载源码
源码整个替换,删除之前的,放入新的
更新
迁移源码变更的类
WXEditComponent
、WXNavigationDefaultImpl
、WXTextInputComponent
、WXGlobalEventModule
里的
/// 不太清楚为啥要注释掉之前的一些判断
- (void)fireGlobalEvent:(NSNotification *)notification
{
NSDictionary * userInfo = notification.userInfo;
for (WXModuleKeepAliveCallback callback in _eventCallback[notification.name]) {
callback(userInfo[@"param"], true);
}
}
然后spec文件里版本同步就行了。
那么问题来了
WXJSASTParser这个文件中的
#include <string>
在执行lint时居然报错,找不到string.h
文件。
处理中...
加入--use-libraries
即可解决
场景:我们用的是WeexSDK版本0.13.0,当时是公司一大神集成到项目里的,方式是本地pod,可以看到文件结构是这样的
场景来了,公司有七八个项目,我们都会采用这样的复制文件夹,本地pod的方式来安装WeexSDK,由于需要根据项目需求修改源码,所以我们会有七八个项目同时进行修改不同或者相同地方源码,这个时候问题来了,这修改如何同步怎么同步,这时,就需要我们引用同一处地方的WeexSDK了,考虑了一下有两种方式解决:
第一种,把WeexSDK放在公司的gitlab上做成私有pod
第二种,把WeexSDK放在公司的gitlab上做成git submodule
由于功力不够暂只能使用第一种,初步判定第二种方式实现起来比第一种方式复杂。
所以我们就得处理好podspec文件,那么问题来了,就算去官网0.16.0的版本用
pod lib lint
命令还是不行的,也许是pod的机制不一样吧,官网就是一个framework的,而我们的场景是需要源码开放修改,所以只能自己重新弄个lib
来加入源码及资源文件了。
这里在验证时老是说什么
license
找不到,于是我就从随便弄了个放进去
然后podspec文件里也没做什么大改动,主要是修改了一下源码 及资源文件的路径
当然还是建议把源码里的警告那么都修改好。
接着在做weex模块时遇到 了,non-modular header inside framework module
,解决方案s.user_target_xcconfig = { 'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES'}
由于项目使用到了libbz2.tbd
,所以这个大坑浪费了很多时间,网上的写法是s.library = 'z'
,找了很久没有相关的,可能是自己理解不够深入吧,后面终于想明白了,应该写成s.library = 'bz2'
,然后还需要注意的是,我们依赖了自己的私有的WeexSDK,得有个依赖 s.dependency 'YourWeexSDK'
,在验证spec时用的命令是pod spec lint CKKWeekModule.podspec --sources='私有Specs地址类似CocoaPods的 ,https://github.com/CocoaPods/Specs.git' --allow-warnings
,接下来就是如何解耦、中间件、往组件化方向发展了