为什么ios应用程序可以在DEBUG模式下与App Group(共享文件夹)一起使用,但不能在RELEASE模式下使用?我在发布时丢失了 entitlements.plist 吗?

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

我现在已经在3个应用程序中成功实现了应用程序组共享文件夹。 其中之一与我现在使用的应用程序几乎相同。 这些是 Xamarin.Forms 应用程序,我正在使用 Visual Studio。

从 Visual Studio 中,我“调试”有问题的应用程序(或者在调试部署后运行),并且共享文件夹工作正常。 但是在“发布”模式下构建并发送到 TestFlight,App Group 文件夹似乎不存在。

这是我的代码:

try {
    savedLog += $"Util[iOS].ctor - Atttempt to get Group folder" + "\r\n";
    var FileManager = new NSFileManager();
    savedLog += $"Util[iOS].ctor - FileManager={FileManager}" + "\r\n";
    var appGroupContainer =
        FileManager.GetContainerUrl("group.com.pronktech.mobilize");
    savedLog += $"Util[iOS].ctor - appGroupContainer={appGroupContainer}" + "\r\n";
    groupFolderPath = appGroupContainer.Path;
    savedLog += $"Util[iOS].ctor - groupFolderPath={groupFolderPath}" + "\r\n";
} catch (Exception ex) {
    savedLog += $"Util[iOS].ctor - Exception on getting groupFolderPath, ex={ex.Message}" + "\r\n";
}

这是之后的“savedLog”:

Util[iOS].ctor - Atttempt to get Group folder\r\n
Util[iOS].ctor - FileManager=<NSFileManager: 0x3015b7e60>\r\n
Util[iOS].ctor - appGroupContainer=\r\n
Util[iOS].ctor - Exception on getting groupFolderPath, ex=Object reference not set to an instance of an object\r\n

因此,FileManager.GetContainerURL() 似乎返回一个空字符串。

更新:在写完之后,在发布之前,一个理论已经形成:entitlements.plist 文件不能在发布模式下应用吗? 在查看 appstoreconnect.com 上元数据的差异时,很明显元数据存在无法解释的差异,包括没有

“com.apple.security.application-groups:(“group.com.mycompany.myapp” )”

仅供参考,两个应用程序中的 entitlements.plist 文件完全相同(除了 keychain-access-groups 中对其标识符的引用)。

ios xamarin xamarin.ios
1个回答
0
投票

这是完全的驾驶舱错误 - 就像@piepants所说,在构建设置中,在“iOS Bundle Signing”下,“自定义权利”条目被清除。 浏览到“Entitlements.plist”,现在元数据与这方面的其他应用程序相匹配。

我仍然有点困惑——我还有其他一些“权利”,比如无线配件配置,但没有这个似乎并没有导致问题。

© www.soinside.com 2019 - 2024. All rights reserved.