Эта проблема возникает из-за того, что я не полностью понимаю статические библиотеки в iOS, а документы из Google кажутся немного разреженными.Google Cloud Endpoints связывает проблемы с iOS-клиентами
Я пытаюсь использовать конечные точки Google для моего мобильного бэкэнда.
Я создаю файлы .m и .h для своей клиентской библиотеки. Затем я создал новый проект (OwnItApi), перетащил старую библиотеку libGTLTouchStaticLib.a из GTL.proj в этот новый проект. Затем я добавляю сгенерированные файлы .m и .h файлов в этот проект. Я добавляю все файлы .m в источники компиляции, а затем файлы заголовков «Копировать файлы». В настройках сборки я добавляю «-ObjC -all_load» в элемент «Другие флажки компоновщика».
Обновление: Я забыл упомянуть, что я также скопировал заголовки из GTL.proj в проект OwnItAPI. К ним относятся файлы GTLBase64.h, GTLBatchQuery.h, GTLBatchResult, h и т. Д. Я думаю, что мне пришлось это делать, потому что сборка была без них.
Без заголовков я получаю: ошибка «« GTLObject.h'file не найден ». в заявлении на импорт.
Затем я беру статическую библиотеку, сгенерированную из этого проекта, и добавляю ее в свой основной проект, целью которого является приложение для iphone. Для того, чтобы проверить, если API работает, я добавил это в App Делегат
#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)
Update: В проекте GTL, libGTLTouchStaticLib.a красный после того как я построить его, и когда я правой кнопкой мыши его «Показать в Finder» неактивна. Чтобы найти файл .a, я использую «Show in Finder» для «GTL.framework», а затем верните папку, чтобы найти libGTLTouchStaticLib.a.
Можете ли вы перечислить весь набор файлов, добавленных в проект? –
@DanHolevoet спасибо за ответ. Я добавил свой проект в github, здесь: https://github.com/vrao423/OwnItAPI. Я также отредактирую свой первоначальный ответ. –