个人开发者账号真机调试
Tags
iOS
Date
Apr 26, 2021
这个标题,第一次见是在知乎的这个文章
知乎 iOS 客户端工程化工具 - Venom
知乎 iOS 客户端从一开始围绕问答社区到目前涵盖 Feed,会员,商业,文章,想法等多个业务线的综合内容生产与消费平台。项目的复杂程度已经在超级 App 的范畴。单周发布与业务并行开发也逐渐变成主流。同时在知乎 iOS 平台,技术选型一直也都比较开(sui)放(yi)。较早了引入了 Swift 进行业务开发,列表引入了需要 OC++ 的 ComponentKit 作为核心引擎。所以在这种多业务方团队,技术形态复杂,组件仓库数量多等场景下,也同样遇到了各种超级 App 团队都面临的一些问题。 问题如下: 当然在思考解决上面这些问题前,知乎 iOS 项目也同样经历过组件化的工作。与众多组件化拆分方案殊途同归,进行了业务划分,主仓库代码清空,业务线及 SDK 进行独立仓库管理。引入基于路由,基于协议声明的组件间通信等机制等,这里就不多赘述了。 核心介绍的项目名称为 Venom,灵感来源于电影《毒液》。Venom 的用户端是一款为开发人员打造 Mac App,应用内置了工程构建需要的全套 Ruby Gem 和 Cocoapods 等其相关构建环境。核心目标是解决工程构建,二进制构建,组件管理,调试工具等一系列开发过程中的繁琐耗时任务。 所以当一台全新的 Mac 电脑希望运行工程时, 只需要 3 步: 安装 Venom For Mac 客户端。 使用 Venom 打开工程点击 Make 按钮。 构建完成点击 XCode
 
notion image
短短一行,懂的都懂。
 
对于iOS开发,在稍大的企业里,由于开发人员和测试设备众多,管理困难,而且受苹果限制,所以一般使用企业证书构建内测包,开发人员使用自己的个人开发者账号,修改Bundle ID进行真机调试。
 
其实我也不确定知乎的这个具体是不是这个意思。
 
最近有同事误提交自己的个人开发者账号到主工程的Git仓库中,我想起来了就顺手做了这个。

1. 修改主工程target的build settings

首先将原来主工程写死的证书相关变量改为$(inherited)(或者直接删除这几行)
notion image

2. 创建debug_ignore.xcconfig

内容如下,可自由修改
DEVELOPMENT_TEAM = BQY57L9764
PRODUCT_BUNDLE_IDENTIFIER = com.dengweijun.DemoAutoSign
CODE_SIGN_STYLE = Automatic
PROVISIONING_PROFILE_SPECIFIER =

3. 增加post_install脚本

通过Podfile的几行Ruby脚本,增加includexcconfig
post_install do | installer |
  include_debug_xcconfig("DemoAutoSign", "debug_ignore.xcconfig")

  installer.pods_project.new_file("../debug_ignore.xcconfig")
end


def include_debug_xcconfig(target, file)
  target_file_path = "Pods/Target Support Files/Pods-#{target}/Pods-#{target}.debug.xcconfig"

  if File.exist? target_file_path
      target_content = File.read(target_file_path)
      include_content = "#include \"#{Dir.pwd}/#{file}\"\n" # 实测使用绝对路径可以避免偶然的Xcode异常 Bundle identifier is missing
      unless target_content.include? include_content
          target_content = include_content + target_content
          File.write(target_file_path, target_content)
      end
  end
end
pod install后,效果如下
notion image
notion image

4. 添加.gitignore

将这个debug_ignore.xcconfig文件添加到.gitignore,然后就可以自由修改自己的个人证书参数,不再产生不必要的Git改动。
 
搞定,收工。
 
Demo提交在Github,可以查看提交历史
 
最后,附上关于xcconfig的官方说明
以及非官方说明
💡
Xcode assigns inherited values in the following order (from lowest to highest precedence): Platform Defaults Xcode Project xcconfig File Xcode Project File Build Settings Target xcconfig File Target Build Settings
 

Loading Comments...