如何为 ARM 平台构建 Tizen C# .NET 可穿戴 TPK 并发布到三星卖家门户?

How to build Tizen C# .NET Wearable TPK for ARM platform and publish to Samsung Seller Portal?

背景

我正在尝试将我的 Tizen Wearable .NET 应用程序发布到三星卖家门户。

我正在使用 Visual Studio 2017,Tizen 插件是最新的,并且可以 运行 我的应用程序在模拟器和真实设备 (Gear Sport) 上成功地使用我的作者和经销商证书。我的应用程序针对 Tizen 4.0。

Samsung 卖家门户需要发布二进制文件,但没有提供太多说明,因此我假设要获得此信息,我将在发布模式下重建解决方案,并正确设置证书配置文件。结果 TPK 文件位于 bin/Release 文件夹中。

检查 TPK 二进制存档,我看到了所有构建的 DLL、资源、清单等。

问题

我将此二进制文件上传到三星卖家门户并提交审核后,由于以下错误,它未能通过自动预审核:

[Defect] Application was built by x86 compiler. X86 means app run on Tizen emulator, not real target.

[Expected Result] Please configure Architecture to arm when you build app. Project properties -> C/C++ build -> Tizen settings and you can check architecture of your app filename.

e.g. org.example.app-1.0.0-arm.tpk e.g. org.exapmple.ap-1.0.0-x86.tpk

[Reference] In generally, Platform architecture automatically selected based on the test environment. If test device connected by USB, Tizen IDE selected arm architecture automatically but if emulator connected to sdb, Tizen IDE selected arm architecture automatically.

此处的说明毫无用处,因为我使用的是 Visual Studio 和 C# .NET,而不是 Tizen Studio 或 C++。

拒绝附有一个名为 gear_core_architecture.txt 的文件,其内容很简单:

Intel 80386[libSkiaSharp.so]

这个文件有问题吗?如果我检查发布的二进制 TPK 存档,我会在 bin/runtimes/linux-x86/nativebin/runtimes/tizen-armel/native 文件夹中找到 libSkiaSharp.so 文件。我根本没有在我的应用程序中使用 SkiaSharp,但我的 nuget 包可能是(Tizen.NET、Xamarin 等)。查看 Tizen-CSharp 示例项目,SkiaSharp 项目示例也在其 TPK 中包含这些库。


我在 Visual Studio 中到处查看,无法将任何解决方案或项目的平台类型更改为 arm。现在它只为 Any CPUx86x64 构建。我已将用于 ARM 和 ARM64 的 C++ 编译器从各个组件添加到 Visual Studio,但没有变化。手动创建 ARM 构建配置不会让我。

TL;DR

如何在 Visual Studio 2017 年为 ARM 平台构建 Tizen Wearable C# .NET 应用程序以发布到三星卖家门户?

在 Tizen 支持论坛上提出相同的问题会导致以下解决方案,在此回答以供日后其他人遇到此问题时参考。

参考: https://developer.tizen.org/forums/tizen-.net/unable-publish-c-tizen-.net-wearable-tpk-seller-portal


结果 TPK 中的 linux-x86 文件夹触发了三星卖家门户中的自动拒绝系统。

解决方案是将以下行添加到可穿戴项目 *.csproj 文件中的 属性 组,因此 tizen-armel 是唯一生成的行。

<RuntimeIdentifier>tizen-armel</RuntimeIdentifier>

示例:

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>tizen40</TargetFramework>
    <RuntimeIdentifier>tizen-armel</RuntimeIdentifier>
</PropertyGroup>

至于包含 libSkiaSharp.so 的是包裹 Xamarin.FFImageLoading.Svg.Forms