思路與實現:一個人如何獨立完成一款雙端App
作為一名獨立開發者,經常需要掌握各方面的技術與方法,無論是構思還是設計還是開發,都需要自己一個人去完成。
這時候,利用一些省力高效的訣竅便可以事半功倍,下面小編就來和大家分享一下小編的作品《跑車之家》的開發過程。
【靈感篇】
小編是名汽車迷,尤其是效能車、跑車迷,突然就想起做一款炫酷的跑車展覽App,讓使用者以一種欣賞的方式去了解跑車。
首先想到的展覽方式就是比較流行的卡片式滑動瀏覽,類似於蘋果的CoverFlow設計,但是這樣並不能較好地對汽車品牌進行分類,於是想起了之前在Github上見到的一份開原始碼SFFocusViewLayout,這種listview的效果非常符合我的需求,高大上又簡便。
於是簡單地在紙上繪製了大概的效果(不要問為什麼這麼醜,黑白是做了閾值處理)
然後,筆者習慣性地用PS繪製了基本UI效果圖,至於為什麼不採用其他原型繪製軟體,因為不會。
接著是命名,原諒我實在是沒什麼創意地命名為《跑車之家》。
【資料篇】
構思好App的基本模型後,問題來了:資料呢?
常見的跑車應該也有五六十種吧,一個個去百度整理資料會要命的。
自然而然地想起爬蟲,至於爬哪個網站,哈哈當然是最有名的汽車之家咯。
於是用Python的Scrapy爬蟲框架快速寫了一個汽車資訊爬蟲,遺憾的是汽車之家對爬蟲作了限制,無法爬到資料。不過對於單頁面的內容,並難不倒我。
把網頁儲存到本地
由於對汽車之家預設的圖片不滿意,追求完美的我,不得不一一去百度搜索跑車照片,挑選角度合適的一一下載下來儲存,這個只能手動了,花了不少時間。
資料整理成csv後,匯入到了資料庫,然後自然就需要製作API介面咯。
理論上採用最原始的php語句就可以完成,因為功能就2個:獲取汽車品牌、獲取品牌下的所有汽車。
但是由於不利於管理和後期升級維護,我還是採用了簡潔明瞭的ThinkPHP框架,安裝部署,幾分鐘就完成了後臺介面。
【開發篇】
至此,準備工作已經完畢,開始動手開發吧!
筆者選擇了先做iOS,因為iOS通常效果要好一些:)
筆者不是個資深技術研究猿,在有開源框架的前提下,一般就懶得再去自己重寫了。
於是,萬能的Github大顯身手了,為了實現分類和卡片,分別在引用了以下開源框架:
SFFocusViewLayout (實現首頁分類)
https://github.com/fdzsergio/SFFocusViewLayout
CardSlide (實現卡片滑動)
https://github.com/DavidWangTM/CardSlide
當然,還有常用的AFNetworking、SDWebImage等。筆者習慣性採用OC編寫,還沒做好接受Swift的準備,在開發過程中基本沒有遇到什麼難題,花了大半天順利完成了iOS端。
然後是安卓端,筆者之前一直都在用老掉牙的Eclipse,至於為什麼不採用AndroidStudio,因為有一次反覆安裝失敗,導致失去信心...
這次筆者直接下載的AndroidStudio的bundle,無需配置,解壓即用。
由於不熟悉環境,筆者請教了朋友關於Gradle的基本使用方法後,發現和iOS中的Cocoapods很像,用起來非常爽。
對應的,再次在Github上尋找開源庫(懶人天堂),這次沒有那麼順利,反覆尋找試驗了多個框架後最終才確定下來:
FocusResize (實現首頁分類)
https://github.com/borjabravo10/FocusResize
RecyclerViewPager (實現卡片滑動)
https://github.com/lsjwzh/RecyclerViewPager
實際使用效果發現,同樣的佈局效果,在安卓上的體驗和蘋果比起來不是差了一點半點,不知道是框架的問題還是系統問題。
這裡遇到一個問題,FocusResize這個庫最低需求為API19,讓我很不爽,一怒之下取消Gradle引用,直接複製了程式碼,然後最低API改成14,發現也沒有什麼區別,順利使用(手動無語)。
於是,又花了1天(熟悉下AndroidStudio)時間完成了安卓版的開發。
【上架篇】
最後《跑車之家》App效果如圖
總體效果筆者自己還是比較滿意的。然後就要對應上架了,由於廣告行業的下滑,筆者已經沒有興趣再去新增廣告了,安卓端索性沒有加廣告,順利通過各平臺的稽核。
蘋果端由於友盟統計使用了廣告識別符號,必須要新增廣告,否則不能通過稽核,於是自己模擬了一個閃屏廣告,推廣了下自己其他的App......
5天后(蘋果說2天稽核的怎麼還是那麼慢),順利上架蘋果商店。
【總結篇】
《跑車之家》只是一款無聊的小應用,唯一的特點可能就是展現方式比較炫酷吧,但是作為開發者,還是付出了很多心血的,尤其是當所有內容都需要你自己去完成的時候。
這就是獨立開發者的生活,苦逼,又充滿樂趣。
我熱愛開發,熱愛新的事物,樂在其中。
喜愛開發的朋友,歡迎一起交流哦!