2017-10-09 182 views
0

我有一個包含四個目標的iOS項目,但似乎無法獲取特定目標的版本號。獲取特定目標的版本號

通過以下測試:

lane :beta do 
    puts get_version_number(scheme: 'myApp', target: 'myApp') 
    end 

我得到這樣的輸出:

[10:04:05]: -------------------------------- 
[10:04:05]: --- Step: get_version_number --- 
[10:04:05]: -------------------------------- 
[10:04:05]: Using deprecated option: '--scheme' (true) 
[10:04:05]: $ cd /Users/diego/myApp/ios && agvtool what-marketing-version -terse 
[10:04:05]: ▸ "myApp.xcodeproj/../myApp-tvOS/Info.plist"=1.0 
[10:04:05]: ▸ "myApp.xcodeproj/../myApp-tvOSTests/Info.plist"=1.0 
[10:04:05]: ▸ "myApp.xcodeproj/../myApp/Info.plist"=0.9 
[10:04:05]: ▸ "myApp.xcodeproj/../myApp Tests/Info.plist"=1.0 
[10:04:05]: 1.0 

返回的版本號是1.0,因爲在那裏我期待0.9 - 因爲我指定的schemetarget對於此目標:"myApp.xcodeproj/../myApp/Info.plist"=0.9

編輯

我已經安裝了這個plugin,它提供了對版本號和版本號的更精細控制。

+0

你明白了,因爲搜索中斷了 - 我得到了同樣的東西(也許你正在使用像我這樣的React Native)。查看'get_version_number'的代碼,另一種解決方案是使用已棄用的'scheme'字段來或多或少地進行硬編碼搜索。在你的情況下,'get_version_number(scheme:「myApp/Info」)'會起作用。 – zeh

回答

-1

以下是得到的版本號的方式:

目標C:

NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]; 

斯威夫特< 3:

let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String 

斯威夫特3:

let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String 

讓我知道你是否需要別的東西。

+0

謝謝,@tendstoZero,但我在詢問爲什麼它不能使用Fastlane(注意我在問題中添加了[fastlane]標籤。 – dbarros