前提
-
由于历史原因我们的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 的形式来声明,key
是bundle
的名称,value
是需要包括的文件的通配patterns
。
patterns
中**/
表示任何子孙目录,*.文件格式
表示任何名字的这种格式的文件 -
resource_bundle
用来指定一个bundle -
resource_bundles
可以指定多个bundle - 可以参考这篇文章的的讲解