【问题标题】:Apple blocks Xamarin application on iOS using SDWebImageApple 使用 SDWebImage 在 iOS 上阻止 Xamarin 应用程序
【发布时间】:2020-01-19 20:13:39
【问题描述】:

添加 Xamarin.SDWebImage 后,Apple 会阻止该应用程序。

您的应用使用或引用以下非公共 API:

  • LinkPresentation.framework
  • QuickLookThumbnailing.framework

App Store 不允许使用非公共 API,因为 如果这些 API 发生变化,可能会导致糟糕的用户体验。

在未来提交的 此应用程序可能会导致您的 Apple Developer 终止 帐户,以及从 App Store 中删除所有相关应用。

这是我使用的包:

  ....
 <package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="xamarinios10" />
  <package id="System.Xml.XDocument" version="4.3.0" targetFramework="xamarinios10" />
  <package id="Xam.Plugin.Connectivity" version="3.1.1" targetFramework="xamarinios10" />
  <package id="Xamarin.Build.Download" version="0.4.10" targetFramework="xamarinios10" />
  <package id="Xamarin.Firebase.iOS.Analytics" version="4.0.5.1" targetFramework="xamarinios10" />
  <package id="Xamarin.Firebase.iOS.CloudMessaging" version="2.0.8.1" targetFramework="xamarinios10" />
  <package id="Xamarin.Firebase.iOS.Core" version="4.0.13.1" targetFramework="xamarinios10" />
  <package id="Xamarin.Firebase.iOS.CrashReporting" version="2.0.0.5" targetFramework="xamarinios10" />
  <package id="Xamarin.Firebase.iOS.InstanceID" version="2.0.8" targetFramework="xamarinios10" />
  <package id="Xamarin.Google.iOS.Maps" version="2.5.0" targetFramework="xamarinios10" />
  <package id="Xamarin.SDWebImage" version="4.4.7" targetFramework="xamarinios10" />
</packages>

【问题讨论】:

  • 尝试将链接器设置设置为Link Framework SDKs Only,如果这不起作用,请尝试将其添加到项目中的 Additional mtouch arguments 输入中:--linksdkonly --linkskip=LinkPresentation --linkskip=QuickLookThumbnailing
  • 我使用 >> Link Framework SDKs Only
  • 它应该适用于两者
  • 它最终工作了吗?
  • @Saamer 作为答案添加您为解决此问题所做的工作

标签: ios xamarin sdwebimage


【解决方案1】:

所以几天前我刚刚在一个新项目中遇到了这个问题,收到拒绝通知,告诉我我的应用使用或引用了以下非公共 API:- LinkPresentation.framework 和 QuickLookThumbnailing.framework。

他们警告我:

在未来提交的 此应用程序可能会导致您的 Apple Developer 终止 帐户,以及从 App Store 中删除所有相关应用。

所以这是非常严重的。但他们也为我提供了更多有用的信息:

如果您无权访问库的源代码,则可以 使用“strings”或“otool”命令行搜索编译后的二进制文件 工具。 “字符串”工具可以输出方法列表 库调用和“otool -ov”将输出Objective-C类 结构及其定义的方法。这些工具可以帮助您缩小 在有问题的代码所在的位置。您也可以使用“nm” 工具来验证是否有任何第三方库正在调用这些 API。

所以,我打开了我的解决方案 Visual Studio->右键单击 iOS 项目->查看存档->右键单击我发布的存档并“在 Finder 中显示”->右键单击 XCARCHIVE 文件和“查看包内容”。在那里,我看到了许多可以使用这些命令行工具的文件夹。

然后,我回到我的 Visual Studio 并在我的项目选项中将链接器设置设置为仅链接框架 SDK,并将其添加到我的 iOS 项目选项中的附加 mtouch 参数输入中:--linksdkonly --linkskip=LinkPresentation --linkskip=QuickLookThumbnailing

然后我重新存档,发现新存档的大小要小得多。我还比较了两个 XCARCHIVE 文件的包内容,发现新存档的 msyms 文件夹的子文件夹也少了很多。

在对拒绝的回复中,我告诉他们我错误地归档了该应用程序,我将使用新的归档文件重新提交该应用程序。在我使用新存档重新提交应用程序后,他们在短短几个小时内批准并发布了应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多