作为一个纯原生开发的小白,最近项目需要对接apicloud,遇到了诸多小白级的问题,在这赘述一番,大佬勿喷.
先在平台注册账号,然后就可以创建项目,选择项目所需的模块,就可以云编译出相对应的sdk,后再SuperWebview中调用,详细见开发指南
原生与apicloud建立连接
#import "AppDelegate.h"
#import "APIManager.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
APIConfiguration *configuration = [[APIConfiguration alloc] init];
[[APIManager sharedManager] initSDKWithLaunchOptions:launchOptions configuration:configuration];
return YES;
}
初始化方法
NSString *url = @"widget://html/start.html";
NSString *name = @"start";
APIWindowContainer *windowContainer = [APIWindowContainer windowContainerWithAttribute:@{@"url":url, @"name":name} widget:nil];
[windowContainer startLoad];
[self.navigationController pushViewController:windowContainer animated:YES];
问题1
导入三方SDK.framework之后,启动崩溃之后如下:

在正常导入framework之后,做如下操作:

问题2
在一个IOS项目中,使用superWebview,集成两套widget引发的问题:
在一个项目中,使用superwebview的方式,集成了两套widget,并命名为,widget和widget1;通过配置解析路径的方式,使原生界面的两个按钮,分别指向、打开这两个widget。初始化似乎只能初始化名为widget的那个,后找到相关解释用以下方法解决:
初始化页面的时候都可以指定widget
+ (instancetype)windowContainerWithAttribute: (NSDictionary *)attribute widget: (UZWidget *)widget
那么问题又来了,UZWidget
该如何初始化呢?遂继续寻找到:
/*!
通过指定config.xml文件来创建一个widget对象
@param path config.xml文件的绝对路径
@return 返回一个widget对象
*/
- (id)initWithConfigPath:(NSString *)path;
没太明白,只得放弃,改用另一种解决方式:把另一个项目的widget1放到widget目录内部,通过路径指向widget即可:
NSString *url = @"widget://widget1/index.html";
NSString *name = @"index";
APIWindowContainer *windowContainer = [APIWindowContainer windowContainerWithAttribute:@{@"url":url, @"name":name} widget:nil];
[windowContainer startLoad];
[self.navigationController pushViewController:windowContainer animated:YES];
问题3 在官方文档中介绍了3.1.2 工程设置:
找到项目工程的TARGETS -> Build Phases -> Link Binary With Libraries,添加SDK用到的必需的库WebKit.framework、libz.tbd、libicucore.tbd。若使用了模块可能还需要额外添加一些相应的库。
那么问题是使用了模块需要添加哪些相应的库如何得知呢?,现在还是蒙圈的,有路过的大佬求解释一下,我临时是做如下解决:

大部分是链接相关的错误,是跟C++相关的,不知道之前为什么可以,于是尝试添加c++相关的库

然后错误减少,继续寻找:
Undefined symbols for architecture x86_64:
“_res_9_setservers”, referenced from:
_setup_dns_server in QNResolvUtil.o
“_res_9_ninit”, referenced from:
+[QNResolver systemDnsServer] in QNResolver.o
_setup_dns_server in QNResolvUtil.o
“_res_9_getservers”, referenced from:
+[QNResolver systemDnsServer] in QNResolver.o
“_res_9_ns_parserr”, referenced from:
_query_ip_v4 in QNResolver.o
_query_ip in QNTxtResolver.o
“_res_9_ns_name_uncompress”, referenced from:
_query_ip_v4 in QNResolver.o
“_res_9_nquery”, referenced from:
_query_ip_v4 in QNResolver.o
_query_ip in QNTxtResolver.o
“_res_9_ns_initparse”, referenced from:
_query_ip_v4 in QNResolver.o
_query_ip in QNTxtResolver.o
“_res_9_ndestroy”, referenced from:
_query_ip_v4 in QNResolver.o
+[QNResolver systemDnsServer] in QNResolver.o
_query_ip in QNTxtResolver.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个错导入 libresolv.9.tbd 解决
Undefined symbols for architecture x86_64:
“_crc32”, referenced from:
+[QNCrc32 data:] in QNCrc32.o
+[QNCrc32 file:error:] in QNCrc32.o
-[MarvellSmartConfig xmitterTask:password:] in MarvellSmartConfig.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个错导入 libz.tbd 解决
Undefined symbols for architecture x86_64:
“_utf8_nextCharSafeBody”, referenced from:
_validate_dispatch_data_partial_string in SRWebSocket.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
这个错导入 libicucore.tbd 解决
网友评论