Skip to content

Latest commit

 

History

History
174 lines (85 loc) · 3.28 KB

123.md

File metadata and controls

174 lines (85 loc) · 3.28 KB

写一个 Mac 应用

配置文件用 json

命令行要下载 jq, 因为命令行里面解析json用的是jq

brew install jq

如没有下载好 brew, 则自行Google, 百度

具体要解决问题和实现的功能

以 .xcodeproj 为主, 可以正常打包

还没弄

以 .xcworkspace 为主, 可以正常打包

可以

�有swift和无swift有什么影响?

没什么影响

项目有 Extension ??

用 project.pbxproj 文件里面的 每个 target 的 productType 能帮我们区分 extension 和target.

target.productType

com.apple.product-type.application: app
com.apple.product-type.app-extension: extension

要找到 app 绑定的 target 的话, 需要

  1. 获取extension的phases
target.buildPhases.isa == PBXCopyFilesBuildPhase

buildPhases 是数组

这里的 isa 有以下几种


根据 isa 执行来判断
                             
PBXShellScriptBuildPhase: 脚本
PBXSourcesBuildPhase: 源码资源
PBXFrameworksBuildPhase: framework
PBXResourcesBuildPhase: 资源文件
PBXCopyFilesBuildPhase: extension (系统默认 name: Embed App Extensions)

  1. 根据 phase 里面的 file, 获取对应的 target

上面获取到了 buildPhases
然后遍历 buildPhases.files
files.fileRef 就是对应 target.productReference

这样就能找到对应关联的 extension 的 target

  1. 设置 target 相关的 profile name 到 ExportOptions.plist 的 provisioningProfiles 字段中

如果自动签名, 这一步可以直接省略, 但是手动选择 profile 的话, 就需要这个

项目有多个 application target 要如何区分??

这个就不做多个target给他切换了, 自己想搞, 就直接改参数吧, 不然太麻烦了.

bitcode 关闭要配置什么吗?

不需要

同时打包多个应用会怎样???

定时打包.

profile

打包 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 

automatically manage signing

使用自动模式的时候, 会导致编译不了问题

error: exportArchive: No profiles for 'xxxx' were found

解决方法如下, 到处 ipa 包时, 设置为 true 即可.

-allowProvisioningUpdates true

Shell路径有空格..

一开始不知道会有问题, 后面检查了几遍才发现...
其实, 不单单路径, shell有空格最好都 ==""== 括起来

scheme

查看项目 scheme 列表命令行
注意, 要 cd 到项目路径下

xcodebuild -list

问题

有时候系统不会自动生成 .xcschemes 文件 ( 在 项目.xcodeproj/xcshareddata/xcschemes 路径下), 但是...用XCode又能打包, 用命令行却不行...

解决方法

没有太好解决方法, 利用 XCode 创建吧.

  1. 打开 XCode -> Edit Scheme
  2. 然后不用做啥操作, 直接点击右下角的 Close 这个时候就可以看到 Scheme 已经生成了
  3. 如果没生成, 尝试切换一下 Scheme , command + b 编译一下, 然后看一下项目的 *.xcodeproj/xcshareddata/xcschemes 路径下是否已经有 scheme 了