[原文发表地址]Developing cross-platform iOS application using Visual Studio

[原文发表时间]2015/6/4

C ++是一种流行的高级编程语言,可运行在iOS,Android或Windows等所有的移动设备上。有许多因素推动了在这些移动的平台使用C ++,从代码重用到运行时的性能。许多平台定义的应用程序可在这些平台运行如Office,Skype, Dropbox已架构他们的移动解决方案,在某种程度上促进或利用C ++作 为 他们绝大多数的的代码库。这不仅为他们提供了代码重用的优势并且降低了开发成本,而且作为C ++代码直接在硬件上运行, 它具有高速流,快速响应和高性能的体验,这也是他们的最终用户所期望的。然而,在所有这些设备平台上使用C ++这个设想不是那么的乐观, 因为在今天,用户为了实现这一目标需要使用多个IDE,各种工具链和构建系统令人担忧。从VS2015 RC开始,开发人员可以使用Visual Studio作为单一的C ++ IDE满足他们所有的跨平台的需求。这个博客专门地谈论了新推出的 使用Visual Studio开发iOS应用程序的体验。让我们开始吧 。

Getting Started入门

我们当前的iOS开发体验要求在Mac计算机上,这主要是因为法律而非技术的原因。因此,在我们开始之前,不仅需要下载微软的资源(项目和构建二进制文件,模板),而且在Mac上的部件需要安装,你可以跟着这里的向导去设置。

在开发人员使用Visual Studio 做iOS开发之前, 第一步是配对Mac机与运行Visual Studio的实体机。配对可以通过在工具 - >选项菜单中的远程代理进行配置。确保VCRemote agent是在Mac上运行的,然后输入详细信息,如主机名和端口字段等所有的设置。成功配对的最后一件事是设置远程根文件夹,它指向与您机器配对的Mac的VCRemote的位置。配对通过点击“配对”按钮启动,一旦配对我们 就可以用Visual Studio开发我们的第一个iOS应用程序。

The cross-platform 'iOS' templates跨平台“的iOS'模板

打开新建工程向导,我们提供的iOS跨平台的模板在Visual C ++\Cross-platform下面。我们允许建立完整的端到端的iOS应用程序与C ++静态和共享库。各种可用的模板如下图所示。在这篇博客中,我们将演示如何使用面向iOS和 Android平台的 OpenGLES应用程序。

下图展示了跨平台的OpenGLES应用程序。OpenGLESApp库文件夹包含了Android native-activity项目和iOS的静态库项目。OpenGLESApp.Shared工程包含用于构建Android的动态共享库和iOS的静态库的共享的OpenGL代码。这些库会在OpenGLESApp.Android.packaging项目和OpenGLESApp.iOS.Application项目中被调用去生成Andr​​oid端到端.apk文件和iOS的.ipa文件。

设置和编辑我的iOS代码

现在,让我们带来OpenGLESApp.shared项目组件的一部分的Cube.c跨平台源文件。作为我们即时体验的一部分,我们提供了的iOS特殊的智能感知,重构和许多的代码定位功能,如代码查看,转到定义。其中的一些功能描述如下图

现在,如果你选择了OpenGLESApp.iOS.StaticLibrary工程环境,你会看到“Cube.c”源代码饰有波浪线,所以让我们先解决这个问题。该波浪线的出现是由于在Windows机器上VS智能感知无法获取OpenGLES头文件。我们目前不集成OpenGLES1头文件在VS直接使用。为了解决这个问题可以从这里下载可公开的ES1头文件,并复制它们到你的VS文件夹里。一旦这个路径被列入“包含目录”就完全设置好了。 
以我们目前的经验,一般来说如果开发者想要增加额外不属于VS项目一部分的include头文件,需要确保这些头文件都可以在Mac机上通过Xcode获取,这将会使生成成功,另外这些头文件还需要在Windows机器上可通过VS智能感知去操作。当前我们的VS体验还不能帮助对第三方库的同步,但它确实有助于您创建一个Mac文件夹和Windows文件夹之间的映射。这个映射可以在属性页中定义。下图演示了包含目录和映射目录如何设置来让OpenGLES样本工作。

生成和调试我的iOS应用程序

生成你的iOS应用程序很容易,一旦你确信VCRemote正在运行,在OpenGLESApp.iOS.Application工程上右键单击选择生成,将启动生成iOS 应用程序。 生成iOS的应用程序本质上是一个两步流程。OpenGLESApp.iOS.StaticLibrary工程被转换为一个Xcode工程并和XCode工程 一起被包含​​在 OpenGLESApp.iOS.Application工程中,他们通过网络复制,然后使用Xcode工具链在MAC上进行生成,这个过程是无缝的,错误消息/警告和其他生成的诊断信息都会在VS输出窗口显示,这与Windows和Android的生成体验是类似的。 
一旦生成完成,该应用程序就可以在iOS设备或iOS模拟器上启动。作为我们产品的一部分,我们同样延续了强大的调试体验去调试iOS应用程序。我们支持在模拟器和iOS设备上调试。在Visual Studio 2015 RC的体验中包括(但不限于)F5,输出窗口,断点,单步/跳过/跳出,运行到光标处,调用堆栈,数据和变量窗口,模块窗口,地址级调试(拆卸,内存,寄存器窗口),线程窗口,并行堆栈和并行监视窗口。下面的快照描述Visual Studio停在C++ iOS 应用程序断点处。

有关iOS调试的更多详细信息,你可以参考这个博客。

总结

此博客提供给您的信息应该让您了解了Visual Studio 团队为实现iOS开发体验所做的工作。我们的iOS肯定还没有达到目标需求,而这个功能启用分享了我们目前的想法。在接下来的几个版本中,我们将努力改善iOS的开发体验,但现在我们很乐意让大家尝试并提供反馈意见。 
分享反馈很容易!在UserVoice提交功能建议,在 Connect网站提交您找到的bug,并在可视化界面中发送一个笑脸或苦脸。您也可以在下面留下评论。除此之外,如果你希望和我们的产品团队有一个关于这个主题的直接的交谈,

使用Visual Studio开发跨平台的iOS应用程序的更多相关文章

  1. Visual Studio 开发大量 JavaScript 代码项目程序崩溃的解决方案

    最近公司做新项目,基于 Bootstrap.AngularJS 和 kendo 开发一套后台的管理系统,在项目中使用了大量的 JavaScript 文件,这两天 Visual Studio 2015 ...

  2. 新成员!Visual Studio Code --跨平台的开发工具(支持OSX, Linux 和 Windows)

    原文出处:新成员!Visual Studio Code --跨平台的开发工具(支持OSX, Linux 和 Windows) 这是我的文章备份  http://www.dotblogs.com.tw/ ...

  3. Visual Studio创建跨平台移动应用_02.Cordova Extension

    1简介 本章节是关于Visual Studio Tools for Apache Cordova的,目前此产品只发布了预览版.Visual Studio for Apache Cordova帮助熟悉V ...

  4. 使用 Cordova+Visual Studio 创建跨平台移动应用(1)

    1简介 本章节是关于Visual Studio Tools for Apache Cordova的,目前此产品只发布了预览版.Visual Studio for Apache Cordova帮助熟悉V ...

  5. Visual Studio开发首选!DevExtreme v19.1.6全新来袭

    DevExtreme Complete Subscription是性能最优的 HTML5,CSS 和 JavaScript 移动.Web开发框架,可以直接在Visual Studio集成开发环境,构建 ...

  6. Visual Studio 2013 Xamarin for iOS 环境搭建

    原文:Visual Studio 2013 Xamarin for iOS 环境搭建 一.Mac安装Xamarin.iOS 1,我的Mac 环境:OSX 10.10.3.Xcode 6.3.2 (使用 ...

  7. Apworks框架实战(四):使用Visual Studio开发面向经典分层架构的应用程序:从EasyMemo案例开始

    时隔一年,继续我们的Apworks框架之旅.在接下来的文章中,我将逐渐向大家介绍如何在Visual Studio中结合Apworks框架,使用ASP.NET Web API和MVC来开发面向经典分层架 ...

  8. SharePoint 2013 工作流之Visual Studio开发示例篇

    SharePoint 2013引用了WF4.0 Foundation,支持使用Designer和Visio进行设计,但是功能受限,而Visual Studio可以开发功能更加丰富的工作流,下面我们简单 ...

  9. visual studio 开发linux程序

    VisualGDB支持Linux的原理是,通过ssh连接到Linux系统上通过ssh给linux下达命令 . (类似visualgdb的有windgb  ,这2个都是商业软件.) Visual GDB ...

随机推荐

  1. 编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件中,a.txt 文件中的单词用回车符分隔,b.txt 文件中用回车或空格进行分隔。

    package IO; import java.io.*; public class test { public void connectWords(File file1, File file2, F ...

  2. Java 自定义注解实现ORM对象关系映射

    一,ORM概念 ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关 ...

  3. python学习笔记(excel+unittest)

    准备先利用之前整理的python自带的unittest框架 整合excel 实现接口自动化测试功能 先看看excel表格设置: 下来是对excel获取的代码: #!/usr/bin/env pytho ...

  4. Referenced file contains errors (http://www.springframework.org/schema/aop/spring-aop-3.0.xsd). For more information, right click on the message in th

    XML code<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC &q ...

  5. Neutron的防火墙原理

    确切的说这是fwaas,即防火墙即是服务. 防火墙与安全组区别防火墙一般放在网关上,用来隔离子网之间的访问.因此,防火墙即服务也是在网络节点上(具体说来是在路由器命名空间中)来实现. 安全组的对象是虚 ...

  6. 实验二. 使用LoadRunner进行压力测试

    实验二. 使用LoadRunner进行压力测试 一. LoadRunner 概要介绍   1.1简介   LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具.通过以模拟上千万用户实 ...

  7. git clone 时显示Filename too long的解决办法

    在git bash中,运行下列命令: git config --global core.longpaths true 就可以解决该问题. --global是该参数的使用范围,如果只想对本版本库设置该参 ...

  8. [Beego] 内置的模板函数(不同格式的字符串和html的互转)

    在使用beego框架的时候,常常需要把不同形式的字符串转化为html,有时候为了安全考虑会将html转义,而有时候希望能显示html标签.在存储到db中后,再取出来的显示是原本的,即html标签不会生 ...

  9. 使用Android Studio自带的NDK编译JNI

    /********************************************************************************** * 使用Android Stud ...

  10. Raspberry Pi 配置

    资料 教程 <树莓派使用指南> 系统盘制作 插上电源,连上HDML线,计科