必威体育Betway必威体育官网
当前位置:首页 > IT技术

j2objc

时间:2019-10-13 04:15:46来源:IT技术作者:seo实验室小编阅读:64次「手机版」
 

j2objc

谷歌推出的j2objc可以将不涉及UI的java代码转换(翻译)为objective-c的代码。推出此工具的目的是能够使用java编写的逻辑部分、数据处理部分等不涉及UI的核心代码,而这些代码能够轻松的使用在web端,Android客户端,和iOS客户端(j2objc)。前2个因为本身就是java环境,所以java的核心代码重复使用没有太大的问题,而ios客户端采用Objective-c作为编程语言,j2objc转制的代码可用性大吗?和相同业务逻辑用原生objective-c编写出来的代码,有多大的差异?虽然java有垃圾回收机制,但是ios5之后xcode不是有ARC么,唯一不同的地方仅仅是objective-c的垃圾回收由编译器在编译的时候就完成了。

注意注意注意:该j2objc不能转换jar包和UI代码!!!

接下来我们聊一下具体的转换操作:

1.项目->TARGETS->build Rules新建Java Source files,内容

/Users/gaolailong/Desktop/Java2OC/j2objc-2.0.5/j2objc -d ${DERIVED_FILE_DIR} -sourcepath ${PROJECT_DIR}/Java2OCTest \
--no-package-directories ${INPUT_FILE_PATH};

注意修改你自己的项目名字和你下载的j2objc目录的正确性。

/Users/gaolailong/Desktop/Java2OC/j2objc-2.0.5/j2objc为你下载的j2objc目录文件夹

这里写图片描述

Java2OCTest为我自己的项目名字。

如图:

这里写图片描述

然后在Output Files中添加

$(DERIVED_FILE_DIR)/${INPUT_FILE_BASE}.h

$(DERIVED_FILE_DIR)/${INPUT_FILE_BASE}.m

2.Build settings-Search Paths中添加你下载的j2objc目录中的子目录如图:

这里写图片描述

这里写图片描述

3.最后,Build Settings-Linking-Other Linker Flags中添加

$(inherited) -l"z" -l"jre_emul" -l"icucore" -l jre_emul -ObjC 

OK。是时候写一个项目实践一下了。

Demo地址:Java2OCTest 密码:bsrr

另外需要注意的是

1.当新增了java方法之后,直接调用的话是会报错的,因为j2objc还没有编译出对应的objc的代码,此时需要将整个工程Build编译一下,然后就可以调用了,当然,把工程clean之后也会默认报类似的错,Build一下工程即可。

2.如果java代码中使用了包,则j2objc会默认更改类名(在原有类名之前加包名),commod+鼠标左键进入查看具体变化,再根据实际情况调用。

有关包名加前缀的问题,可以参考官方文档 https://github.com/Google/j2objc/wiki/Package-Prefixes

3.对于使用数组的情况,暂时还没发现把j2objc的数组直接转化为objectC数组的方法(强转当然是不行的),因此使用IOSIntArray取得数组中的元素,数组操作查看该类.h文件。

相关阅读

alternatives –config java

linux安装mvn后,openjdk会成主默认环境,需要使用上面的alternatives切换回jdk。但是在切换回之前,还需要把jdk加入到alternatives中

JS实现图片自动滚动(图片横向滚动)

实现的效果就是 一排图片自动横向滚动,鼠标指向的时候,暂定滚动,鼠标离开,继续滚动 首先看下html代码:随便加入四张图片 <p id="

Java:十六进制转换成十进制

问题及代码: /*   *问题描述    从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。     

JSP开发之JSP 标准标签库(JSTL)之格式化标签formatNumbe

JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下: <%@ taglib prefix="fmt" ur

c++builder2010提示缺少borlndmm.dll和borlndmm.dat文

1、工程---options----packages取消build with runtime packages前面的勾2、工程---options----c++ linkerdynamic RTL 设定为fal

分享到:

栏目导航

推荐阅读

热门阅读