配置文件用 json
命令行要下载 jq, 因为命令行里面解析json用的是jq
brew install jq
如没有下载好 brew, 则自行Google, 百度
还没弄
可以
没什么影响
用 project.pbxproj 文件里面的 每个 target 的 productType 能帮我们区分 extension 和target.
target.productType
com.apple.product-type.application: app
com.apple.product-type.app-extension: extension
要找到 app 绑定的 target 的话, 需要
- 获取extension的phases
target.buildPhases.isa == PBXCopyFilesBuildPhase
buildPhases 是数组
这里的 isa 有以下几种
根据 isa 执行来判断
PBXShellScriptBuildPhase: 脚本
PBXSourcesBuildPhase: 源码资源
PBXFrameworksBuildPhase: framework
PBXResourcesBuildPhase: 资源文件
PBXCopyFilesBuildPhase: extension (系统默认 name: Embed App Extensions)
- 根据 phase 里面的 file, 获取对应的 target
上面获取到了 buildPhases
然后遍历 buildPhases.files
files.fileRef 就是对应 target.productReference
这样就能找到对应关联的 extension 的 target
- 设置 target 相关的 profile name 到 ExportOptions.plist 的 provisioningProfiles 字段中
如果自动签名, 这一步可以直接省略, 但是手动选择 profile 的话, 就需要这个
这个就不做多个target给他切换了, 自己想搞, 就直接改参数吧, 不然太麻烦了.
不需要
打包 App Store 包出现这个问题
error: exportArchive: No "iOS App Store" profiles for team 'xxx' matching 'xxx' are installed.
其实就是 .plist 里的 provisioningProfiles 字段, 里面的 appid 要对应 profile 的名称
profile 在这个路径下面找
/Users/你的用户名/Library/MobileDevice/Provisioning\ Profiles
使用自动模式的时候, 会导致编译不了问题
error: exportArchive: No profiles for 'xxxx' were found
解决方法如下, 到处 ipa 包时, 设置为 true 即可.
-allowProvisioningUpdates true
一开始不知道会有问题, 后面检查了几遍才发现...
其实, 不单单路径, shell有空格最好都 ==""== 括起来
查看项目 scheme 列表命令行
注意, 要 cd 到项目路径下
xcodebuild -list
有时候系统不会自动生成 .xcschemes 文件 ( 在 项目.xcodeproj/xcshareddata/xcschemes 路径下), 但是...用XCode又能打包, 用命令行却不行...
没有太好解决方法, 利用 XCode 创建吧.
- 打开 XCode -> Edit Scheme
- 然后不用做啥操作, 直接点击右下角的 Close 这个时候就可以看到 Scheme 已经生成了
- 如果没生成, 尝试切换一下 Scheme , command + b 编译一下, 然后看一下项目的 *.xcodeproj/xcshareddata/xcschemes 路径下是否已经有 scheme 了