我的目标是将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/

10-11 00:41