iOS .ipa 文件中 CI/CD 工具的参考

Posted

技术标签:

【中文标题】iOS .ipa 文件中 CI/CD 工具的参考【英文标题】:References for CI/CD tool inside iOS .ipa file 【发布时间】:2021-06-21 11:37:10 【问题描述】:

我正在开发的应用程序已经过审核,安全团队的担忧在于:因此,出于某种原因,如果我提取 .ipa 的有效负载,我能够确定使用了哪个 CI/CD 工具生成它。例如:

终端:

cd MyApp.app                         <- payload
strings * > ~/Desktop/file.txt

在文件里面我可以发现我们正在使用jenkins

/Volumes/jenkins-workspace/MyApp-Generic/MyApp/MyApp/SomeViewModel.swift

有没有人遇到过这个问题(如果我们可以称之为问题)?有没有办法从 IPA 中混淆或完全删除此类引用?

谢谢

【问题讨论】:

【参考方案1】:

该文件中是否有一个 fatalError() 调用?如果有,运行时会报告文件和行号。如果你真的需要 fatalError 调用,这里是 a way to fix that。

如果您的任何源文件中包含#file 编译器指令,它们将在可执行文件中记录文件的路径。

【讨论】:

在某些文件中我没有fatalError(),但我确实有很多日志。这可能有关系吗?【参考方案2】:

Swift 5.3 引入了一个 #fileID 标识符,它产生一个更短的 字符串比#file。 #fileID 字符串包含文件名和模块 名称,但省略了文件路径的其余部分;这节省了 空间,提高性能,并避免意外嵌入私有 二进制文件中开发人员的主目录名称等信息。 编译器生成的错误消息(如强制解包)和标准 像 precondition 和 fatalError 这样的库断言现在使用 #fileID 字符串,我们建议您在生产中使用它们而不是#file 代码。 (SE-0285, 65514304)

这几乎概括了我的问题。我在某些方法(主要用于日志)中使用#file 标识符,并且调用该方法的每个文件都将嵌入在应用程序二进制文件中。

参考:https://developer.apple.com/documentation/xcode-release-notes/xcode-12-release-notes

【讨论】:

以上是关于iOS .ipa 文件中 CI/CD 工具的参考的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins vs GitLab CI:CI/CD工具之战

iOS .app格式转.ipa格式

使用Xcode打包成ipa

ios企业版证书打包出来的ipa文件怎么安装

Gitlab CI/CD配置-并发送消息到飞书

iOS工具快速上传ipa文件到iTunes Connect