j2objc Xcode 构建规则,不识别导入

j2objc Xcode build rules, not recognizing imports

我正在使用 j2objc 编译和使用 iOS 中的 java 库。我遵循了流程:

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

在我开始导入 header 文件以使用它们之前,我没有收到任何构建错误:

#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

Link 带库的二进制文件:

libicucore.dylib
Security.framework
libz.dylib

Linking - 其他 Linker 标志:

-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

搜索路径 - 用户 Header搜索路径:

/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"

Xcode 假定所有源都在顶级目录中,因此您描述的导入失败。如 Xcode-Build-Rules 页面所述,需要 --no-package-directories 标志,因为它将所有生成的文件输出到没有子目录的指定构建目录,并生成正确的 #import 指令。

演示包含 Java 源和包的示例项目是 j2objc-sample-reversi. Its UI sucks (I wrote it, sigh), but the game engine is decent; if you need a tougher opponent, crank up the engine strength here