WeexSDK及项目里Weex模块做成私有库

更新2018-6-7:
今天准备从之前的0.13.0版本升级到0.18.0版本。操作流程如下:
下载源码

WeexSDK及项目里Weex模块做成私有库_第1张图片
image.png

源码整个替换,删除之前的,放入新的
WeexSDK及项目里Weex模块做成私有库_第2张图片
image.png

更新
WeexSDK及项目里Weex模块做成私有库_第3张图片
image.png

迁移源码变更的类
WXEditComponentWXNavigationDefaultImplWXTextInputComponentWXGlobalEventModule里的

/// 不太清楚为啥要注释掉之前的一些判断
- (void)fireGlobalEvent:(NSNotification *)notification
{
    NSDictionary * userInfo = notification.userInfo;

        for (WXModuleKeepAliveCallback callback in _eventCallback[notification.name]) {
            callback(userInfo[@"param"], true);
        }

}

然后spec文件里版本同步就行了。
那么问题来了
WXJSASTParser这个文件中的
#include 在执行lint时居然报错,找不到string.h文件。
处理中...
加入--use-libraries即可解决

场景:我们用的是WeexSDK版本0.13.0,当时是公司一大神集成到项目里的,方式是本地pod,可以看到文件结构是这样的

WeexSDK及项目里Weex模块做成私有库_第4张图片
image.png

WeexSDK及项目里Weex模块做成私有库_第5张图片
image.png

场景来了,公司有七八个项目,我们都会采用这样的复制文件夹,本地pod的方式来安装WeexSDK,由于需要根据项目需求修改源码,所以我们会有七八个项目同时进行修改不同或者相同地方源码,这个时候问题来了,这修改如何同步怎么同步,这时,就需要我们引用同一处地方的WeexSDK了,考虑了一下有两种方式解决:
第一种,把WeexSDK放在公司的gitlab上做成私有pod
第二种,把WeexSDK放在公司的gitlab上做成git submodule
由于功力不够暂只能使用第一种,初步判定第二种方式实现起来比第一种方式复杂。
所以我们就得处理好podspec文件,那么问题来了,就算去官网0.16.0的版本用 pod lib lint命令还是不行的,也许是pod的机制不一样吧,官网就是一个framework的,而我们的场景是需要源码开放修改,所以只能自己重新弄个 lib来加入源码及资源文件了。

WeexSDK及项目里Weex模块做成私有库_第6张图片
image.png

WeexSDK及项目里Weex模块做成私有库_第7张图片
image.png

这里在验证时老是说什么 license找不到,于是我就从随便弄了个放进去

WeexSDK及项目里Weex模块做成私有库_第8张图片
image.png

然后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,接下来就是如何解耦、中间件、往组件化方向发展了

你可能感兴趣的:(WeexSDK及项目里Weex模块做成私有库)