如何在swift框架

时间:2016-06-15 02:49:34

标签: ios swift j2objc j2objc-gradle

我创建了一个带有objectiveC代码的swift框架,由j2objc翻译。

我已经添加了java文件来编译源代码,并使用以下设置:

GENERATED_FILES_DIR =" $ {SRCROOT} /生成";

HEADER_SEARCH_PATHS =" $ {J2OBJC_HOME} /frameworks/JRE.framework/Headers" " $ {GENERATED_FILES_DIR}" " $ {J2OBJC_HOME} /包括" $(继承);

LIBRARY_SEARCH_PATHS = $ {J2OBJC_HOME} / lib;

OTHER_LDFLAGS = -ljre_emul

CLANG_ENABLE_OBJC_ARC =否

我收到了错误:

包括" J2ObjC_header.h" >>在框架模块&x; XXXXX'

中包含非模块化标头

然后我执行以下操作:

CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES

错误仍然存​​在。

我链接' JRE.framework'并设置HEADER_SEARCH_PATHS

错误仍然存​​在。

如何解决?

1 个答案:

答案 0 :(得分:0)

您还想设置DEFINES_MODULE = NO;

除此之外,您不需要"${J2OBJC_HOME}/include"中的HEADER_SEARCH_PATHS,您也可以删除LIBRARY_SEARCH_PATHS = ${J2OBJC_HOME}/lib; OTHER_LDFLAGS = -ljre_emul;,因为您现在正在使用JRE框架。

如果您正在翻译没有.java标志的--no-package-directories来源并且想要保留目录结构,那么您还需要执行以下操作:

  1. 将生成的文件添加为Xcode
  2. 中的文件夹引用
  3. Copy Bundle Resources阶段
  4. 中删除它们
  5. 将文件夹放在Public阶段的Headers部分
  6. 添加新的Run Scrip阶段以从.m目录中删除Headers个文件: find "$TARGET_BUILD_DIR/$PUBLIC_HEADERS_FOLDER_PATH" -name "*.m" -exec rm -f {} \;
  7. 现在,您可以使用#include <your-framework-name/path/to/header/Header.h>
  8. 在伞形标题中引用它们