近期项目中引用gRPC,导致通过命令行编译生成的文件和路径出错。之前未引用gPRC之前用的是:
xcodebuild -configuration Release
但是因为gRPC要使用cocoapods,所以会生成一个xcworkspace,这个时候之前的命令就不会生效
这个是时候需要重新改动打包脚本,另外需要知道scheme名称,通过如下命令可以查到当前包含的所有scheme名称
xcodebuild -workspace YourProject.xcworkspace -showBuildSettings -list
正常来说可以获得如下结果:
Information about workspace "YourProject":
Schemes:
!ProtoCompiler
!ProtoCompiler-gRPCPlugin
abseil
BoringSSL-GRPC
gRPC
gRPC-Core
gRPC-gRPCCertificates
gRPC-ProtoRPC
gRPC-RxLibrary
Pods-SGInputAssistant
Protobuf
YourProject
YourProject
这个时候,我们会发现有两个scheme 的名称完全一样,所以,这个时候,如果我们输入scheme的名字,他会执行第一个scheme,不会生成我们实际的scheme名称,在此处,目前想到的办法,在Xcode里面找到Manage Schemes,然后将自己工程的名字改成一起其他的,左键单击修改即可,如下图你可以改成自己工程的
这个时候,同样可以使用 上面的showbuilding -list查看修改后的结果,这个时候再执行命令:
xcodebuild clean -workspace YourProject.xcworkspace -scheme YourProject1 -configuration Release
这个时候我们发现是可以编译成功的,但是最后文件放在目录是在/Library/Developer/Xcode/DerivedData/SGInputAssistant-fxxhtctprwvchjchhrfopwbnejaf/Build/,其实我们实际需要并不是在这儿,我们需要在当前工程的目录下生成一个build文件下,类似单个工程的xcodebuild。通过查找系统api,发现需要添加一个derivedDataPath属性,完整命令如下:
xcodebuild -workspace YourProject.xcworkspace -scheme YourProject1 -configuration Release -derivedDataPath build
最后就可以成功了