Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天。WinObjc项目就是Build 2015大会上微软宣布的Project IslandWood项目,致力于将iOS应用快速移植成UWP应用。废话不多说,让我们来看看WinObjc项目到底如何使用。

开始之前


开始转制iOS项目前我们要先部署好WinObjc工具,工具链如下:

  1. 一台安装了Visual Studio的Windows 10 PC,2015社区版可以直接下载:免费下载
  2. 安装转制iOS应用的WinObjc Bridge工具,直接下载:Github
  3. 准备一些可以使用的iOS项目,github上有不少开源项目

注意:确定你已经安装了Windows 10 SDK, 不然无法生成使用UWP项目。

此外,还可以直接使用微软已经配置好的评估版Windows 10开发环境虚机。虚机里已经配置好了最新的满足需求的开发环境,方便你快速在Mac或PC上使用评估最新工具。针对不同虚机的下载地址如下:

使用方法


在将下载后的Winobjc.zip文件解压到本地文件中后,我们就有了可以直接使用的iOS Bridge工具了。这里我使用的是iOS著名HUD框架MBProgressHUD的示例项目做测试,下载地址如下:https://github.com/jdg/MBProgressHUD

其中我们主要使用vsimporter工具,使用步骤如下:

  1. 打开命令行,并定位到iOS项目所在的目录中。 cd C:\Users\changwei\Desktop\iOS\MBProgressHUD-master\Demo
  2. 从命令行中运行vsimporter工具。 C:\Users\changwei\Desktop\winobjc\bin\vsimporter.exe
  3. vsiimporter自动排除了目前还不支持的测试项目和tvOS项目,生成了一个UWP项目,结果如下:

    4.可以看到已经生成了sln解决方案文件,直接打开即可

5.Winobjc文件夹bin目录下有个Objective-C语言高亮插件objc-syntax-highlighting.vsix,大家别忘了安装哦。当前解决方案sln文件双击打开后就是一个标准的UWP项目,直接Ctrl+F5运行此项目。

    第一次编译生成要较长时间,然而最蛋疼的是编译失败了,拜拜(果然还是大坑)。

      

    之后又尝试了很多iOS项目包括Apple开发者中心下载的一些示例项目。大部分都会编译错误,少部分能运行的很多UI界面和功能都不对,目前除了官方自带的Winojc示例项目外还没有能正常运行的。

    我们来看看官方能运行的示例项目实际运行效果是什么样子的,如下:

    

列表视图 UITableView

集合视图 UICollectionView

图片视图 UIImageView

我试着写入了一段Objective-C代码到项目中,会在当前窗口添加一个橘黄色的视图,如下:

UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(,,,)];
testView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:testView];

编译运行后,确实执行也没有问题,功能也是正常运行的,如下:

总结


Winobjc项目看着很美,但目前还是一张不堪使用的大饼。搞了一年,总归比开始进步多了,重写支持了大多数的iOS基础库,UIKit之类的基本framework完成度都挺高的,AutoLayout、Storyboard和XIB也都支持了,但是未来还有很长的路要走。目前大家还是可以尝尝鲜的,其实在我看来与其照搬重写iOS framework,倒不如开发一套支持Objective-C的Windows开发框架,想比也比现在好多了,不至于被iOS牵着鼻子,问题不断。

WinObjc - 使用iOS项目生成通用Windows应用的更多相关文章

  1. iOS项目生成通用Windows应用

    WinObjc - 使用iOS项目生成通用Windows应用   Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天.WinObjc项目就是Build 2015大会上微软宣布 ...

  2. ios项目生成ipa文件方法

    做这些的前提是你配置好了所有的证书,如果还没先去配置证书吧. 1.打开需要生成ipa的ios项目.2.在运行按钮的后面选择ios Device3.点击Product 按钮,选择第五个Archive4. ...

  3. 使用 Visual Studio 生成通用的 XAML 应用程序 (Windows Phone 和 Windows 通用程序)

    在Build会议上,我们发布了新的版本---Windows Phone 8.1. Windows 8.1 平台.作为开发人员,这意味着您现在可以生成 XAML 和 HTML 的通用程序,并通过分享大量 ...

  4. Mac下安装ionic和cordova,并生成iOS项目

    为了开发HTML5,除了最新使用React Native等之外,目前首选的为稳定的ionic+Angularjs来开发iOS和android. Ionic(ionicframework一款接近原生的H ...

  5. 解决VS2008 开发Windows Mobile 项目生成速度慢的问题(转)

    最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...

  6. 解决VS2008 开发Windows Mobile 项目生成速度慢的问题

    最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...

  7. [转]解决VS2008 开发Windows Mobile 项目生成速度慢的问题

    最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...

  8. Java项目生成可执行jar包、exe文件以及在Windows下的安装文件

    1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...

  9. MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI

    1. 前言 距离上次发<MAUI初体验:爽>一文已经过去2个月了,本计划是下半年或者明年再研究MAUI的,现在计划提前啦,因为我觉得MAUI Blazor挺有意思的:在Android.iO ...

随机推荐

  1. ORACLE AWR报告生成过程出现多个实例记录分析

    在一次生成AWR报告中,发现在"Instances in this Workload Repository schema"部分,出现了多个实例记录信息(host敏感信息被用host ...

  2. oracle和postgresql 递归查询父子关系记录语法区别

    oracle: 一.数据 db数据字段如下: task_id             task_name         t.parent_task_id       *** ***          ...

  3. java.lang.UnsatisfiedLinkError: Unable to load library 'xxx': Native library (win32-x86-64/ID_Fpr.dll)

    使用 JNA 调用 dll 库,因为 dll 库是32 位的,而 jvm 是 64位的,所以发生的错误: java.lang.UnsatisfiedLinkError: Unable to load ...

  4. 无法连接到WMI提供程序 三种解决办法

    无法连接到WMI 提供程序 请注意,你只能使用SQL Server 配置管理器来管理SQL Server 2005服务器.找不到指定的模块.[0x8007007e] 解决方案1: 检查一下 windo ...

  5. Windows 安装ELK

    在Windows服务器上安装ELK logstash在windows平台下不能监控磁盘文件,用nxlog代替,监控文件并把内容发送到logstash 部署环境 Os :Windows 7 logsta ...

  6. Hibernate4中使用getCurrentSession报Could not obtain transaction-synchronized Session for current thread

    架个spring4+hibernate4的demo,dao层直接注入的sessionFactory,然后用getCurrentSession方法获取session,然后问题来了,直接报错: Could ...

  7. hdfs 机架感知和复制因子的设置

    dfs.replication 新更新的复制因子的参数对原来的文件不起作用. 譬如说,原来的复制因子是2,则原来文件上传的时候就只有两个副本. 现在把dfs.replication设置为3,重新启动h ...

  8. 新版Microsoft Azure Web管理控制台 - Microsoft Azure New Portal - (2)

    前文我们提到在Resource Manager模式中,虚拟机默认不再与云服务对应,也不再有类似xxx.cloudapp.net的二级域名.在Resource Manager模式中,虚拟机的网卡.公共I ...

  9. 连接到Windows Azure Point to Site VPN

    Windows Azure支持两种模式的VPN接入: Site to Site,接入端需要有固定的公网IP地址,用于连接局域网和Windows Azure的虚拟网络. Point to Site,客户 ...

  10. for循环的省略

    for (初始化语句; 条件语句; 控制语句){ 被执行的代码块 }; 例如: for (var i=0;i<cars.length;i++) { document.write(cars[i] ...