WinObjc - 使用iOS项目生成通用Windows应用

 

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(0,0,200,200)];
testView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:testView];

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

总结


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

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

  1. WinObjc - 使用iOS项目生成通用Windows应用

    Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天.WinObjc项目就是Build 2015大会上微软宣布的Project IslandWood项目,致力于将iOS应用快速 ...

  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. [C++程序设计]基于对象的程序设计 基于对象的程序设计

    1. 面向对象分析(object oriented analysis,OOA)2. 面向对象设计(object oriented design,OOD)3. 面向对象编程(object oriente ...

  2. [Head First Python]4.读取文件datafile.txt, 去除两边空格, 存储到列表,从列表格式化(nester.py)后输出到文件man.out,other.out

    datafile.txt  #文件 Man: this is the right room for an argument. Other Man: I've told you once. Man: N ...

  3. request.getParamer()

    eturns the value of a request parameter as a String, or null if the parameter does not exist. Reques ...

  4. INSERTION_SORT插入排序C++实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下用C++实现插入排序的升序和降序排序 算法来自<算法导论> #include< ...

  5. 线程池 异步I/O线程 <第三篇>

    在学习异步之前先来说说异步的好处,例如对于不需要CPU参数的输入输出操作,可以将实际的处理步骤分为以下三步: 启动处理: 实际的处理,此时不需要CPU参数: 任务完成后的处理: 以上步骤如果仅仅使用一 ...

  6. eclipse的优化 gc.log

    原帖:http://www.javaeye.com/topic/756538 性能优化从身边做起. 首先建立评估体系,将workspace里所有的项目close掉,关闭eclipse.优化的用例就是启 ...

  7. MSSQL 镜像

    1.设置数据库CollectionDB 为完整备份模式服务端: USE master ALTER DATABASE CollectionGuest SET RECOVERY FULL GO 镜相端: ...

  8. C# 坦克大战学习总结

    1.学会用Resource管理资源 添加资源 在properties下的Resource.resx添加资源 使用资源 工程名.Properties.Resource.资源名 实际本质,是一个流. 2. ...

  9. Java中的5种同步辅助类

    当你使用synchronized关键字的时候,是通过互斥器来保障线程安全以及对共享资源的同步访问.线程间也经常需要更进一步的协调执行,来完成复杂的并发任务,比如wait/notify模式就是一种在多线 ...

  10. ECSHOP返回顶部的代码 纯CSS超简单

    在themes/模板文件夹/library/page_footer.lbi 文件的最末尾加上下面的一段代码 <style>.to_top{width:20px;height:59px;ri ...