使用 Google MLKit cocoapods 的 iOS Ad-hoc 分发

Posted

技术标签:

【中文标题】使用 Google MLKit cocoapods 的 iOS Ad-hoc 分发【英文标题】:iOS Ad-hoc Distribution with Google MLKit cocoapods 【发布时间】:2020-11-13 12:34:40 【问题描述】:

在我的 ios 应用程序中使用 Google MLKit 框架时遇到问题。我使用 Ad-hoc OTA 分发在选定的测试设备上测试应用程序。在我通过 cocoapods 添加Google MLKit 之前,它工作得很好,我不确定是什么原因。一切都正确编译,存档生成时没有错误,但是当测试人员想要下载应用程序时,它会在“安装”阶段崩溃并显示“无法安装...”警报。

我已经尝试过的几件事:

将 pod 嵌入类型从“嵌入并签名”更改为“嵌入但不签名” 将 Release 方案的 pod Build Settings 中的签名从“Apple Developer”更改为“Apple Distribution” 在 MLKit pod 中启用和禁用 Bitcode

奇怪的是,它可以从我用来直接从 Xcode 测试它的设备上的 Ad-hoc OTA 正确下载(但我在从服务器下载之前删除了该应用程序)但在任何其他设备上都不起作用.

【问题讨论】:

苹果有一个叫做“console”的mac应用,不记得有没有默认安装。获取其中一台无法使用的设备,在打开控制台的情况下将其连接到您的 Mac。尝试进行安装,详细的错误应该显示在控制台中。如果它在您的设备上运行而不是在其他人的设备上运行,则可能是某种签名问题,例如您的手机上安装了其他人没有的证书。 谢谢@SimonMcLoughlin!这给了我更多的信息。错误说:“无法验证 /var/installd/Library/Caches/com.apple.mobile 的代码签名......。找不到此可执行文件的有效配置文件。”。有没有办法为 Pod 添加我的临时配置文件,以便它们可以在 Ad-hoc 分发中工作?当我在 Xcode 中检查此框架时,它会显示:“Provisioning Profile: None Required” 使用 cocoapods 时,您不需要修改任何这些设置。当您包含 cocoapods 时,它会为您提供一个工作区并将您的项目放入其中。您应该在工作区上设置配置文件和团队等。这样做和所有默认的 cocoapods 设置都应该没问题 也许可以重新开始你的项目以避免任何冲突的设置,除非这个 pod 有一些独特的东西(应该在他们的设置指南中提到),你不应该用豆荚。使用 cocoapods 查看我的项目,当我选择项目并在常规选项卡中选择主要目标时。我的 cocoapods 框架“Pods_.framework”设置为“Do Not Embed”。你上面提到你的设置为嵌入,也许这就是问题 非常感谢@SimonMcLoughlin,检查“不嵌入”解决了这个问题!您可以输入它作为我的问题的答案,以便我将其标记为已解决,好吗? 【参考方案1】:

要查找具体的错误详情:

苹果有一个名为“console”的mac应用程序,不记得它是否默认安装。获取其中一台无法使用的设备,在打开控制台的情况下将其连接到您的 Mac。尝试进行安装,详细的错误应该显示在控制台中。如果它在您的设备上运行而不是在其他人的设备上运行,则可能是某种签名问题,例如您的手机上安装了其他人没有的证书。

解决配置问题:

转到您的项目,在常规选项卡下选择主要目标。向下滚动到“框架、库和嵌入式内容”。确保名为“Pods_|project-name|.framework”的 cocoapods 库设置为“Do Not Embed”

【讨论】:

以上是关于使用 Google MLKit cocoapods 的 iOS Ad-hoc 分发的主要内容,如果未能解决你的问题,请参考以下文章

MLkit 人脸检测不适用于 android 的前置摄像头

如何为 MLkit 面部检测实现 CMSampleBuffer?

Google 登录 CocoaPods 已弃用

Google 登录 CocoaPods 在 Swift 中安装?

MLKit Firebase android - 如何将 FirebaseVisionFace 转换为图像对象(如位图)?

Cocoapods Google Analytics ld:找不到框架