使用J2OBJC作为内置的内部Xcode设置,我的Ionic/iOS项目存在循环依赖性问题。
我在离子项目中设置了构建规则和设置,如J2OBJC文档中所述。我已经根据需要添加了库、用户头和框架搜索路径(首先只添加了应用程序目标,并同时尝试了应用程序目标和工作区),并创建了用户定义的$J2OBJC_HOME,并且(这可能不是需求的一部分)我也添加了一个$PROJECT_DIR。我还添加了java构建规则如下
"if!-f“${J2OBJC_HOME}/j2objc;然后回显”Settings.xcconfig中未正确定义的J2OBJC_HOME,当前设置为'${J2OBJC_HOME}'";退出1;fi;"${J2OBJC_HOME}/j2objc“-d ${DERIVED_FILE_DIR} -sourcepath "${PROJECT_DIR}/App”--无包目录--使用弧-前缀Flowers=JOE -g ${INPUT_FILE_PATH};
我已经构建了模拟器和iPhone,并在两者上运行,它们似乎都在工作。然而,当我去存档(这样我就可以创建.ipa)的项目。我得到一个循环依赖错误。我尝试过很多事情,比如重新开始项目,使用不同的URL来搜索路径,使用递归的和非递归的,几次检查文档,查看论坛,仍然没有解决方案。任何想法都将不胜感激!
发布于 2020-01-22 15:48:03
我已经有一个半月的循环依赖问题了。我几乎什么都试过了。
我到处找过..。得到了汤姆·鲍尔的两封回信。当涉及到使用该工具从java转换到Objc的大型项目时,xcode将无法识别生成的子目录。我发现最好的解决办法是使用bash创建自己的脚本。我做了一些研究,并弄清楚了如何递归地查找所有java文件并将j2objc脚本应用于它们,它将在同一个目录布局中输出所有Objc文件。(为您保留一个很好的布局,而不是像Xcode上的j2objc脚本规则那样杂乱无章的所有文件夹)。
我的build.sh文件如下,请随意复制-
!/bin/bash
清除目标C文件夹
rm -rf /ObjC_Output
移动到Java文件夹
cd Java
运行j2objc并将所有内容输出到ObjC中
j2objc -d ./ObjC_-d$(查找。-name "*.java")
跳出Java文件夹
cd ..。
删除以前的组织
rm /Users/me/Projects/project-name/mobile-app-front-end/app/ios/app/app/org -rf
cd到ObjC_Output
将新的ObjC项目文件复制到XCode项目。
cp -R ./ObjC_-R/*-R
我会自动将所有文件复制回我的Xcode项目。随便你怎么做都行。还不要忘记将j2objc添加到您的路径中。并在终端中运行脚本。/builder.sh。
此外,要使Xcode识别您的objC项目文件夹,您必须添加Xcode项目的顶部目录,并使其具有递归性。
在这种情况下,您不需要在Xcode中包含j2objc脚本。只需确保您像往常一样包括所有默认链接器路径、库搜索路径和用户头搜索路径(如j2objc文档所示)。
我不得不把我的头发拔出来来解决这个问题。因此,如果需要的话,可以随时寻求帮助。
发布于 2019-12-04 17:15:26
Xcode不能再处理头搜索路径和用户头搜索路径中相同的头搜索路径。在这两种情况下,您可能都有"$(J2OBJC_HOME)/include“。因此,从头搜索路径中删除它,并将其保留在用户头搜索路径中。
https://stackoverflow.com/questions/59141104
复制相似问题