【问题标题】:Cyclic dependency error J2OBJC archive build?循环依赖错误 J2OBJC 归档构建?
【发布时间】:2020-03-27 04:40:38
【问题描述】:

我的 Ionic/iOS 项目使用 J2OBJC 作为内置的内部 Xcode 设置时遇到循环依赖问题。

我已经按照 J2OBJC 文档中的说明在我的 ionic 项目中设置了构建规则和设置。我已经根据需要添加了库、用户标题和框架搜索路径(首先只有应用程序目标,并且还尝试了应用程序目标和工作区)并创建了用户定义的 $J2OBJC_HOME 和(这可能不是要求的一部分)我也添加了一个 $PROJECT_DIR 。我还添加了 java 构建规则

"如果 [ ! -f "${J2OBJC_HOME}/j2objc" ]; 然后回显 "J2OBJC_HOME 不是 在 Settings.xcconfig 中正确定义,当前设置为 '${J2OBJC_HOME}'"; 退出 1; fi; "${J2OBJC_HOME}/j2objc" -d ${DERIVED_FILE_DIR} -sourcepath "${PROJECT_DIR}/App" --no-package-directories -use-arc --prefix Flowers=JOE -g ${INPUT_FILE_PATH};"

我已经构建了模拟器和 iPhone 并在两者上运行它们,它们似乎正在工作。但是,当我为项目存档(以便我可以创建 .ipa)时。我得到一个循环依赖错误。我尝试了很多事情,例如,项目的新开始,使用不同的 URL 作为搜索路径,使用递归和非递归,检查了几次文档,查看了论坛,但仍然没有解决方案。任何想法将不胜感激!

【问题讨论】:

  • 什么是循环依赖错误描述? Xcode 很少报告错误而不描述它们到底是什么。
  • 您好,谢谢您的回复。它表示它无法导入从我的 .m 文件导入的模块 CoreFoundation 和 Foundation

标签: ios xcode j2objc cyclic-dependency


【解决方案1】:

我遇到这个循环依赖问题已经一个半月了。我几乎尝试了所有方法。
我到处找了.. 得到了汤姆鲍尔的 2 条回复。当涉及到使用该工具从 java 转换为 Objc 的大型项目时,xcode 将无法识别所创建的子目录。我发现最好的解决方法是使用 bash 创建自己的脚本。我做了一些研究并想出了如何递归地查找所有 java 文件并将 j2objc 脚本应用于它们,它将在同一目录布局中输出所有 Objc 文件。 (为您保留一个漂亮的布局,而不是像 Xcode 上的 j2objc 脚本规则那样凌乱的文件夹)。

我的build.sh文件如下,随意复制-

!/bin/bash

清理 Objective C 文件夹

rm -rf /ObjC_Output

移入 Java 文件夹

cd Java

运行 j2objc 并将所有内容输出到 ObjC

j2objc -d ../ObjC_Output $(find .-name "*.java")

跳出Java文件夹

cd ..

删除以前的组织

rm -rf /Users/me/Projects/project-name/mobile-app-front-end/app/ios/app/app/org

cd 到 ObjC_Output

将新的 ObjC 项目文件复制到 XCode 项目中。

cp -R ./ObjC_Output/* /Users/me/Projects/project-name/mobile-app-front-end/app/ios/app/app/org

我会自动将我的所有文件复制回我的 Xcode 项目。您可以随意进行。也不要忘记将 j2objc 添加到您的路径中。并在终端中运行您的脚本 ./builder.sh ..

此外,为了让 Xcode 识别您的 objC 项目文件夹,您必须添加 Xcode 项目的顶级目录并使其递归。

在这种情况下,您不需要在 Xcode 中包含 j2objc 脚本。只要确保您像往常一样包含所有默认链接器路径、库搜索路径和用户标题搜索路径(显示在 j2objc 文档中)。

我不得不为这个解决方案拔掉头发。所以如果需要,请随时寻求帮助。

【讨论】:

    【解决方案2】:

    Xcode 不能再在 Header Search Paths 和 User Header Search Paths 中处理相同的标题搜索路径。您可能在这两个中都有“$(J2OBJC_HOME)/include”。因此,将其从 Header Search Paths 中删除并保留在 User Header Search Paths 中。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2019-02-21
    • 2021-10-12
    相关资源
    最近更新 更多