记一次pod本地库升级的问题

前提

  • 由于历史原因我们的UMengSDK使用的是本地库的方式导入的,相关SDK放在我们项目根目录下的UMengSDK目录下:
    如下图:


  • Podfile中指定了UMengSDK的path,如下图:


升级

  • 由于Apple对隐私信息管控的升级 , UMengSDK需要在其相应SDK中添加PrivacyInfo.xcprivacy文件, 接入UMengSDK的App为了通过Apple审核,就需要升级UMengSDK到包含PrivacyInfo.xcprivacy文件的版本。
  • 通常对于pod直接导入的三方库我们,直接修改版本就行,对于使用pod导入本地库的我们也是直接下载相应版本的SDK然后直接将老的SDK替换掉就行。
  • 为了迎合Apple审核,这次我们需要把使用的下图中的版本

    替换为包含PrivacyInfo.xcprivacy文件的下图中的版本
  • 我就是这么替换的

问题

  • 替换之后,打包后使用工具扫描,发现包里并没有PrivacyInfo.xcprivacy文件,也就是PrivacyInfo.xcprivacy并没有打进去。因为我们本地库中的UMengSDK.podspec文件中并没有将PrivacyInfo.xcprivacy文件pod进去的配置

    所以,PrivacyInfo.xcprivacy文件不会作为资源被pod导入,更不会打进包里。

解决

  • 我们需要在UMengSDK.podspec文件中对PrivacyInfo.xcprivacy进行配置,使其被pod导入我们的项目,进而被打进包里。
    对其配置如下:


    然后再执行pod install,重新打开项目,就可以看到相应的SDK中都导入了PrivacyInfo.xcprivacy文件

  • 再次编译项目招到打包产物,显示包内容就可以看到相应的budle了。
    通常我们可以在Xcode中左侧导航栏中的product目录下找到对应的打包产物


    对打包的产物进行显示包内容就可以看到对应的bundle

    对bundle显示包内容,就可以看到PrivacyInfo.xcprivacy文件了

resource_bundle 和 resource_bundles 的使用

  • resource_bundle/s 允许定义当前 Pod 库的资源包的名称和文件。用 hash 的形式来声明,keybundle 的名称,value 是需要包括的文件的通配 patterns
    patterns**/表示任何子孙目录,*.文件格式表示任何名字的这种格式的文件
  • resource_bundle 用来指定一个bundle
  • resource_bundles 可以指定多个bundle
  • 可以参考这篇文章的的讲解
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容