【问题标题】:Sharing dynamic frameworks between ios main app and extension在 ios 主应用程序和扩展程序之间共享动态框架
【发布时间】:2017-09-11 19:12:53
【问题描述】:

我有一个 ios 应用程序及其照片扩展程序。我有一些主应用程序和扩展程序都需要的动态框架。但是我正在努力以一种可以将应用程序上传到 iTunes 连接的方式使动态框架对主应用程序和共享应用程序都可用。我的应用程序的最终 ipa 的打包结构如下所示:

MyApp.app/Frameworks – 我在此文件夹中复制所有必需的动态框架,作为复制文件构建阶段的一部分

MyApp.app/Plugins/MyAppPhotoExtension.appex/ - 包含扩展程序的可执行文件和它所需的其他资产。

我尝试了以下方法来为扩展提供所需的动态框架:

  1. 创建一个文件夹 MyApp.app/Plugins/MyAppPhotoExtension.appex/Frameworks 并在此处创建符号链接到 MyApp.app/Frameworks 主应用程序中存在的动态框架。

这很好用,并且扩展程序能够在运行时找到框架。但是在将此 ipa 上传到 iTunes 时,出现以下错误:

ERROR ITMS-90035:“无效签名。密封资源丢失或无效

错误 ITMS-90206:“捆绑包无效。'MyApp.app/PlugIns/MyAppPhotoExtension.appex' 中的捆绑包包含不允许的文件 'Frameworks'。”

  1. 创建文件夹 MyApp.app/Plugins/MyAppPhotoExtension.appex/Frameworks 并在此处复制所需的动态框架。所以ipa里面有一些动态框架的2个副本。但现在我在将 ipa 上传到 iTunes 时遇到以下错误:

ERROR ITMS-90685:“CFBundleIdentifier 冲突。iOS 应用程序“MyApp.app”下存在多个具有 CFBundleIdentifier 值“[某个值]”的包。”

错误 ITMS-90205:“无效的捆绑包。位于 'MyApp.app/PlugIns/MyAppPhotoExtension.appex' 的捆绑包包含不允许的嵌套捆绑包。”

错误 ITMS-90206:“捆绑包无效。'MyApp.app/PlugIns/MyAppPhotoExtension.appex' 中的捆绑包包含不允许的文件 'Frameworks'。”

谁能告诉我在主应用程序及其扩展程序之间共享动态框架的正确方法是什么?扩展应该能够在运行时找到所需的动态框架。 有没有人这样做过,并将应用成功上传到 iTunes?

【问题讨论】:

    标签: ios app-store-connect itunes ios-app-extension ios-frameworks


    【解决方案1】:

    如果您想在您的应用程序和扩展程序中使用相同的框架,您应该在您的 Podfile 中创建一个新目标,并将您的框架安装到那里......在您项目的同一个 podfile 中

     target 'Name Of Your Extension' do
             pod  'Alamofire'
     end
    

    【讨论】:

      猜你喜欢
      • 2019-03-29
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2017-09-12
      • 2017-09-01
      相关资源
      最近更新 更多