xamarin - 如何在 Xamarin.Mac 应用程序中查找指向非公共(public)框架的链接

标签 xamarin app-store app-store-connect xamarin.mac

我们正在向应用商店发布一个 MacOS 应用,它使用 Xamarin.Mac 和 Xamarin Forms。在 App Store Connect 的审核过程中,我们的应用二进制文件已被拒绝,原因如下:

您的应用程序链接到以下非公共(public)框架: 框架:/System/Library/PrivateFrameworks/Network.framework/Versions/A/Network

我们如何才能找到在我们的应用程序中使用此框架的位置,以便我们可以将其删除?

我们的应用程序是通过将 .apk 文件发布到应用程序商店来发布的,但我认为我们可能必须在 .apk 或其中一个 .dll 文件中进行搜索 - 是否有关于如何找到位置的建议在我们的应用程序中,此引用来自何处?

我们被推荐使用“strings”或“otool”来提供帮助 - 是否有示例说明如何在我们的案例中使用这些来查找和删除用法?

最佳答案

在此处发布答案,因为我们设法弄清楚了如何检测引用的框架。也感谢这个 Xamarin 线程:

https://forums.xamarin.com/discussion/94838/xamarin-mac-linker-behavior-appstore-rejection

作为构建的一部分,我们生成一个 .pkg 文件,还有一个 .app 文件(例如 OurApplication.appOurApplication-1.0.pkg)。

可以打开 *.app 文件来查看里面的文件结构,方法是在 Finder 中选择文件,然后在选项下选择“显示包内容” .这意味着在终端中打开,我们可以导航到该位置:

OurApplication.app/Contents/MacOS

其中包含一个 Unix 可执行文件:OurApplication

这是我们需要运行 otool 的文件,使用以下命令:

otool -L OurApplication | grep "PrivateFrameworks"

我们终于可以在上面看到我们引用的框架。 (请注意,忽略命令的 grep 部分会显示所有框架,因此应用过滤器很有用)。

这使我们能够测试不同的build设置以删除框架,而无需每次都提交给 Apple。

我们通过将“链接器行为”设置为“仅限框架 SDK”并打开“提前 (AOT) 编译”来删除引用(并因此解决了问题)程序集”在我们的项目设置中。

关于xamarin - 如何在 Xamarin.Mac 应用程序中查找指向非公共(public)框架的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60263356/

相关文章:

java - 将 Java 匿名回调类转换为 C#

ios - 上传应用图片 : "Invalid GeoJSON: Your routing app coverage file is invalid."

iphone - 在提交到 App Store 之前确定 iOS 应用程序的文件大小

ios - 如何为我的应用添加几种语言?不是描述

c# - 如何从 Genymotion 连接到 MySql

c# - 安卓 Xamarin C# : Https with ServiceStack and self signed certificates

visual-studio - xamarin 的设计 View 在 visual studio 2019 中不可用

ios - 通过应用商店发布时,Apple 会向我的 .ipa 添加多少 MByte?

iOS 应用程序传输 - 捆绑 ID 不可用

ios - 在审查应用程序时无法将测试人员添加到 Test Flight