2012年1月5日 星期四

移動程式開發101 (上)

文‧圖/何孟翰 2011/12/27 下午 04:13:55

而在今年開始,我們可以發現台灣的政府更積極的大力推動APP產業的開發。除了各式各樣的教育訓練與推廣之外,更有APP Star的軟體開發商新秀選拔大賽。除此之外明年政府更要開發APP園區來培育更多的人才。

事實上在CIO/RunPC中,我們也持續提供了移動式平台開發的技術文章,特別是在iOS/Android的平台上我們都是以一期為一個單元作某個特定功能的討論。在經過幾次的討論之後,我們決定開始一個新的單元,從各種不同的角度,探討移動式APP程式開發所需要具備的基礎知識,並且使用一些實際,簡單但是卻不失其一般性的例子來和讀者討論。希望對於更多想要跨入這個領域,特別本來並不是IT Pro的專業人士,例如文創藝術產業的讀者,也能夠在這系列的文章中了解如何參與這個APP龐大的商機。

時至2011年的年末,雖然說並沒有一個官方絕對準確的數值,但是依照大部份的移動廣告公司,或者是一些IT觀察機構的評論,現在使用手機的人口前兩名大概是Android系統和Apple的iOS。再來的其它系統大致上是黑莓機的RIM作業系統,微軟的WinPhone系統與Nokia的symbian(新機會變成WinPhone)。因此我們在這一系列的入門系列文章中,也將會以iOS和Android的開發為主,與各位讀者探討入門與實作時需要注意的實務。

雖然說Android和 iOS的市佔率終略不同,但不可否認,這兩者都有非常龐大的市場與商機。因此我們這一系列的文章中,將會以兩者並行的方式來介紹,以期讀者能夠融會貫通,能夠在不只是一個平台下找到自己的契機。

開發前的準備工作
對於單純以使用者角度的讀者,第一個想知道的應該是app的開發到底需要什麼樣子的軟硬體準備。因此讓我們用這篇文章一開始,來作一些基礎的討論。

開發Android所需要的軟硬體
Android是基於Java與Linux的一套移動式作業系統。所以你需要的是一個可以開發Java,並且最好是能夠使用Eclipse的一台電腦。基本上Eclipse就是一套開放源始碼的整合開發環境,可以允許你在這個編輯器底下撰寫Java相關的應用程式。因此如果你已經在開發其它的Java應用程式而且使用的是Eclipse,則你幾乎可以直接使用它來開發Android的應用程式(經過了適當的組態之後)。

也因為這是個開放的平台,所以不管你是在Linux, Windows和Mac OSX的環境底下都可以進行Android的開發。不過筆者由於時常和一些Android的開發學員進行互動,在此建議各位如果在開發時,還是要有比較大的記憶體。這樣在模擬器上的效能才不會太差。

另外有一點想要提醒的就是,雖然現在的Android手機裝置有非常多種,不管是平板,手機,從低階到高階的,從低解析度到高解析度都有,在選擇開發時的參考平台確實是需要花一些時間來考慮,但是筆者非常建議各位讀者在Android開發時請儘快的添購一台實際裝置。其中之一的理由是Android的模擬器的效能還是差了一大截,所以如果有一個實際的裝置,你可以在實際裝置下更有效率的看到結果。另一個很重要的理由是Android的模擬器有一些部份還是沒有辦法模擬出來,特別是影音的模擬部份。因此筆者會強烈建議如果你有開發Android的專案的計劃(特別是Android 3.X之後的版本 ),可以在剛開始就購入裝置並且實際部署。

