Моя цель - использовать libphonenumber , библиотеку Google для обработки телефонных номеров для проекта iPhone, над которым я работаю.
После загрузки (и много-много часов) я выполнилC ++ версия библиотеки, и она построила несколько файлов «.a» и «.dylib», которые, как я предполагал, я должен импортировать в свой xCodeProject, чтобы получить доступ к этим функциям C ++.
Таким образом, я импортировал «libphonenumber.a» в свой проект, обновил цель, настройки сборки, фазы сборки и пути поиска в библиотеке по мере необходимости.
Сборка проекта xCode для прохода Device & Simulator, однако выдает мне следующее предупреждение: "ld: warning: игнорирование файла ../XcodeProjects/libphonenumber/build/libphonenumber.dylib, файл создан для неподдерживаемого формата файлакоторая не является связываемой архитектурой (armv7) ".(или i386 при компиляции для симулятора)
Из этого я понимаю, что должен скомпилировать число libphonenumber для правильной архитектуры i386 и / или armv7.Поэтому я попытался сделать это, но быстро понял, что для этого нужно также перестроить 3 зависимые библиотеки libphonenumber для архитектур i386 / armv7, чтобы теперь libphonenumber мог правильно компилироваться.В конце концов, я отказался от этого, это начало казаться большим беспорядком передо мной.
После всех моих испытаний у меня осталось
3 Вопросы:
1) Как мне скомпилировать библиотеку libphonenumber C ++ для использования с архитектурами i386 / armv6 / armv7.
2) Верно ли мое предположение при использовании библиотеки c ++?Нужно ли просто импортировать файл «.a», полученный в результате компиляции, и просто указать на него в заголовке файлов моего проекта xCode?Каковы точные шаги для включения и использования библиотек c ++ и доступа к их функциям из target-c внутри xCode?
3) Я нашел LPNKit , порт target-c для libphonenumber, однако он неполный.Кто-нибудь слышал об этом, и повезло, используя его?Или у кого-нибудь есть целевой порт c для libphonenumber, который работает, с инструкциями о том, как правильно скомпилировать и установить его?
Любая помощь или совет о том, как заставить эту библиотеку работать на iOS, была бы очень полезной.приветствуется.
Обновление:
В итоге я использовал версию 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];
Переменная результата возвращает мне отформатированное число.
Надеюсь, это поможет любому, кто столкнулся с той же проблемой, что и я.