我的目标是将libphonenumber(谷歌的电话号码处理库)用于我正在研究的iPhone项目。
下载它(和许多小时)后,我编译了该库的C++版本,并建立了许多“.a”文件和“.dylib”文件,我假设必须导入其中的文件才能访问该文件。这些C++函数。
因此,我将“libphonenumber.a”导入到我的项目中,根据需要更新了目标,build设置,构建阶段和“库搜索路径”。
为Device&Simulator pass构建xCode项目,但是给我以下警告:
“ld:警告:忽略文件../XcodeProjects/libphonenumber/build/libphonenumber.dylib,该文件是为不受支持的文件格式(不是要链接的体系结构(armv7))构建的。” (或为模拟器编译时为i386)
从中我了解到,必须为正确的i386和/或armv7体系结构编译libphonenumber。因此,我尝试这样做,但是很快意识到这需要我也为i386/armv7架构重建libphonenumber的3个依赖库,以便现在可以正确编译libphonenumber。最终,我放弃了这一点,它看起来像是摆在我面前的一大堆烂摊子。
经过所有的考验,我留下了
3个问题:
1)如何编译用于i386/armv6/armv7体系结构的libphonenumber C++库。
2)使用c++库时,我的假设正确吗?只是简单地导入由编译产生的“.a”文件,然后将其指向我的xCode项目文件的标题中就可以了吗?包含和使用c++库以及从xCode中的Objective-c访问它们的函数的确切步骤是什么?
3)我确实找到了LPNKit,它是libphonenumber的Objective-C端口,但是它不完整。有没有人听说过它,并且有运气吗?还是有人为libphonenumber提供了一个可以正常工作的Objective-C端口,其中包含有关如何正确编译和安装它的说明?
任何有关如何使该库在iOS上运行的帮助或建议,将不胜感激。
更新:
我最终使用了libphonenumber的javascript版本,将所有文件(包括所有引用的javascript库)添加到了包中,并使用UIWebview和stringByEvaluatingJavaScriptFromString来运行函数。您也可以让UIWebview在线引用javascript库(我只是更喜欢将所有内容都本地化,以免依赖Internet连接)。
这是我所做的示例:
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];
结果变量让我得到格式化的数字。
我希望这对遇到我同样问题的人有所帮助。
最佳答案
它已由我们的团队移植。
你可以找到它https://github.com/me2day/libPhoneNumber-iOS
关于iphone - iOS或Objective-C端口的libphonenumber,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9078304/