j2objc を使用して、iOS で Java ライブラリをコンパイルして使用しています。私はプロセスに従いました:
ヘッダー ファイルをインポートして使用するまで、ビルド エラーは発生しません。
#import "org/library/Class.h"
ファイルが見つかりません。私は何が欠けていますか?
一方、手動で翻訳されたライブラリ ファイルを使用しようとしました (ターミナル j2objc コマンドを使用)。.h ファイルと .m ファイルを j2objc-dist/include フォルダーに入れると、それらはエディターによって認識され、コンパイル エラーなしでクラスを使用できます。しかし、プロジェクトをビルドしようとすると、タイプ _OBJ_CLASS_$_Java のエラーが見つかります。Xcode のコンパイル リストにファイルを含めようとし、libjre_emul.a のパスを確認しましたが、それでもエラーが発生します。
私のライブラリにはパッケージが含まれているため、ツリー内に複数のフォルダーがあります。私の好みは、最初の方法 (元の Java ソース) を使用することです。
Java ソースの場合のデータ:
- 構築ルール:
Java ソース ファイル カスタム スクリプト:
/Users/xgibert/Desktop/Orekit_iOS/j2objc-dist/j2objc -d ${DERIVED_FILES_DIR} -sourcepath ${PROJECT_DIR}/src/ ** \ --no-package-directories ${INPUT_FILE_PATH};
出力ファイル:
${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.h
${DERIVED_FILES_DIR}/${INPUT_FILE_BASE}.m
- ビルド フェーズ
バイナリをライブラリにリンク:
libicucore.dylib
Security.framework
libz.dylib
- ビルド設定
リンク - その他のリンカー フラグ:
-ljre_emul -L /Users/xgibert/Desktop/Orekit_iOS/j2objc-dist/lib -force_load /Users/xgibert/Desktop/Orekit_iOS/j2objc-dist/lib/libjre_emul.a -l jre_emul -ObjC
検索パス - ライブラリ検索パス:
/Users/xgibert/Desktop/Orekit_iOS/j2objc-dist/lib
検索パス - ユーザー ヘッダーの検索パス:
/Users/xgibert/Desktop/Orekit_iOS/j2objc-dist/include
私の Java ライブラリ ファイルは Project_root/src にあります。ツリーは次のようになります。
root/
src/
org/
orekit/
data/
time/
...
apache/
...
ViewController.m ファイルで、次の行をインポートしようとしましたが、成功しませんでした (ファイルが見つかりません)。
#import "org/orekit/data/DataProvidersManager.h"