2015-10-02 66 views
0

我們有一個應用程序,我們希望上傳到具有不同應用程序標識的網站,這取決於它所在的環境。在項目中,我們有一個發佈預處理器宏集到MY_CONFIGURATION = $(MY_CONFIGURATION),我們在用戶定義的設置中將默認值設置爲3。在我們的定義中,我們根據宏定義分配了應用程序id字符串值,如果值未定義,我們也有回退值,使用值1.問題是當我們構建Jenkins時,腳本賦值(2 )被用戶定義設置(3)中的默認值覆蓋。從iOS中的shell腳本中定義預處理器宏值

下面是我們使用的build.sh文件

xcodebuild -scheme ${SCHEME} -sdk ${SDK} -destination generic/platform=iOS CODE_SIGN_IDENTITY="${PROFILE}" MY_CONFIGURATION="${BUILD_ENV}" build 

我知道正確的值被放置的行,從詹金斯的控制檯輸出顯示以下

10:58:46 + xcodebuild -scheme MGO -sdk iphoneos9.0 -destination generic/platform=iOS 'CODE_SIGN_IDENTITY=X' MY_CONFIGURATION=2 build 
10:58:47 Build settings from command line: 
10:58:47 CODE_SIGN_IDENTITY = X 
10:58:47 MY_CONFIGURATION = 2 
10:58:47 SDKROOT = iphoneos9.0 

構建上傳到正確的環境,在基於值集設置應用程序ID的代碼中構建#define將顯示默認值set(3)而不是腳本值set(2)。任何提示或幫助將不勝感激。

注:我也試過

xcodebuild -scheme ${SCHEME} -sdk ${SDK} -destination generic/platform=iOS CODE_SIGN_IDENTITY="${PROFILE}" OTHER_CFLAGS="-DMY_CONFIGURATION="${BUILD_ENV}"" build 

回答

0

我用xctool建立和它的作品完美。 我認爲它在您的情況下以相同的方式工作,您可以嘗試一下。這就是我所做的。

xctool -workspace productname.xcworkspace -scheme "$scheme" archive -archivePath $archivePath GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS="MY_CONFIGURATION=2 MY_ANOTHER_CONFIGURATION=1"

是什麼使得它的工作是GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS

GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS="MY_CONFIGURATION=2 MY_ANOTHER_CONFIGURATION=1"

你可以嘗試添加上述到命令這條線。確保該值是一個數字。嘗試使用字符串值時失敗。文檔中還有另一個相關關鍵字GCC_PREPROCESSOR_DEFINITIONS