2

j2objc を使用して、iOS で Java ライブラリをコンパイルして使用しています。私はプロセスに従いました:

  1. http://j2objc.org/docs/Xcode-Build-Rules.html
  2. http://j2objc.org/docs/Required-Link-Flags.html

ヘッダー ファイルをインポートして使用するまで、ビルド エラーは発生しません。

#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"
4

1 に答える 1