我正在尝试为iOS编译Apache数学。

我正在使用这个fork:https://github.com/j2objc-contrib/j2objc-common-libs-e2e-test

该库使用的是J2Objc版本:0.9.8,并且J2Objc-Graddle插件也很旧,并且抛出了与ARC相关的错误。在Google之后,我发现将J2Objc的版本更新为1.0.1可以修复该问题,因此我更新了版本。文件已成功编译,但是在归档步骤中失败,并出现错误:归档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构建规则而不是Graddle插件来使用J2Objc。我已经下载了J2Objc,并且有一个“Hello”示例,它能够运行简单的Jave文件。我试过了,它工作正常。

我已将Apache数学库添加到同一项目中(以节省设置时间并避免出现错误),并将源路径更新为BuileRules脚本。 XCode正在考虑Java文件并尝试对其进行编译,但它在该库中显示软件包错误。

ios - 为iOS或其他版本编译Apache通用数学-LMLPHP

收到太多错误,抱怨找不到软件包这里是一个示例:

    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

更新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'文件

解决了所有编译时错误。尝试使用类,看看是否正常。我会在一段时间后发布答案。

最佳答案

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/

10-13 08:01