Just a Computer Graphics Studio & My Life

Posts tagged ‘xcode’

[iOS] 版本號:Version和Build

一個有在更新版本的App,有時候需要判斷版本號,在Xcode中的設定有VersionBuild,有個別的用途,端視開發者怎麼定義。

Xcode Build Number2

那麼程式中如何取得這兩個值?

Version:在plist文件中的key是“CFBundleShortVersionString”,標識應用程序的發布版本號,和AppStore上的版本號保持一致。該版本的版本號是三個分隔的整數組成的字串。第一個整數代表重大修改的版本,比如實現新的功能或是重大變化的修訂。第二個整數表示修訂版本,實現比較突出的特點。第三個整數代表維護版本。

Build:在plist文件中的key是“CFBundleVersion”,標示(發布或者未發布)的內部版本號。這是一個單調增加的字符串,包括一個或者多個分割的整數。

To get App version:

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

To get Build version:

NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

儘管有普遍的定義,還是能自己決定怎麼定義版本字串,像Build我就會用當天日期定義。

參考:How can my iphone app detect its own version number?自動更改建置號碼iOS项目中的version和build、。

廣告

[iOS] 開放資料之中國石油

只要會開車騎車的人,都會想知道現在的油價,現在中國石油開放資料可供串接,然而規格是我從來沒碰過的SOAP,這塊「肥皂」比起簡潔的JSON複雜多,於是我還要借助開源來幫我處理~

ios-%e9%96%8b%e6%94%be%e8%b3%87%e6%96%99%e4%b9%8b%e4%b8%ad%e5%9c%8b%e7%9f%b3%e6%b2%b9
(繼續閱讀…)

[Xcode] iOS 裝置支援 (iOS Device Support)

我使用固態硬碟的Macbook Air最近又常出現「空間不足」警告,可以參考我先前文章:Mac硬碟空間不足問題,那次有提到Xcode中的衍伸資料 (DerivedData),存放著我多年以來的專案暫存檔,數量之多佔據容量超過10GB

現在我發現另一個空間更加肥大的原因,就是iOS 裝置支援 (iOS Device Support),因為我有在開發iOS App,時常需要拿實機做測試,當我開著Xcode等待,它會自動去判斷有無支援此裝置的作業系統,比如iOS 9.3.1、iOS 10.0.1,只要沒有該版本的支援,Xcode會從手機下載支援擋到預設路徑如下圖:

ios-device-support2

以至於空間再怎麼多,也會被這些作業系統支援檔給塞滿,所以我決定刪除比較不會用到的版本。

ios-device-support

Xcode連結實機時,會出現上圖進度狀況,表示它正在從裝置下載作業系統支援檔到我的筆電。

我發現越高的作業系統支援檔容量越大,像iOS 10.0.12.9GB

註:檢索筆電各檔案容量的軟體是OmniDiskSweeper

參考:自己的經驗、Mac硬碟空間不足問題

[Swift] Xcode 8 beta 初體驗

回憶上篇文章Xcode 6 beta 初體驗已是兩年前的事,今日就來Xcode 8 beta 初體驗,試用一下這一版的Playground。

以下是以Quick Sort為例,Swift 3的語法真的有變異,有幾行code出現紅字,依照指示修改後就能執行。

於是要重新熟悉Swift囉:P~

Xcode 8 playground quick sort.png

想用Swift學習演算法的人,可以參考下列連結喔~

參考:/swift-algorithm-club

[iOS] 應用查詢格式 (Application Query Schemes)

看這標題應用查詢格式 (Application Query Schemes)不知在表達啥咪,那就用白話文解釋⋯⋯就是我們的App想要跳轉到他人App時,所要遵從的規範。在iOS 9之後Apple更改遊戲規則,必須在info.plist注明我們想要跳轉的格式,不然程式就會報錯:

This app is not allowed to query for scheme

比如我想要跳轉到Google Map App,我會在程式碼中設定開頭:

comgooglemaps://

iOS 9以後就要在info.plist加入:

iOS Application Query Schemes plist.png

果真加入後立馬編譯執行,就能跳轉到Google Map App,而不是到App Store App的Google Map App頁面呢~

參考:[iOS] 使用Google Map導航[iOS] 使用Google Map顯示地點、Google SDK –
Google 地圖 URL 配置canOpenUrl – This app is not allowed to query for scheme instragram iOS9

[Xcode] 自動更改建置號碼

開發App迭代十分快速,時常要更改版本號碼Version Number建置號碼Build Number,如此容易區隔每個版本,測試員回報問題也能輕易對照。

Version Number制定規則比較直覺,一直都是從1.0.0開始,feature有大更新就變2.0.0,feature只有小變動就改2.1.0,bug偶爾修掉就微調為2.1.1。

Build Number可以怎麼做呢?我習慣將它設定為日期+時間,比如今天日期:160324・時間0111,合起來就是1603240111,當收集到Crash報告bug清單,對照Git版本控制,就能知道當時的問題所在!

過去我們都是手動去更改BN,現在有更聰明的作法,就是在Xcode的Build Phases加入Run Script,接著按編譯(Command + B),就能在General的Build看到自動更換為當時的日期時間。

加入這幾行Run Script就好囉⋯⋯

timestamp() {

    #date +" at %H:%M:%S on %m/%d/%Y"

    date +“%y%m%d%H%M"

}

buildNumber=$(/usr/libexec/PlistBuddy -c “Print CFBundleVersion" “${PROJECT_DIR}/${INFOPLIST_FILE}")

buildNumber=$(timestamp)

/usr/libexec/PlistBuddy -c “Set :CFBundleVersion $buildNumber" “${PROJECT_DIR}/${INFOPLIST_FILE}"

看不太懂沒關係,反正這只設定那麼一次XD~

Xcode Build Number

設定Run Script

Xcode Build Number2

編譯後Build自動變更

[Xcode][iOS] 除錯平台印出中文字

時常用Xcode除錯的工程師都知道,Xcode對中文字還不是很友善,因為除錯時印出的內容,中文字都會變成以\U為開頭的編碼,如:

\U900d\U9059\U6587\U5de5\U4f5c\U5ba4

儘管知道這是中文字,但實在很難確認這行代表什麼字啊⋯⋯

好在總是有解決方案,我強者同事阿宅,找到解法更發揚光大,讓任何人只要引用自訂Category,之後在Xcode除錯平台上必能如實顯示中文字!

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: