近期項目中引用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
最後就可以成功了