Just a Computer Graphics Studio & My Life

Posts tagged ‘xcode’

[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除錯平台上必能如實顯示中文字!

(繼續閱讀…)

[iOS] 大小類別 (Size Class)

大小類別 (Size Class)iOS 8新釋出的類別,主要目的是想要解決設備歧異的問題,透過實作Size Class,我們可以減少許多客製設備類別 (iPhone、iPad)與螢幕大小 (iPhone:3.5吋、4吋、4.7吋、5.5吋,iPad:7.9吋、9.7吋)的程式碼!還有之所以推出,是為了因應未來有更多不一樣螢幕大小的產品(如Apple Watch),所以若能採用Size Class便可減輕開發負擔!

Size Class

其分為普通(Regular)緊密 (Compact)兩個種類(class)。開發者便可以無視實際的尺寸,而是對這兩類和它們的組合進行適應。這樣不論在設計時還是程式碼上,我們都可以不再受限於實際的尺寸,而是變成遵循尺寸的視覺感官來進行適應。

(繼續閱讀…)

[Xcode] 前編譯標頭檔 (Pre-Compile Header)

更新到了Xcode 6,新建立的專案不再預設.pch檔,之前都將時常用到的class放置.pch檔,讓專案下所有的class都能引用,如今Xcode 6取消預設,我們該怎麼自行建立?

前編譯標頭檔 Pre-Compile Header4

我們可以看到Xcode 5所預設建立的.pch檔位置在專案檔的下一層,路徑就找到囉~

(繼續閱讀…)

標籤雲

%d 位部落客按了讚: