私の目標は、私が取り組んでいる iPhone プロジェクト用の Google の電話番号処理ライブラリであるlibphonenumberを使用することです。
それをダウンロードした後 (そして何時間もかけて)、ライブラリの C++ バージョンをコンパイルし、いくつかの ".a" ファイルと ".dylib" ファイルを構築しました。それらの C++ 関数。
そこで、「libphonenumber.a」をプロジェクトにインポートし、必要に応じてターゲット、ビルド設定、ビルド フェーズ、およびライブラリ検索パスを更新しました。
デバイス & シミュレーター パス用の xCode プロジェクトをビルドすると、次の警告が表示されます。リンク(armv7)」。(またはシミュレーター用にコンパイルする場合は i386)
このことから、正しい i386 および/または armv7 アーキテクチャ用に libphonenumber をコンパイルする必要があることがわかりました。だから私はそれをやろうとしましたが、libphonenumber が適切にコンパイルされるようにするには、i386/armv7 アーキテクチャ用に、libphonenumber の 3 つの依存ライブラリも再構築する必要があることにすぐに気付きました。結局、私はそれをあきらめました、それは私の前に大きな混乱のように見え始めました.
すべての私の試練の後、私は残っています
3 つの質問:
1) i386/armv6/armv7 アーキテクチャで使用する libphonenumber C++ ライブラリをコンパイルする方法。
2) C++ ライブラリを使用する場合、私の仮定は正しいですか? コンパイルの結果である「.a」ファイルをインポートし、xCode プロジェクト ファイルのヘッダーでそれをポイントするだけですか? c++ ライブラリを含めて使用し、xCode 内の object-c からそれらの関数にアクセスするための手順は正確には何ですか?
3) libphonenumber の目的の c ポートである LPNKit を見つけましたが、不完全です。誰かがそれを聞いたことがありますか?または、libphonenumber の目的の c ポートを持っていて、正しくコンパイルしてインストールする方法についての指示があり、完全に機能している人はいますか?
このライブラリを 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];
結果変数は、フォーマットされた数値を取得します。
私と同じ問題に遭遇した人の助けになることを願っています。