`

[IOS]How to use J2Objc

    博客分类:
  • IOS
阅读更多

一.下载:

https://github.com/google/j2objc/releases

 

如果下载的是source code,需要编译:

参考:https://developers.google.com/j2objc/guides/building-j2objc

*注意:路径上不要有空格,要不会报javac: invalid flag错误.

需要装maven

 

或者直接下载完整zip(推荐,更简单)

 

2.按照教程:

官方:https://developers.google.com/j2objc/guides/xcode-build-rules

中文:

  • https://blog.csdn.net/longlongValue/article/details/79002597
  • https://www.jianshu.com/p/f58ee097e773

简要来说就是添加:

-ljre_emul

J2OBJC_HOME

${J2OBJC_HOME}/frameworks ${J2OBJC_HOME}/lib ${J2OBJC_HOME}/include

 

发现还是会报错,官方的guide里面没有说要添加一下lib

在other linker flags:-liconv -lz

 参考:https://www.jianshu.com/p/2cbe6c2806a4

 

添加build rules,例如:

if [ ! -f "${J2OBJC_HOME}/j2objc" ]; then echo "J2OBJC_HOME is not correctly defined, currently set to '${J2OBJC_HOME}'"; exit 1; fi;
"${J2OBJC_HOME}/j2objc" -d ${DERIVED_FILES_DIR} -sourcepath "${PROJECT_DIR}/your project" --no-package-directories -use-arc --prefix Java=J -g ${INPUT_FILE_PATH};

 

build一下转换

 

3.调用:

首先要注意类名,包和路径会变成类名

script里--prefix Othello.Engine(package name)=xxxx可以自定义类前缀

然后先#import "xxxx.h" (原Java类名),可能没有代码提示,需要import,才能调用,调用使用前缀+原java类名

 

一些错误解决:

Xcode 10 Error: Multiple commands produce

参考:https://stackoverflow.com/questions/52396637/build-error-xcode-10-multiple-commands-produce

If you use CocoaPods, click Xcode menu file -> Workspace Settings , And click Build system choice Legacy Build System

https://i.stack.imgur.com/FqiID.png

If you not use CocoaPods, same of top , select Project Settings

 

4.--no-package-directories:

使用这个命令,就会在output Files的路径那里生成没有子包的转换文件,这样XCODE可以直接识别,但是类名不能重复,要不会覆盖掉.

如果不使用这个命令,可以生成有子包路径的转换文件,但是XCODE只会在output files的路径找文件,不会进入到子文件夹中,因此会找不到转换成功后的文件.

 

5.坑:

首先j2objc不是万能的,例如javax里面关于security和cypto的getInstance()方法就会报错,即使找到源码,转完把OC代码放进项目里面直接用也是报错的.

 

有时候通过xcode转是报错的,通过命令行反而会成功.可以转jar,但是jar必须是source jar

j2objc  -d dest  ./source/Test.jar --no-package-directories -use-arc 

 * 勾选export java files andresources

可以把用命令行转完的source files放进项目,像一般OC那样使用.

 

分享到:
评论

相关推荐

    j2objc-annotations-1.3-API文档-中文版.zip

    赠送jar包:j2objc-annotations-1.3.jar; 赠送原API文档:j2objc-annotations-1.3-javadoc.jar; 赠送源代码:j2objc-annotations-1.3-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.3.pom; 包含...

    j2objc-annotations-1.1-API文档-中文版.zip

    赠送jar包:j2objc-annotations-1.1.jar; 赠送原API文档:j2objc-annotations-1.1-javadoc.jar; 赠送源代码:j2objc-annotations-1.1-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.1.pom; 包含...

    J2OBJC的demo

    J2OBJC的出现解决了跨平台开发中的一个重要问题,尤其是在企业级应用中,许多公司已经积累了大量的Java代码,通过J2OBJC可以轻松地将这些代码引入到iOS项目中。 **J2OBJC的工作原理** J2OBJC的工作流程大致分为...

    j2objc ios demo

    如果无法运行 查看J2OBJC_HOME是否正确; 查看Build Phases中的JRE.framework是否引入 相关的博客 http://blog.csdn.net/coooliang/article/details/79346001

    j2objc-annotations-2.8.jar

    javaweb/javaee 常用jar包,亲测可用,若需其他版本其他jar包请留言我看到后会上传分享

    j2objc-annotations-1.1-API文档-中英对照版.zip

    赠送jar包:j2objc-annotations-1.1.jar; 赠送原API文档:j2objc-annotations-1.1-javadoc.jar; 赠送源代码:j2objc-annotations-1.1-sources.jar; 赠送Maven依赖信息文件:j2objc-annotations-1.1.pom; 包含...

    j2objc-0.5.6.zip_J2ObjC_j2objc-0.5.6

    J2ObjC是一款强大的开源工具,主要功能是将Java语言编写的代码转换为Objective-C代码,使得Java开发者能够在iOS平台上进行开发,无需完全掌握Objective-C语言。这个工具由Google开发并维护,版本号为0.5.6,它为跨...

    j2objc-annotations-1.1.jar

    The type com.google.j2objc.annotations.ReflectionSupport$Level cannot be resolved. It is indirectly referenced from required .class files

    j2objc-annotations-1.3.jar

    java运行依赖jar包

    j2objcDemo

    **标题解析:** "j2objcDemo" 是一个基于j2objc框架的示例项目,旨在展示如何在iOS环境中调用Java代码。 **j2objc介绍:** j2objc 是Google开发的一个开源工具,它允许Java开发者将Java代码转换为Objective-C,以便...

    j2objc-annotations-1.3.jar中文-英文对照文档.zip

    注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)... (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;

    WSDL2Objc下载工具

    标题中的“WSDL2Objc下载工具”是一个专门为iOS开发者设计的实用程序,它的主要功能是自动生成Objective-C客户端代码,从而简化与Web服务的集成过程。这个工具可以解析WSDL文件,并生成对应的Objective-C类,使得...

    j2objc_starter_kit

    J2objc入门套件入门工具包是使用入门的好方法。 它包括一个简单的演示,向您... 假设在Mac上, $ln -s /path_to/j2objc/dist/j2objc /usr/bin/j2bjc$ln -s /path_to/j2objc/dist/j2objcc /usr/bin/j2objcc 通过键入以下

    演示如何在 使用J2ObjC 的 iOS 应用程序中使用 黑白棋游戏引擎的示例_java_Objective-C_代码_下载

    这是一个示例,展示了如何在使用 J2ObjC 的 iOS 应用程序中使用黑白棋游戏引擎。 最初的游戏奥赛罗由 Mats Luthman 编写,可从 他的网站获得。Mats 将其设计为既可以用作 Swing 应用程序,也可以用作命令行应用程序...

    j2objcJava转成Objective-C的用于移植Android库到iOS

    标题:“j2objc:Java转成Objective-C的用于移植Android库到iOS” j2objc 是一个开源工具,由Google开发,它的主要目的是帮助开发者将Java代码转换为Objective-C,使得Android库能够顺利地在iOS平台上运行。这个...

    j2objc-dagger:使用 J2Objc 对 Dagger2 进行测试翻译

    **标题解析:**"j2objc-dagger"指的是一个项目,它关注的是如何利用J2ObjC工具对Dagger2这个依赖注入框架进行翻译,以便在iOS平台上进行测试或运行。这里的“测试翻译”可能意味着将Java代码转换为Objective-C,以...

    j2objc-gradle:该插件不再有效维护。 J2ObjC Gradle插件-Android app source code

    J2ObjC Gradle插件使Java源代码成为iOS应用程序构建的一部分,因此您可以用Java编写应用程序的非UI代码(例如应用程序逻辑和数据模型),然后由Android应用程序(本机为Java)和iOS共享应用程序(使用J2ObjC)。...

    WSDL2Objc(iphone)

    `WSDL2Objc` 是一个非常实用的工具,它能够帮助开发者自动生成适用于iPhone端的Objective-C源代码,从而简化了在iOS应用中调用Web服务的过程。这一工具的核心功能在于,它能够解析WSDL(Web Services Description ...

    Java转Objective-C工具 J2ObjC.zip

    Java转Objective-C工具 J2ObjC ,J2ObjC 是一个来自 Google 的开源命令行工具,用于将 Java 代码转成 iOS 平台上...

Global site tag (gtag.js) - Google Analytics