如何在Xamarin.Mac应用程序中找到非公共框架的链接

问题描述 投票:1回答:1

我们正在将MacOS应用发布到使用Xamarin.Mac和Xamarin Forms的应用商店中。在App Store Connect的审核过程中,由于以下原因,我们的应用程序二进制文件已被拒绝:

您的应用应用链接到以下非公开框架:框架:/System/Library/PrivateFrameworks/Network.framework/Versions/A/Network

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

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

我们建议使用“字符串”或“ otool”来提供帮助-是否有示例说明如何在我们的情况下使用它们来查找和删除用法?

xamarin app-store app-store-connect xamarin.mac
1个回答
0
投票

在此处发布答案,因为我们设法确定了如何检测所引用的框架。还要感谢这个Xamarin线程:

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

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

可以通过在Finder中选择文件并在选项下选择“ 显示包内容”来打开*。app文件以查看其中的文件结构。这意味着在终端中打开,我们可以导航到以下位置:

OurApplication.app/Contents/MacOS

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

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

otool -L OurApplication | grep "PrivateFrameworks"

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

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

我们通过将“链接器行为”设置为“ 仅框架SDK

,然后在其中打开“ 提前(AOT)编译程序集”,删除了引用(并解决了问题)。我们的项目设置。
© www.soinside.com 2019 - 2024. All rights reserved.