6月30号这天,阿里团队如约的让weex开源了,好多人都在等待这一天。刚开源,有问题是在所难免的,而我作为一个ios开发的前端小白,从weex开始内测,就成为了一名weex粉丝,自己也做了两个小东西,并参加了weex的workshop比赛。
之前weex刚出来写了篇针对安卓的,由于自己是做ios的,对ios更为熟悉,现在把weex在ios中集成的步骤与一些问题列出来与大家一起分享。
参与到weex中的人,有的是做安卓的、有的是做前端的、有的是做ios的,如果你想把weex ios集成到自己的项目中,首先你要有ios的开发环境(当然做ios的就不用说了),有mac的最为方便,直接下载xcode装上就可以用,没有mac的还要在window电脑上装黑苹果,比较麻烦。
假设ios开发环境你已经有了,这时候为那些不是做ios开发的讲一下管理第三方框架的工具-CocoaPods,在集成weex的时候需要用到。尽管有链接,但在这里我给大家简单介绍一下CocoaPods的简单安装过程:
1,安装gem工具(终端工具的管理包),这时候需要查看ruby源代码gem sources -l ,如果是国外的,需要修改ruby源,如果是官方的需要先移除sudo gem sources -r https://rubygems.org/ ,添加源sudo gem sources -a http://ruby.taobao.org/
2,安装gem用sudo gem install cocoapods
3,当项目中需要使用cocopods来管理第三方框架时,首先需要cd到项目路径,然后执行pod init命令
4,第一次操作使用pod install,安装成功后先退出项目 在使用xcworkspace代开项目
5,如果不是第一次操作 就使用pod update ,如果安装框架的过程中非常慢 可以使用pod install —help查询-no-repo-update然后执行pod install --no-repo-update
现在CocoPods也有了,让我真正进入到集成的环节:
1,在git上把项目克隆下来,最好在桌面先建一个文件夹,克隆到此文件夹内。打开终端,cd到此文件夹,然后执行git clone https://github.com/alibaba/weex.git拉取weex项目。
2,把weex/ios目录下的idk放入到你自己项目的根目录下,在终端cd到你自己的项目下,执行pod install,这时会出现Podfile,打开Podfile,在里面添加
target 'YourTarget' do
platform :ios, '7.0'
pod 'WeexSDK', :path=>'./sdk/'
end
然后再次执行pod install,这时候就好了,也不用手动添加依赖。
3,在Appdelegate.m里先导入如下图的.h文件
然后在didFinishLaunchingWithOptions方法里初始化weex环境
//初始化sdk环境
[WXSDKEngine initSDKEnviroment];
//注册module,是可选的,如果想实现网络请求,页面跳转,图片下载,就必须得实现,给出的官网playground里面已经给实现了这三个,可以直接把extend模块拷贝到自己的项目里
[WXSDKEngine registerComponent:@"MyView" withClass:[MyViewComponent class]];
[WXSDKEngine registerModule:@"event" withClass:[WXEventModule class]];
//注册实现功能的协议
[WXSDKEngine registerHandler:[WXNavigationDefaultImpl new] withProtocol:@protocol(WXNavigationProtocol)]; [WXLog setLogLevel:WXLogLevelVerbose];
其他的可以暂时不用管
4,可以整页或者部分用weex渲染,然后在需要渲染的控制器里面实现下面的方法
#import
- (void)viewDidLoad
{
[super viewDidLoad];
_instance = [[WXSDKInstance alloc] init];
_instance.viewController = self;
_instance.frame = self.view.frame;
[_instance renderWithURL:self.url options:@{@"bundleUrl":[self.url absoluteString]} data:nil];
__weak typeof(self) weakSelf = self;
_instance.onCreate = ^(UIView *view) {
[weakSelf.weexView removeFromSuperview];
[weakSelf.view addSubview:weakSelf.weexView];
};
_instance.onFailed = ^(NSError *error) {
//process failure
};
_instance.renderFinish = ^ (UIView *view) {
//process renderFinish
};
}
其中[_instance renderWithURL:self.url options:@{@"bundleUrl":[self.url absoluteString]} data:nil];可以改为自己写的要渲染的页面,比如
NSString *url = @"http://7xvsjr.com1.z0.glb.clouddn.com/index.js";
self.url = [NSURL URLWithString:url];
我这里的index.js是index.we生成的index.js文件
5,这时候基本差不多了,如果报错刚引入没有添加的东西,可以按照官网的playground添加,还有一点需要指出的是,用Source Code打开info.plist,在里面添加
到这里应该差不多了,可能中间我有遗漏的地方,毕竟集成过了好多天了,我写的这个只是简单的在ios中自己的项目里集成weex ios,一些更为详细的运用后面我还会再写,希望自己可以坚持下去!
网友评论