Visual Studio 2017 and Apache Cordova mobile apps | Andrés Zsögön
原文:Visual Studio 2017 and Apache Cordova mobile apps | Andrés Zsögön
以下是使用Microsoft Visual Studio 2017尝试使用适用于Android,iOS和Windows的HTML,CSS和JS 开发Apache Cordova移动应用程序时可能遇到的一些问题。出于这些和其他原因,我更喜欢继续使用Visual Studio 2015,它没有提到任何问题。
不再支持Windows Phone 8.1
我最不喜欢Visual Studio 2017的一件事是您无法再编译Windows Phone 8应用程序。只有非常通用的 UWP(通用Windows平台)应用程序可以编译和部署,如平台定位文章中所述:
此版本不支持Windows Store 8.1和8.0以及Windows Phone 8.1和8.0的项目。要维护这些应用程序,请继续使用Visual Studio 2015。
这意味着随VS2017提供的UWP 10只能编译适用于Windows 10和Windows 10 Mobile的应用程序,但不能编译Windows Phone 8.目前仍有数百万台Windows Phone 8.1设备在使用,因此要保持它们与您之间的良好兼容性应用程序将确保您获得更多用户。
使用Visual Studio 2015 和Windows Phone 8.1 SDK,您可以通过在config.xml设计器中选择Windows目标版本:Windows 8.1来编译与Windows Phone 8.1和Windows 10 Mobile兼容的 UWP 。
坚持使用Cordova 6.3.1工具集
自VS2017发布以来,Visual Studio中的Cordova 工具集一直停留在Cordova CLI 6.3.1中,并且未提供进一步的更新。这意味着你会遇到越来越过时的Cordova 6.3.1 CLI,以及旧版本的cordova-android和cordova-ios工具:

VS2017 Cordova 6.3.1工具集。
但是,您可以使用全局安装的CLI版本,如Cordova 7.1.0:

VS2017 Cordova 7.1.0工具集。
这种方法的问题在于,当您增加Cordova CLI和cordova-android版本时,您将开始获得越来越多的Visual Studio相关错误。例如:
- 使用Cordova 6.5.0和cordova-android 6.3.0时,一切都会完美运行。但是这个版本对于某些插件来说太旧了,比如phonegap-plugin-push。
- 使用Cordova 7.1.0和cordova-android 6.3.0时,您可以构建和部署到设备和模拟器,但VS2017错误地报告状态栏上的Deploy失败。没什么大不了的,部署到设备,模拟器和调试实际上工作正常。
- 使用cordova-android 6.4.0或更高版本时,您的应用程序将不会部署到设备或模拟器。这是因为在cordova-android 6.4.0中,APK输出路径不幸被更改,导致Visual Studio不再找到APK并假设构建失败。我关于这个问题的报告已被视为IDE问题,换句话说,应该更新Visual Studio以解决此问题。你可以永远等待一个新的工具集发布,所以我不会指望它。
- 每当您使用config.xml设计器中显示的选择框更改CLI版本时,下次加载项目时可能会忘记该设置,因为config.xml未正确更新。有关处理此错误的更多信息,请阅读下一期。
- 要使用Cordova 7.1.0为Android编译,您可能需要通过从Visual Studio 更改ANDROID_HOME设置来切换到Android SDK API 26 。这会引入以下问题:不再检测到您的Android模拟器,也无法部署到模拟器(请参阅本页下方的详细问题)。
未保存选定的Cordova工具集
默认情况下,Visual Studio 2017将使用自己的Cordova 6.3.1工具集创建新的Apache Cordova项目。如果将其更改为使用全局安装的Cordova版本,则下次打开项目时会忘记此设置,并且您被邀请转换项目。
这是因为无论何时更改工具集,config.xml都未正确更新。要在项目中更改Cordova版本,请在“ 查看代码”模式下手动编辑config.xml 以找到:
<VS:toolsetVersion> 6.3.1 </ VS:toolsetVersion>
<engine name =“android”spec =“5.2.1”/>
并将其替换为全球安装的版本(在本例中为7.1.0)。还设置了一个较新的cordova-android版本(6.3.0是最后一个适用于Visual Studio的版本,之后Apache Cordova团队通过更改APK输出路径来打破它)。
<VS:toolsetVersion> 7.1.0 </ VS:toolsetVersion>
<engine name =“android”spec =“6.3.0”/>
保存config.xml并重新加载项目,将预先选择全局安装的版本,不会询问任何转换。
您可以在我在Stackoverflow 上发布的这个答案中找到有关此问题的更多详细信息。
构建失败,因为需要更新的Android SDK
当您设法更改Cordova CLI和cordova-android版本时,您可能会遇到与Android SDK(API 25)相关的错误。Cordova 7.1.0需要Android SDK 26进行编译,因此您必须将Visual Studio中的ANDROID_HOME设置设置为外部安装的Android SDK。您可以使用经典的Android SDK Manager获取和管理已安装的Android SDK :

