如下是使用Microsoft Visual Studio 2017尝试使用适用于Android,iOS和Windows的HTML,CSS和JS 开发Apache Cordova移动应用程序时可能遇到的一些问题。出于这些和其余缘由,我更喜欢继续使用Visual Studio 2015,它没有提到任何问题。
android
再也不支持Windows Phone 8.1
我最不喜欢Visual Studio 2017的一件事是您没法再编译Windows Phone 8应用程序。只有很是通用的 UWP(通用Windows平台)应用程序能够编译和部署,如平台定位文章中所述:ios
此版本不支持Windows Store 8.1和8.0以及Windows Phone 8.1和8.0的项目。要维护这些应用程序,请继续使用Visual Studio 2015。git
这意味着随VS2017提供的UWP 10只能编译适用于Windows 10和Windows 10 Mobile的应用程序,但不能编译Windows Phone 8.目前仍有数百万台Windows Phone 8.1设备在使用,所以要保持它们与您之间的良好兼容性应用程序将确保您得到更多用户。github
使用Visual Studio 2015 和Windows Phone 8.1 SDK,您能够经过在config.xml设计器中选择Windows目标版本:Windows 8.1来编译与Windows Phone 8.1和Windows 10 Mobile兼容的 UWP 。apache
坚持使用Cordova 6.3.1工具集
自VS2017发布以来,Visual Studio中的Cordova 工具集一直停留在Cordova CLI 6.3.1中,而且未提供进一步的更新。这意味着你会遇到愈来愈过期的Cordova 6.3.1 CLI,以及旧版本的cordova-android和cordova-ios工具:windows
可是,您可使用全局安装的CLI版本,如Cordova 7.1.0:app
这种方法的问题在于,当您增长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 :
此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模拟器。这可能很是使人沮丧。
不幸的是,将自定义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日。