iOS项目生成通用Windows应用
WinObjc - 使用iOS项目生成通用Windows应用
Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天。WinObjc项目就是Build 2015大会上微软宣布的Project IslandWood项目,致力于将iOS应用快速移植成UWP应用。废话不多说,让我们来看看WinObjc项目到底如何使用。
开始之前
开始转制iOS项目前我们要先部署好WinObjc工具,工具链如下:
- 一台安装了Visual Studio的Windows 10 PC,2015社区版可以直接下载:免费下载
- 安装转制iOS应用的WinObjc Bridge工具,直接下载:Github
- 准备一些可以使用的iOS项目,github上有不少开源项目
注意:确定你已经安装了Windows 10 SDK, 不然无法生成使用UWP项目。
此外,还可以直接使用微软已经配置好的评估版Windows 10开发环境虚机。虚机里已经配置好了最新的满足需求的开发环境,方便你快速在Mac或PC上使用评估最新工具。针对不同虚机的下载地址如下:
- VMware https://aka.ms/windev_vm_vmware
- Hyper-V https://aka.ms/windev_VM_hyperv
- VirtualBox https://aka.ms/windev_VM_virtualbox
- Parallels https://aka.ms/windev_VM_parallels
使用方法
在将下载后的Winobjc.zip文件解压到本地文件中后,我们就有了可以直接使用的iOS Bridge工具了。这里我使用的是iOS著名HUD框架MBProgressHUD的示例项目做测试,下载地址如下:https://github.com/jdg/MBProgressHUD
其中我们主要使用vsimporter工具,使用步骤如下:
- 打开命令行,并定位到iOS项目所在的目录中。 cd C:\Users\changwei\Desktop\iOS\MBProgressHUD-master\Demo
- 从命令行中运行vsimporter工具。 C:\Users\changwei\Desktop\winobjc\bin\vsimporter.exe
- 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应用的更多相关文章
- WinObjc - 使用iOS项目生成通用Windows应用
Github上一周年的WinObjc项目最近发布了预览版本,终于等到了这一天.WinObjc项目就是Build 2015大会上微软宣布的Project IslandWood项目,致力于将iOS应用快速 ...
- ios项目生成ipa文件方法
做这些的前提是你配置好了所有的证书,如果还没先去配置证书吧. 1.打开需要生成ipa的ios项目.2.在运行按钮的后面选择ios Device3.点击Product 按钮,选择第五个Archive4. ...
- 使用 Visual Studio 生成通用的 XAML 应用程序 (Windows Phone 和 Windows 通用程序)
在Build会议上,我们发布了新的版本---Windows Phone 8.1. Windows 8.1 平台.作为开发人员,这意味着您现在可以生成 XAML 和 HTML 的通用程序,并通过分享大量 ...
- Mac下安装ionic和cordova,并生成iOS项目
为了开发HTML5,除了最新使用React Native等之外,目前首选的为稳定的ionic+Angularjs来开发iOS和android. Ionic(ionicframework一款接近原生的H ...
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题(转)
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- 解决VS2008 开发Windows Mobile 项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- [转]解决VS2008 开发Windows Mobile 项目生成速度慢的问题
最近用VS2008开发Windows Mobile程序,使用C#..NET Compact Framework,发现项目生成速度比较慢.用VS2008打开项目后,开始一段时间生成速度还能忍受,时间一长 ...
- Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...
- MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI
1. 前言 距离上次发<MAUI初体验:爽>一文已经过去2个月了,本计划是下半年或者明年再研究MAUI的,现在计划提前啦,因为我觉得MAUI Blazor挺有意思的:在Android.iO ...
随机推荐
- Web程序工作原理
1.Web程序工作原理 (1)Web一词的含义 Network:[计算机]电脑网络,网 Web:[计算机]万维网(World Wide Web),互联网(Internet) Web程序,顾名思义,即工 ...
- information_schema.engines学习
当前mysql实例的存储引擎信息可以从information_schema.engines 中查询到 例子: mysql> select * from information_schema.en ...
- socket浅谈
1什么是socket? socket的英文原义是“孔”或“插座”.作为进程通信机制,取后一种意思. 通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄. (其实就是两个程序通信用的.)是 ...
- 【转】Objective-C 与 Runtime:为什么是这样?
原文地址: http://t.cn/RyyNIXd?u=2483713130&m=3884400301576073&cu=2483713130 笔者非常高兴能为Objective-C写 ...
- c3p0链接池
频繁的链接数据库是非常消耗性能的,所以就采用了将一定量的链接保存在一个池中,这个池我们叫做链接池. 详细请看:http://baike.baidu.com/link?url=dlTW-fTS3N_-j ...
- jquery validationEngine的使用
1.引入文件 <script src="/js/jquery-1.4.2.min.js" type="text/javascript"></s ...
- ajax jquery return没有返回值
错误写法: function editdivisionmember(division_id,users_id){ $.ajax({ type:"POST", url:"/ ...
- (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
题目大意:本题是中文题,可以直接在OJ上看 解题思路:最小生成树 1)本题的关键在于把二维的点转化成一维的点 for (i = 0; i < n; ++i) { scanf("%d%d ...
- Eclipse/IDEA中使用Maven创建Web项目报错
Eclipse中的错误:Could not resolve archetype org.apache.maven.archetypes:maven-archetype-webapp-1.0.jar:R ...
- CSS入门教程——定位(positon)
CSS入门教程——定位(positon) CSS定位在网页布局中是起着决定性作用. 定位 CSS的定位功能是很强大的,利用它你可以做出各种各样的网页布局.本节就介绍一些CSS常用的定位语句. 1. ...