Google Cloud Endpoints链接iOS客户端问题
这个问题是由于我没有完全理解iOS中的静态库,而谷歌的文档似乎有点稀疏。
我正尝试将Google Cloud Endpoints用于我的移动后端。
我为我的客户端库生成.m和.h文件。 然后我创build了一个新项目(OwnItApi),将libGTLTouchStaticLib.a静态库从GTL.proj拖到这个新项目中。 然后将生成的文件.m和.h文件添加到此项目中。 我将所有的.m文件添加到编译源,然后我头文件复制文件。 在“生成设置”中,我将“-ObjC -all_load”添加到“其他链接器标志”项目中。
更新:我忘了提及,我也从GTL.proj复制到OwnItAPI项目的头。 这些包括文件GTLBase64.h,GTLBatchQuery.h,GTLBatchResult,H等。我想我必须这样做,因为没有他们的构build失败。
没有标题,我得到:“GTLObject.h”文件找不到“。 在import声明。
然后,我从这个项目生成的静态库,并将其添加到我的主目标是iPhone应用程序的项目。 为了testing这个API是否工作,我把它添加到了App Delegate中
#import "OwnItApi/GTLServiceOwnit.h" #import "OwnItApi/GTLQueryOwnit.h" #import "OwnItApi/GTLOwnitApiBrands.h"
这是在应用程序中:didFinishLaunchingWithOptions:函数
static GTLServiceOwnit *service = nil; if (!service) { service = [[GTLServiceOwnit alloc] init]; service.retryEnabled = YES; [GTMHTTPFetcher setLoggingEnabled:YES]; } GTLQueryOwnit *query = [GTLQueryOwnit queryForBrandsListWithUserID:@"venkat"]; [service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, GTLOwnitApiBrands *object, NSError *error) { NSArray *items = [object brands];; NSLog(@"%@", items); }];
当我编译我得到像这样的重复错误:
duplicate symbol _OBJC_METACLASS_$_GTLOwnitApiBrand in: /Users/vrao/Library/Developer/Xcode/DerivedData/Own_It!-ertvnctptaddricdrjyrmgemzgsh/Build/Products/Release-iphoneos/libOwnItApi.a(GTLOwnit_Sources.o)
看起来就像那样的17个错误。 然后终于
clang: error: linker command failed with exit code 1 (use -v to see invocation)
更新:在GTL项目中,我build立它后,libGTLTouchStaticLib.a是红色的,当我右键单击它“显示在Finder中”是灰色的。 要find.a文件,我使用“Show in Finder”查找“GTL.framework”,然后返回一个文件夹来查找libGTLTouchStaticLib.a。
我相信你看到了你看到的问题,因为你还包括GTLOwnit_Sources.m
文件。 您可以从包含的文件列表中省略。