原文: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-androidcordova-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.0cordova-android 6.3.0时,一切都会完美运行。但是这个版本对于某些插件来说太旧了,比如phonegap-plugin-push
  • 使用Cordova 7.1.0cordova-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仿真器相关的问题

有另一个问题?添加您的评论

我没有尝试过VS2017足够长的时间来找到所有与Cordova相关的问题。如果您遇到任何其他问题,请随时使用本页Disqus上的评论表单提交。如果我有时间,我会尽力帮助您或调查问题。

所有产品名称,徽标和品牌均为其各自所有者的财产。本网站使用的所有公司,产品和服务名称仅用于识别目的。使用这些名称,徽标和品牌并不意味着认可。

此条目发布在Apache CordovaVisual Studio on2018年5月12日

Visual Studio 2017 and Apache Cordova mobile apps | Andrés Zsögön的更多相关文章

  1. Install Visual Studio Tools for Apache Cordova

    Install Visual Studio Tools for Apache Cordova Visual Studio 2013   This article refers to the Visua ...

  2. Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一)

    基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android.iOS 和 Windows的 ...

  3. 配置 Visual Studio Tools for Apache Cordova

    原文:配置 Visual Studio Tools for Apache Cordova 1.连接地址 https://msdn.microsoft.com/zh-cn/library/vs/alm/ ...

  4. Visual Studio 2015 和 Apache Cordova 跨平台开发入门

    原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于V ...

  5. Visual Studio 2015 和 Apache Cordova

    英文原版:http://www.codeproject.com/Articles/860150/Visual-Studio-and-Apache-Cordova 在开始前,问一下自己下面这些问题: 熟 ...

  6. 在 Visual Studio中 使用Apache Cordova 开发安卓、iOS程序(自定义图标和闪屏)

    方法1 1台安装有linux的电脑,虚拟机也行,并安装imagemagick软件包.我用的是linux mint,直接在软件管理器中安装即可 把https://github.com/shamork/c ...

  7. 最强 IDE Visual Studio 2017 正式版发布

    Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...

  8. 终于等到你,最强 IDE Visual Studio 2017 正式版发布

    Visual Studio 2017 正式版发布,该版本不仅添加了实时单元测试.实时架构依赖关系验证等新特性,还对许多实用功能进行了改进,如代码导航.IntelliSense.重构.代码修复和调试等等 ...

  9. Visual Studio 2017 发布 附带下载地址

    链接: https://pan.baidu.com/s/1kFjGwyj5HwabvmJKiyLF_g 提取码: 关注公众号[GitHubCN]回复获取    winform框架源码-Devexpre ...

随机推荐

  1. WCF REST (一)

    最近工作中学习使用了WCF REST,REST 有很多好处 高效 简约  面向资源  而客户端调用 也变得非常简单.REST 入门的资料等 大家可以去网上找 这里主要分享下遇到的问题以及解决~ 一.环 ...

  2. 再记AE与AO的区别与联系

    原文地址:转:ArcObjects与ArcEngine作者:梦游   ArcObjects(简称AO),一般都是指ArcGIS Desktop版本的组件开发集,即需要安装ArcGIS桌面版软件后才能安 ...

  3. Altium Designer如何移动选中的所有对象

    用shift去选中, 快捷键M S移动整体

  4. js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键

    js进阶 12-8 如何知道鼠标和键盘当前操作的是哪个键 一.总结 一句话总结:event.which属性. 1.如何获取事件发生的时间? timeStamp属性 event.timeStamp 属性 ...

  5. get_mysql_conn_info.py

    #!/usr/bin/env python#-*- encoding: utf8 -*- import xlrd """此模块作用:从excel文件获取数据库连接信息,第 ...

  6. vmware之linux不重启添加虚拟硬盘

    转自http://www.shangxueba.com/jingyan/1610981.html #echo "- - -" > /sys/class/scsi_host/h ...

  7. 【例题5-1 UVA 10474 】Where is the Marble?

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 排序 用lower_bound找就可以了. ->lower_bound,如果里面所有的数字都比x小,那么它的返回值会越界! [ ...

  8. hdu3377之简单路径求最值

    Plan Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)

    Crazy Bobo Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others) Tota ...

  10. 借助gdb实现pstack

    pstack.sh: #! /bin/sh if [ -z $1 ] then echo "gdb script for print stack" echo "usage ...