【问题标题】:Sharing a JSON file between iOS and Android projects在 iOS 和 Android 项目之间共享 JSON 文件
【发布时间】:2018-01-31 00:44:24
【问题描述】:

我继承了一个 Xamarin 项目(不是 Xamarin.Forms),现在它具有三个主要组件。

一个 iOS 项目、一个 Android 项目,最后是一个共享项目(不是 PCL 也不是 .Net 标准项目)。

尽管有共享项目,但应用程序会读取每个项目的资产文件夹中包含的 json 文件。该文件是重复的。我觉得这个文件应该在共享项目

为了澄清,这是结构:

共享项目

没有资产

iOS

资源/test.json

安卓

资产/test.json

我相信test.json 文件应该作为一个文件存在于共享项目中。我的第一步是进行此操作,并将文件更改为适用于 iOS 项目的Build Action=Content。然而,Android 项目似乎没有得到这个文件。我在编译和归档的 .apk 文件中的任何地方都找不到它。

对此我有什么办法吗,还是我需要接受这个设计缺陷并构建一个 .Net 标准库或 PCL?如果是这样,您究竟如何为非 Xamarin.Forms 项目制作 .Net Standard 或 PCL。

【问题讨论】:

  • 不是设计缺陷,只是每个平台处理“内容”的方式。共享“文件”而不包含每个特定于平台的应用程序(或库)的一种方法是将其作为 .Net 程序集资源嵌入到 NetStd/PCL 库中,并将该库包含在每个应用程序中。就我个人而言,我强烈反对在程序集中使用嵌入式资源永久消耗内存,并在每个应用程序项目中创建符号链接到解决方案的中心位置,并使用平台特定的捆绑选项...
  • 不不不,我不是说这样的设计缺陷!我的意思是我继承的应用程序的开发方式。
  • hahahahah,好的.. ;-) .... 共享项目确实有它们的好处,包括减少程序集以减慢应用程序启动时间 ;-)

标签: xamarin xamarin.ios xamarin.android


【解决方案1】:

您的用例是什么?如果您只需要在运行时读取 test.json 并使用 .NET 代码对其进行解析,则可以使用嵌入式资源,详细信息在这里:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/files/

如果您需要将文件放入 iOS 资源/Android 资产文件夹,您可以将 test.json 文件仅保留在解决方案中一次(在共享项目中或作为解决方案项)并将其添加为两个 iOS 的链接和 Android 项目 - 这是如何在 Visual Studio 中执行此操作的屏幕截图。

您也可以在 Visual Studio for Mac 中执行此操作 - 右键单击​​解决方案资源管理器中的包含文件夹,选择添加文件,您将收到以下提示 - 选择添加文件链接

【讨论】:

  • 每天学习新东西。我不知道您可以在 Visual Studio 中添加为链接......我会玩这个。而且我不是 100% 确定用例是什么。正如我提到的,我继承了这个应用程序,所以我试图准确地了解它是如何构建的,并尝试在我看到它们时解决问题,而不会深入研究它。我查看了您提供的链接,似乎代码非常特定于 Xamarin.Forms,或者我未能包含缺少的组件。我也会对此进行探索!
  • 经过审查,链接是解决我具体问题的完美解决方案。它运行良好!谢谢。
  • @Rakshasas 您使用哪种方法从 Share 项目中加载 .json 文件?我和你有同样的情况,但无法在 Android 上读取文件。在 iOS 上,它运行良好。谢谢你:)
  • @Lapinou 我在共享项目中没有 Json。问题在于您无法为这两个项目正确选择资源类型。我所做的是为“共享内容”创建另一个文件夹并放置在那里。我将该文件夹中的项目添加为解决方案文件夹中的项目,以便于访问。然后,在 iOS 资源中,我使用 spatialguy 告诉我的方法添加了链接。在 Android 中,我在 Assets 文件夹下做了同样的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 2023-02-02
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
相关资源
最近更新 更多