我正在尝试为 iOS 编译 Apache 数学。
我正在使用这个 fork :https://github.com/j2objc-contrib/j2objc-common-libs-e2e-test
这个库使用 J2Objc 版本:0.9.8 和 J2Objc-Gradle 插件也很旧,它抛出与 ARC 相关的错误。在谷歌之后我发现将 J2Objc 的版本更新到 1.0.1 将修复它并且我更新了版本。文件编译成功,但在归档步骤失败并出现错误:Static library archiver failed while archiving liborg.apache.commons-commons-math3-j2objc.a
我按照这里的步骤操作:http://dabugger.blogspot.com/2015/03/java-to-objective-c-journey.html
这里是详细的日志:https://gist.github.com/iducool/ef1531302171c1e59fe988ce5e20d37b
如果有人能告诉我正确或适当的步骤或指出此问题的原因或解决方案,那将非常有帮助。我也很高兴听到这个库的替代方案(如果有的话)[我已经搜索过但没有找到任何东西]。
更新:
我开始使用使用 XCode 构建规则的 J2Objc,而不是 Graddle 插件。我已经下载了 J2Objc,并且有一个能够运行简单 Jave 文件的“Hello”示例。我试过了,效果很好。
我已将 Apache 数学库添加到同一个项目中(以节省进行设置和遇到错误的时间)并将源路径更新到 BuileRules 脚本中。 XCode 正在考虑 java 文件并尝试对其进行编译,但它显示该库中的包错误。
收到如此多的错误,提示找不到包这是一个例子:
error: /Users/myUser/Documents/j2objc-2.4/examples/Hello/Hello/java/org/apache/commons/math3/util/Precision.java:22:
package org.apache.commons.math3.exception does not exist
Update-1
使用以下命令:
./j2objc --build-closure -g -d ./gjava -sourcepath /Users/myUser/Downloads/commons-math3-3.6.1-src/src/main/java `find /Users/myUser/Downloads/commons-math3-3.6.1-src/src/main/java -name '*.java'`
我能够生成 Objective-C 类。但是这些类在几乎所有具有类似路径的导入中都会出错,
#include "org/apache/commons/math3/FieldElement.h"
错误:
'org/apache/commons/math3/FieldElement.h' file not found
所有编译时错误都已解决。尝试使用类并查看它是否有效。稍后我会发布答案。
最佳答案
Xcode 无法处理生成具有相对源目录的源文件的规则。虽然它是老式的,但使用 Make 可能是您最简单的选择,因为 j2objc/make有宏使它更容易。 jsr305 sub-project是一个简单的演示。
要在 Xcode 中构建一个 make 子项目,请创建一个外部构建系统目标(在跨平台下)并在其 Info 参数中调用 make。 JreEmulation project's j2objc 构建目标就是一个例子。
关于ios - 为 iOS 或替代品编译 Apache 通用数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56664771/