同時值得一提的是,Android的實機部署(也就是將開發的應用程式部署至實際裝置)是很方便的。基本上只要經過適當的driver安裝,將android裝置用usb連線,就可以將應用程式安裝至實際裝置上。並且如果你想要作異地部署,你也可以直接將產生出來的apk檔案寄至該台裝置的gmail中,則就可以用郵件附檔的方式進行安裝,而不必再作任何的申請。
開發iOS所需要的軟硬體
iOS和Apple的OSX是系出同門的。開發的語言是Objective C,這種Objective C可以看作是一個C語言的超集合。同時它雖然有物件導向的精神,不過它和一般台灣的工程師比較了解的C++/Java還是有點不同。而在這個語言上面,開發iOS的應用程式所使用的框架稱為Cocoa Touch,這個框架其實就是一個特化的Cocoa框架,而Cocoa框架就是開發OSX的基礎類別。
雖然說Objective C不一定在OSX 底下才有實作,但是由於iOS的應用程式需要經過apple的審核才能上架,所以在此筆者建議有興趣開發iOS平台的讀者還是要準備一台Mac的OSX的機器。由於現在最新的iOS版本是iOS5,它所對應的XCode是4.2,所以你能運行的平台只有現在新的Intel為基礎的OSX平台,也就是Snow Leopard或者是最新的Lion系統。

相較於Android的開發,iOS的實機部署是比較有限制的。由於Apple的iOS本身的版權保護,所以原則上在正常的情況下,你是不能安裝非經授權的應用程式的。就算是你自己所開發撰寫的應用程式,要安裝到實際裝置上,還是要經過Apple的簽章,也就是說你必須要申請一組一年99USD的開發者授權(之後會再討論),才能夠得到100台實際裝置部署的權利。

雖然說乍看這個步驟似乎有點麻煩,並且造成測試上的一些不便,但是正由於apple的這個較為嚴謹的設計,你可以確保你所開發的工程模式測試軟體不會被未經授權的散佈。

然而讓筆者作個平衡說明。由於iOS和OSX的系出同門,所以iOS的模擬器在OSX底下效能真的是沒話講,而且模擬的完整度相較於android來說也是比較高的。因此如果在初期的 iOS應用程式建置,在沒有實際裝置(或者很多人是有iOS的裝置但沒有買開發者的授權),還是一樣可行的。事實上據筆者自己實測的結果,大致上模擬器和實際裝置在執行的結果上都有蠻一致的表現。只是在實際裝置上由於記憶體和硬體的機能限制,有時候會碰到記憶體不足,或者是要處理的資料量太大而在實際裝置上運行時較不理想的情形。因此在你真的完成app要準備上架之前,最好還是經過實際的部署測試才能確保結果的正確性。


相關的開發資源和網站

由於這些手持裝置的發展速度非常快,所以除了一些基礎的知識或許可以從一些坊間的書籍中取得之外,其實知道如何從正確的網站中取得資訊才是最新最快的。因此讓我們分頭來看看這兩個平台可以從哪裡取得相關的開發與實作的資源。


與Android有關的開發者網站
與android有關的資訊都以在http://developer.android.com ,在這個網頁你可以在主畫面看到幾個主要的資訊來源如圖1。



▲ 圖1 Android的開發者網站



事實上雖然你可以看到android developer的字樣,但是事實上它並不僅限於提供開發工程師需要的內容。舉例來說,在Target Devices你可以看到目前使用者的手機裝置比例如圖2。



▲ 圖2 Android裝置所佔有的比例。



這個比例指的是目前在Market上的使用者的分佈,所以用作開發時潛在的客戶的參考是很有價值的。

同時你也可以得到OpenGL和營幕解析度的使用者分佈圖,如果你有開發遊戲的需求,那你也可以來好好研讀一番。

當然,如果你需要安裝Android,那你就可以使用Download的link,開始下載Android的SDK準備上手實作,你可以在此處得到Android的SDK與ADT的外掛套件,再加上Eclipse和Java,你可以看到整個元件的部署如圖3。




▲ 圖3 Android開發的環境和部署



詳細的設定和細節之後我們會再和讀者討論,在此你可以專注在Android SDK和 ADT的下載上。
當然這個網站中還有許多開發相關的範例,文件和範例程式碼,我們在文章的進行中也會和讀者討論並且分享之中的內容。


與iOS有關的開發者網站
與iOS有關的官方網站首推developer.apple.com,當你在瀏覽器上打開它時,你可以看到它有iOS,Mac(也就是OSX)和Safari(也就是網頁元件)如圖4。