适用于Windows的Android SDK Manager。
此SDK管理器已被埋没,试图让更多开发人员迁移到Android Studio,后者具有内置的SDK管理器,但您仍然可以在此处获取它。Android Studio的问题在于它的IDE缺乏对Apache Cordova应用程序的任何支持,不像Visual Studio提供了轻松创建,调试,部署和分发它们所需的所有工具。
更改ANDROID_HOME后无法部署到模拟器
每当您在Tools for Apache Cordova设置中更改ANDROID_HOME路径(使用较新的Android API进行编译)时,您可能会注意到Deploy to Emulator选项已消失,而是替换为安装Google Android模拟器。这可能非常令人沮丧。

在此处更改Visual Studio 2017 Android SDK路径会删除“ 部署到模拟器”选项。
不幸的是,将自定义ANDROID_HOME设置为使用较新的API会破坏Deploy to Google Android Emulator选项并替换它将安装Google Android Emulators。当使用VS2017安装程序本身的Tools for Apache Cordova提供的(越来越过时的)Android SDK API 25时,VS2017似乎只能部署到emulatos 。
如何使用我自己的ANDROID_HOME然后部署到模拟器?
如果您坚持更改ANDROID_HOME设置,仍可以使用cordova emulate命令手动部署到模拟器:
cordova run - emulator
但是,您将无法使用Visual Studio内置调试工具。您仍然可以使用Chrome的远程调试与设备检查器,但这不会调试非Javascript插件。Visual Studio 2015上不存在此问题,它允许在正确部署到设备和模拟器时使用您自己的ANDROID_HOME设置。
如何使用更新的API手动更新内置API 25文件夹?
那太好了。但是,由于VS2017安装程序提供的Android SDK API 25的文件夹结构与Android SDK Manager创建的原始SDK结构非常不同,因此您不能简单地将API 25文件夹的内容替换为API 26中的内容以解决此问题。问题。尝试这可能会导致无法使用的SDK。
与Cordova,Visual Studio或Android仿真器相关的问题
- 使用Android SDK Manager安装时运行Android 8或更新模拟器的问题:使用不带Android Studio的Android 8和9模拟器
- 从Visual Studio for Windows使用远程代理为macOS 运行或部署iOS应用程序的问题:从Visual Studio for Windows 构建Cordova iOS应用程序
有另一个问题?添加您的评论
我没有尝试过VS2017足够长的时间来找到所有与Cordova相关的问题。如果您遇到任何其他问题,请随时使用本页Disqus上的评论表单提交。如果我有时间,我会尽力帮助您或调查问题。
所有产品名称,徽标和品牌均为其各自所有者的财产。本网站使用的所有公司,产品和服务名称仅用于识别目的。使用这些名称,徽标和品牌并不意味着认可。
此条目发布在Apache Cordova,Visual Studio on2018年5月12日。
Visual Studio 2017 and Apache Cordova mobile apps | Andrés Zsögön的更多相关文章
- Install Visual Studio Tools for Apache Cordova
Install Visual Studio Tools for Apache Cordova Visual Studio 2013 This article refers to the Visua ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)
基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...
- 配置 Visual Studio Tools for Apache Cordova
原文:配置 Visual Studio Tools for Apache Cordova 1.连接地址 https://msdn.microsoft.com/zh-cn/library/vs/alm/ ...
- Visual Studio 2015 和 Apache Cordova 跨平台开发入门
原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于V ...
- Visual Studio 2015 和 Apache Cordova
英文原版:http://www.codeproject.com/Articles/860150/Visual-Studio-and-Apache-Cordova 在开始前,问一下自己下面这些问题: 熟 ...
- 在 Visual Studio中 使用Apache Cordova 开发安卓、iOS程序(自定义图标和闪屏)
方法1 1台安装有linux的电脑,虚拟机也行,并安装imagemagick软件包.我用的是linux mint,直接在软件管理器中安装即可 把https://github.com/shamork/c ...
- 最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- 终于等到你,最强 IDE Visual Studio 2017 正式版发布
Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...
- Visual Studio 2017 发布 附带下载地址
链接: https://pan.baidu.com/s/1kFjGwyj5HwabvmJKiyLF_g 提取码: 关注公众号[GitHubCN]回复获取 winform框架源码-Devexpre ...
随机推荐
- AIX上安装Oracle10G软件
安装准备 (1)确认系统版本号.内核版本号 # oslevel –r //查看操作系统版本号 //-08能够安装10g,-09能够安装11g watermark/2/text/aHR0cDovL2 ...
- C++卷积神经网络实例:tiny_cnn代码具体解释(8)——partial_connected_layer层结构类分析(上)
在之前的博文中我们已经将顶层的网络结构都介绍完毕,包括卷积层.下採样层.全连接层,在这篇博文中主要有两个任务.一是总体贯通一下卷积神经网络在对图像进行卷积处理的整个流程,二是继续我们的类分析.这次须要 ...
- Storm新特性之Flux
Storm新特性之Flux Flux是Storm版本号0.10.0中的新组件,主要目的是为了方便拓扑的开发与部署.原先在开发Storm拓扑的时候整个拓扑的结构都是硬编码写在代码中的,当要对其进行改动时 ...
- php课程 8-32 如何使用gd库进行图片裁剪和缩放
php课程 8-32 如何使用gd库进行图片裁剪和缩放 一.总结 一句话总结:图片缩放到图片裁剪就是改变原图截取的位置以及截取的宽高. 1.电商网站那么多的图片,如果全部加载卡得慢的很,所以他们是怎么 ...
- UIActionSheet上加入UIPickerView iOS8替换方案
此套替换方案採用"UIView+动画"方式实现(将UIActionSheet替换为UIView) 界面层级例如以下: 第一层:view(这一层充满整个屏幕,初始化时颜色为透明.us ...
- 【3005】拦截导弹问题(noip1999)
Time Limit: 3 second Memory Limit: 2 MB 某国为了防御帝国的导弹袭击,开发出一种导弹拦截系统,但是这种拦截系统有一个缺陷:虽然他的第一发炮弹能达到任意的高度,但是 ...
- Android屏幕信息获取
Android中有时需要获取屏幕的size信息以便对控件位置进行动态控制,最近做了一些研究,现在将获取屏幕大小信息的方法总结如下,可能存在一些地方理解的不全面. 1.getMetrics Displa ...
- [Vue] Create Vue.js Layout and Navigation with Nuxt.js
Nuxt.js enables you to easily create layout and navigation by replacing the default App.vue template ...
- 【AJAX】AJAX实现搜索信息自己主动推荐并补全
好久没有继续看AJAX的视频教程了,今天就将最后一个教程案例做完.我们在搜索引擎中输入文字时文本框下会提示对应的信息,这个案例就是实现这样的基本功能,代码比較粗糙还须要进一步完好,当中有些地方也须要向 ...
- p2p网贷系统的架构设计
p2p网贷系统,标准版已经初步完成了. 最近写点总结,也算是分享吧. 简介:p2p网贷系统,是理财类的互联网金融系统.核心功能,就是理财人用户注册,冲钱,然后投标,标到期之后,收到回款.如果不想 ...