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 工具的参考的主要内容,如果未能解决你的问题,请参考以下文章