Cordova Windows 10原生插件

3
我有一个 Cordova 项目,其中添加了 Windows 10 平台。我还有一个原生插件,构建为Windows运行时组件 (https://github.com/apache/cordova-plugin-globalization)。在调试模式下它运行良好,但尝试制作应用程序包以提交到商店时却出现了奇怪的问题。
首先,在 .jsproj 文件中,UseDotNetNativeToolchain 被设置为 false,如果我使用该配置创建应用程序包,则商店会抱怨缺少 Windows.Net.Core。我发现这意味着我需要启用 .net native,所以我这样做了。当我提交这样的 .appx 包时,商店会抱怨:“您不能提交预编译的 .NET Native 包。请上传 Store appxupload 文件并重试。”而我没有这个文件。
经过一些探索,我尝试使用 MSBuild 在没有 Visual Studio 的情况下创建 appxupload 文件。我成功地组成了一个命令,可以生成 .appxupload,这是通过这些命令参数完成的:/p:Platform=x86;Configuration=Release /p:UapAppxPackageBuildMode=CI /target:Clean;Publish。现在商店没有抱怨,应用程序通过了认证,但安装时失败。看起来 .net native 没有正确地打包插件所需的本机组件(.winmd、.dlls)。实际上,当我只是启用 .net native 并以发布模式编译时,我发现这些组件没有被包含。
我必须提到 Cordova 的构建命令失败了,因为它通过将应用程序 ID 设置为标识名称来搞乱 appxmanifest 文件,而这对于该字段无效。我找不到任何正式的方法来做到这一点,所有的例子都是针对简单的 hello world 应用程序,没有包括原生插件。所以我想知道是否可能构建使用 .net native 的 Cordova 项目并生成有效的 .appxupload 包?

你使用的VS Cordova工具版本是什么?我们已经为Windows打包进行了许多错误修复。请确保您正在使用最新版本。(声明:我在Visual Studio中为Apache Cordova工具工作)。 - Michael Braude
另外,如果您还没有使用Cordova 5.3.3,请尝试切换到该版本(因为5.4.1与VS TACO Update 4存在一些问题)。 - Michael Braude
我之前使用的是 Cordova CLI 5.2.0。现在将更新到 5.3.3 并尝试使用它。只是想指出,我并不会为所有 Cordova 平台使用 Visual Studio,我是通过 Cordova CLI 添加了 Windows 平台,然后在 Visual Studio 中打开了 Windows 项目。这样做可以吗?我怀疑这样做是否正确,因为我现在并不对其他平台感兴趣。另外,我不确定如何检查 VS Cordova 工具的版本。 - stipe
好的,为了简化操作,从模板开始创建一个新的Cordova应用程序,将Windows目标设置为10,然后制作应用程序包以供商店使用。你有得到.appxupload文件吗?因为我没有,我认为它应该像win 8.1一样创建它们。下一个问题是,当我构建一个作为运行时组件的插件时,其中有两个.dll文件,这些文件不会被包含在发布包中。 - stipe
2个回答

1
我已经通过从.projitems文件中删除Store Association文件并将其添加到.jsproj文件中解决了这个问题。之后,Visual Studio再次生成.appxupload文件。 此处提供额外的帮助: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/9b4cc8dc-c87b-4f62-a244-8d115683560b/appxupload-file-is-not-generated?forum=wpdevelop 从.projitems中删除:
<None Include="$(MSBuildThisFileDirectory)Package.StoreAssociation.xml" />

添加到 .jsproj:
<ItemGroup>
  <None Include="Package.StoreAssociation.xml" />
</ItemGroup>

0

我遇到了与cordova-plugin-websql插件相同的编译错误。我编辑了jsproj并将所有UseDotNetNativeToolchain设置为false。之后,本地编译始终启动(用于商店包的发布编译)。 我使用不同的cordova插件进行了相同的编译测试,但似乎只要插件引用winmd文件,就会启动本地编译。


1
在为商店生成软件包时,不要关心本地编译。最重要的是检查是否生成了appxupload文件。请参考此链接:https://blogs.windows.com/buildingapps/2015/08/20/net-native-what-it-means-for-universal-windows-platform-uwp-developers/。如果没有appxupload,请参考此链接:http://blogs.msdn.com/b/wsdevsol/archive/2016/01/09/windows-store-app-projects-stopped-generating-the-appxupload-file-after-installing-vs-2015-update-1.aspx。 - Jerome Guignard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接