j2objc
j2objc 工具可将指定的 Java 源文件转换为 Objective-C 或 Objective-C++ 源代码,以用于 iOS 应用。
j2objc [ options ] file1.java ...
支持的选项如下:对于采用路径的选项,需要用“:”分隔多个目录和 jar 文件,就像使用 java
和 javac
命令一样。
常用选项
- -sourcepath<路径>
- 指定查找输入源文件的位置。
- -classpath<路径>
- 指定查找用户类文件的位置。
- -d <目录>
- 指定将生成的 Objective-C 文件放在什么位置。
- -encoding <编码>
- 指定源文件的字符编码(默认采用 UTF-8)。
- -source <版本>
- 提供与指定版本的源代码兼容性。
- -g
- 生成调试支持。
- -l, --list
- 列出翻译后的文件。
- -v, --verbose
- 输出有关翻译工具正在执行的操作的消息。
- -Werror
- 将所有警告变为错误。
- -h, --help
- 输出此邮件。
翻译选项
- --add-reads
- 选项会直接转发到 Java 编译器(如需了解详情,请参阅 javac 帮助)。
- --allow-inherited-constructors
- 当原生代码访问继承的构造函数时,不要发出编译器警告。
- --build-closure
- 转换依赖的类(如果它们已过时),就像
javac
一样。 - --class-properties
- 为静态变量和枚举常量生成类属性。
- --dead-code-report <文件>
- 指定一个 ProGuard 使用情况报告,用于消除死代码。
- --doc-comments
- 将 Javadoc 注释转换为与 Xcode 兼容的注释。
- --doc-comments-warnings
- 在翻译 Javadoc 注释时报告警告。
- -external-annotation-file <文件>
- 在 Java 注解索引文件(由 Checker Framework 定义格式)中指定影响转换的最常见注解。
- -g:none
- 请勿生成调试支持。
- -g:relative
- 使用相对路径生成调试支持。
- --generate-deprecated
- 为已弃用的方法、类和接口生成已弃用的属性。
- -J<标志>
- 将 Java <flag>(例如
-Xmx1G
)传递给系统运行时。 - --mapping <文件>
- 添加方法映射文件。
- --no-class-properties
- 不要为静态变量和枚举常量生成类属性。
- --no-extract-unsequenced
- 不要重写会导致无序修改错误的表达式。
- --no-nullability
- 不要生成 Objective-C 是否可为 null 注解。
- --no-package-directories
- 生成文件时不要为 Java 软件包创建目录。
- --no-segmented-headers
- 生成标题,并在每个声明类型周围提供防护。在破坏导入周期时很有用。
- --no-wrapper-methods
- 不要为构造函数和静态方法生成 Objective-C 封装容器方法。(J2ObjC 会为这些可执行文件生成 C 函数)
- --nullability
- 将可为 null 和非 null 注解转换为 Objective-C 注解。
- --patch-module
- 选项会直接转发到 Java 编译器(如需了解详情,请参阅 javac 帮助)。
- --prefix <软件包=前缀>
- 使用指定的前缀替换软件包名称。
- --prefixes <文件>
- 指定带有前缀定义的属性文件。
- --preserve-full-paths
- 生成与输入文件具有相同相对路径的输出文件。
- -processor:<class1>[,<class2>...]
- 要运行的注解处理器的名称;绕过默认发现流程。
- -processorpath<路径>
- 指定在哪里查找注解处理器。
- --reflection:{all,none,enum-constants,-enum-constants,name-mapping,-name-mapping}
- 生成或排除 Java 反射所需的特定支持。
- --reserved-names <文件>
- 避免重新定义系统标头中存在的标识符。
- --static-accessor-methods
- 为静态变量和枚举常量生成访问器方法。
- --strip-gwt-incompatible
- 移除带有
GwtIncompatible
注解的方法,除非已知其值是兼容的。 - --strip-reflection
- 不要生成 Java 反射所需的元数据(注意:这将大大减少对反射的支持)。
- --swift-friendly
- 生成有助于 Swift 导入的代码(等同于 --class-properties --nullability)。
- --system
- 选项会直接转发到 Java 编译器(如需了解详情,请参阅 javac 帮助)。
- -t, --timing-info
- 在翻译步骤中花费的打印时间。
- --timing-info:{all,total,none}
- 在翻译步骤中花费的打印时间。
- -use-arc
- 生成 Objective-C 代码以支持自动引用计数 (ARC)。
- -use-reference-counting
- 生成 Objective-C 代码以支持 iOS 手动引用计数(默认)。
- -version
- 版本信息。
- -x<language>
- 指定要输出的语言。可能的值包括 objective-c(默认)和 objective-c++。
- -X
- 关于非标准选项的打印帮助。
非标准选项
- -Xbootclasspath:<路径>
- 转换使用的启动路径(而非工具本身)。
- -Xlint
- 启用所有警告。
- -Xlint:none
- 停用 Java 语言规范没有规定的所有警告。
- -Xlint:-xxx
- 停用警告 xxx,其中 xxx 是 -Xlint:xxx 支持的警告名称之一,如下所示。
- -Xlint:cast
- 有关多余和冗余转换表达式的警告。
- -Xlint:deprecation
- 有关使用已弃用项的警告。
- -Xlint:dep-ann
- 针对带有 @deprecated Javadoc 注释但不含 @Deprecated 注释的内容的警告。
- -Xlint:empty
- 有关空语句的警告。
- -Xlint:fallthrough
- 检查切换块中是否存在下滑情况,并针对发现的任何情况提供警告消息。
- -Xlint:finally
- 有关无法正常运行的 finally 子句的警告。
- -Xlint:rawtypes
- 针对未选中的原始类型操作发出警告。
- -Xlint:serial
- 有关可序列化类上缺少 serialVersionUID 定义的警告。
- -Xlint:static
- 关于在实例上调用的串行方法的警告。
- -Xlint:unchecked
- 针对 Java 语言规范所要求的未检查转化警告,提供更多详细信息。
- -Xlint:varargs
- 警告了对变量参数 (varargs) 方法(尤其是包含不可更新参数的方法)的不安全用法。
- -Xno-jsni-warnings
- 如果使用的是 JSNI (GWT) 原生代码分隔符(而非 OCNI 分隔符),则发出警告。