▲ 圖4 apple的開發者網頁



既然我們的系列文章是專注在iOS的開發上,請你按下iOS Dev Center,就可以進入iOS的開發者專區。此處有一個Login,你可以免費註冊一個帳號來使用。



▲ 圖 5 專屬iOS的開發者網頁



因此在這邊我們要和讀者溝通一個概念,事實上開發iOS的軟體本身是不需要付費Apple的開發者專案的。也就是說,就算你沒有一年花了99 USD,你一樣可以註冊這個developer的免費帳號,並且下載正式版的XCode開發環境來使用。

因此,如果你是一個付費的使用者,你會得到什麼樣外加的福利呢?其實主要說起來,除了你會有一年的上架期限之外,還有就是可以註冊100個裝置作為你的開發裝置。也就是說,你可以把100個親朋好友的裝置加到你的開發者帳號之中,這樣當你寫了應用程式之後,你就可以決定是不是要讓他們能夠測試。當然這樣子的測試只是暫時的,每一次的授權(伴隨著一組憑証)只有三個 月的期限。因此如果你想要真的將應用程式給予親朋好友,則有其它不同的方法,我們將在之後和各位再討論。

同時,如果iOS或者是 XCode有一些新的非正式版,工程版,beta版,那付費的開發人員會有存取的權限。也因此筆者是這麼解讀的,以iOS的開發者來說,或許一開始你不一定要去付那99USD一年的帳號,但是當你的應用程式準備上架而需要開如實機部署時,那你就很需要這組帳號。因為它可以讓你先在幾台實際的裝置上測試,並且有上架的權限。除此之外,你還會有兩個詢問apple技術問題的機會。並且當然在新的iOS作業系統版本發佈時,你會有優先權可以測試軟體的相容性。

當然在這個網頁上,你會看到有許多相關的文件說明,跟 iOS/XCode相關的文件事實上在安裝XCode之後都可以選擇性的下載進你的硬碟之中,不過在此處筆者特別要跟大家提醒一個很好的資源,你可以看到在這個畫面底下有一個WWDC 2011的link,請你點擊它之後會進入WWDC的專屬畫面。

WWDC的資源
WWDC是apple的年度開發者大會(World Wide Developer Conference)的縮寫,它有好幾年都在美國加州舉行。每年的票幾乎都是一開賣就賣完(至少去年跟今年都是這樣)。但是Apple在開發者大會結束之後,都會將高畫質的影片放出來供大家下載。因此你可以在跳出的畫面再次使用開發者的帳號登入,你會看到如圖6的畫面。



▲ 圖6 WWDC 2011相關的影片



請你注意看到左側,它會有平台的選取。預設是所有的iOS與OSX平台,你可以只勾選你感興趣的內容進行研讀,例如當你勾選了iOS,並且只專注在Core OS的核心作業系統內容上,你就可以看到只有8個相關的投影片。此處你就可以看到Apple在2011年中強調的內容,例如網路元件的一些由淺入深的說明。

除了使用這個網頁的信面,眼尖的讀者一定會看到它有View all in iTunes的一個符號,你也可以點擊它,則它會顯示iTunes的介面,你就可以選擇將它們下載之後,安裝進你的iPhone或者是 iPad中,帶著這些影片到處研究。

事實上不止是2011年的WWDC,你還可以輸入下列的網址http://developer.apple.com/videos/,則你可以看到如圖7的畫面。



▲ 圖7 其它的影片系列



你可以發現不止是WWDC 2011,還有WWDC2010的投影片。此處筆者的建議是各位都不妨可以閱讀一下。因為2010年正好是iPad剛推出的一年。在這一年中雖然我們都知道iPad從1變成2,也多了鏡頭,但是你可以發現在2010年的WWDC中事實上有很多主題是也很值得閱讀的。例如說現行的iOS開始加入了多工的概念,而這些在WWDC 2010年中也都有許多值得閱讀的地方。

沒有留言: