Моя цель - использовать libphonenumber, библиотеку обработки номеров телефона Google для проекта iPhone, над которым я работаю.
После загрузки (и много часов) я выполнил версию библиотеки на С++ и создал несколько файлов ".a" и ".dylib", из которых я предположил, что должен импортировать в свой xCodeProject в чтобы получить доступ к этим функциям С++.
Итак, я импортировал "libphonenumber.a" в свой проект, обновлял параметры своей цели, сборки, фазы сборки и пути поиска библиотеки по мере необходимости.
Построение проекта xCode для прохода устройства и симулятора, однако дайте мне следующее предупреждение: "ld: warning: игнорирование файла.. /XcodeProjects/libphonenumber/build/libphonenumber.dylib, файл был создан для неподдерживаемого формата файла, который не связан с архитектурой (armv7)". (или i386 при компиляции для симулятора)
Я понимаю, что я должен скомпилировать libphonenumber для правильной архитектуры i386 и/или armv7. Поэтому я попытался это сделать, но быстро понял, что это требует от меня также перестроить библиотеки зависимых библиотек libphonenumber 3, для архитектур i386/armv7, чтобы libphonenumber теперь правильно компилировался. В конце концов, я отказался от этого, он стал выглядеть большим беспорядком впереди меня.
После всех моих испытаний я остался с
3 Вопросы:
1) Как скомпилировать библиотеку libphonenumber С++ для использования с архитектурами i386/armv6/armv7.
2) При использовании библиотеки С++ мое предположение верно? Это вопрос простого импорта файла ".a", который является результатом компиляции, и просто указать на него в заголовке моих файлов проекта xCode? Какие именно шаги для включения и использования библиотек С++ и доступа к их функциям из objective-c внутри xCode?
3) Я нашел LPNKit, порт objective-c для libphonenumber, однако он неполный. Кто-нибудь слышал об этом, и ему повезло? Или у кого-нибудь есть порт objective-c для libphonenumber, который завершен, работает, с инструкциями по его компиляции и установке?
Любая помощь или советы о том, как получить эту библиотеку, работающую на iOS, будут с благодарностью.
Update:
В итоге я использовал версию libphonenumber javascript, добавив все файлы в свой пакет, включая все упомянутые библиотеки javascript, и используя UIWebview и stringByEvaluatingJavaScriptFromString для запуска функций. У вас также может быть ссылка UIWebview на javascript-библиотеку в Интернете (я просто предпочел, чтобы все было локально, а не зависало от интернет-соединения).
Вот пример того, что я сделал:
webView_ = [[UIWebView alloc] init];
[webView_ loadHTMLString:
@"<script src='base.js'></script>"
"<script>"
"goog.require('goog.dom');"
"goog.require('goog.json');"
"goog.require('goog.proto2.ObjectSerializer');"
"goog.require('goog.string.StringBuffer');"
"</script>"
"<script src=\"phonemetadata.pb.js\"></script>"
"<script src=\"phonenumber.pb.js\"></script>"
"<script src=\"metadata.js\"></script>"
"<script src=\"phonenumberutil.js\"></script>"
"<script src=\"asyoutypeformatter.js\"></script>"
"<script src=\"normalize.js\"></script>"
baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];
NSString *function = [[NSString alloc] initWithFormat: @"phoneNumberParser('%@','%@','')", phoneNumber, ISOCountryCode];
NSLog(@"function is: %@", function);
NSString *result =[webView_ stringByEvaluatingJavaScriptFromString:function];
Переменная результата получает отформатированное число.
Я надеюсь, что это поможет любому, кто столкнулся с той же проблемой, что и я.