我们正在向应用商店发布一个MacOS应用程序,该应用程序使用Xamarin.Mac和Xamarin表单。在App Store Connect的评审过程中,我们的应用程序二进制文件被拒绝的原因如下:
应用程序链接到以下非公共框架:框架: /System/Library/PrivateFrameworks/Network.framework/Versions/A/Network
我们如何找到这个框架在我们的应用程序中使用的位置,以便我们可以删除它?
我们的应用程序是通过将.apk文件发布到应用程序商店中发布的,但我认为我们可能需要在.apk或.dll文件中搜索--对于如何在应用程序中找到这个引用的来源,有什么建议吗?
有人建议我们使用“字符串”或"otool“来提供帮助--在我们的例子中,有如何使用这些来查找和删除这些用法的例子吗?
发布于 2020-03-10 17:52:06
在这里发布答案时,我们设法找到了如何检测引用的框架。多亏了这个Xamarin线程:
https://forums.xamarin.com/discussion/94838/xamarin-mac-linker-behavior-appstore-rejection
作为构建的一部分,我们生成一个OurApplication.app .pkg文件,但也生成.app文件(例如,和OurApplication-1.0.pkg). )。
可以打开*.app文件来查看内部的文件结构,方法是在查找器中选择该文件,并在选项下选择“ShowPackageContent”。这意味着终端的开放,我们可以导航到以下位置:
OurApplication.app/Contents/MacOS
它包含一个Unix可执行文件:OurApplication。
这是我们需要使用以下命令运行otool的文件:
otool -L OurApplication | grep "PrivateFrameworks"
在这里我们终于可以看到上面我们所引用的框架。(请注意,忽略命令的grep部分将显示所有框架,因此应用筛选器是有用的)。
这使得我们可以测试不同的构建设置来删除框架,而无需每次都提交给Apple。
我们删除了引用(并因此解决了问题),将我们的“链接器行为”设置为"Framework “,并在我们的项目设置中打开”预付编译程序集“。
https://stackoverflow.com/questions/60263356
复制相似问题