【问题标题】:How to find link to a non-public framework in a Xamarin.Mac app如何在 Xamarin.Mac 应用程序中找到指向非公共框架的链接
【发布时间】:2020-02-17 13:18:23
【问题描述】:

我们正在向应用商店发布一个 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】:

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

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

    作为构建的一部分,我们会生成一个 .pkg 文件,以及一个 .app 文件(例如 OurApplication.应用程序OurApplication-1.0.pkg)。

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

    OurApplication.app/Contents/MacOS

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

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

    otool -L OurApplication | grep "PrivateFrameworks"

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

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

    我们通过将“链接器行为”设置为“Framework SDKs Only”并打开“Ahead-of-time (AOT) 编译”删除了该引用(并因此解决了问题)程序集”在我们的项目设置中。

    【讨论】:

    • 您对 AOT 有哪些设置?有一个组合框和一个复选框。
    • 我们目前在 AOT 组合框中设置了 All 并选中了 Enable hybrid AOT compiler 复选框
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多