[IOS]How to use J2Objc

网友投稿 304 2022-09-07

[IOS]How to use J2Objc

一.下载:

​​code,需要编译:

参考:invalid flag错误.

需要装maven

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

2.按照教程:

官方:​​${J2OBJC_HOME}/lib ${J2OBJC_HOME}/include

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

在other linker flags:-liconv -lz

参考: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

参考:you use CocoaPods, click Xcode menu ​​file​​​ -> ​​Workspace Settings​​​ , And click ​​Build system​​​ choice ​​Legacy Build System​​

​​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那样使用.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:科技狐:这个国产手机品牌,太坏了!
下一篇:[IOS]xcode生成公钥私钥
相关文章

 发表评论

暂时没有评论,来抢沙发吧~