分发静态库libProject.a是否需PrivacyInfo.xcprivacy?还是复用应用级文件?
静态库(libProject.a)与PrivacyInfo.xcprivacy分发指南
1. 是否需要随库分发PrivacyInfo.xcprivacy?
需要。从iOS 17、macOS 14开始,苹果要求所有包含隐私敏感API调用的二进制文件(包括静态库)必须提供对应的隐私声明。只要你的libProject.a调用了需要权限的隐私API(比如相机、位置、相册等),就必须附带PrivacyInfo.xcprivacy文件——否则客户集成后提交App Store时大概率会被审核拒绝。
2. 具体怎么搭配分发?
- 把
PrivacyInfo.xcprivacy和libProject.a打包在一起发给客户,同时在集成文档里明确要求:必须将这个文件添加到他们的主应用目标中(注意是主应用,不是静态库目标,因为静态库最终会合并进主应用二进制,自身不会生成独立产物)。 - 同时要在文档里列清楚静态库涉及的所有隐私权限条目,方便客户核对,避免漏加。
3. 让客户自己在应用的PrivacyInfo.xcprivacy里补条目够不够?
这么做理论上能满足合规要求,但并不稳妥。
- 如果客户能准确补全所有静态库涉及的隐私条目,最终应用的隐私声明是没问题的。但问题在于,静态库可能调用了一些不明显的隐私API(比如某些和时区、广告追踪相关的调用),或者依赖的第三方组件有隐私行为,客户很容易遗漏,导致App Store审核被拒。
- 更靠谱的方式是直接给客户提供预定义好的
PrivacyInfo.xcprivacy文件,让他们直接添加到应用中,同时允许他们根据自身应用的需求合并或调整条目(比如应用本身还有其他隐私权限需要声明)。
4. Xcode 15.2静态库目标的适配注意事项
虽然XC Framework是更优的长期方案,但既然你用的是静态库目标,核心要确保静态库的隐私声明最终能合并到主应用的隐私声明里:
- 你自己构建静态库时,就算在项目里加了
PrivacyInfo.xcprivacy,Xcode也不会把文件内容嵌入到静态库的符号表中。所以必须单独分发这个文件,让客户手动添加到主应用目标。 - 提醒客户:添加文件后,要确认
PrivacyInfo.xcprivacy的Target Membership只勾选主应用,勾选静态库目标是没用的——因为静态库不会生成独立产物,相关配置不会生效。
内容的提问来源于stack exchange,提问作者TheDarkMatter
相关产品推荐
相关产品推荐

