1. 程式人生 > >歷久而新,我的新書《第二行程式碼》已出版!

歷久而新,我的新書《第二行程式碼》已出版!

本文同步發表於我的微信公眾號,掃一掃文章底部的二維碼或在微信搜尋 郭霖 即可關注,每天都有文章更新。

回顧

《第一行程式碼》從出版到現在已經有兩年多的時間了。當然,如果是從我開始寫書的那天算起的話,時隔已經三年半之久了。回顧這三年半的時光,不得不感慨,Android 技術的發展真是日新月異。

記得在2013年我剛開始動筆寫《第一行程式碼》的時候,Google正好推出了新的開發工具Android Studio,不過那個時候還只是 v0.1 版本。當時我還和我的編輯陳冰老師討論過,書中到底是使用Eclipse來開發還是使用Android Studio來開發。最後討論下來,由於Android Studio還太過於早期,不夠成熟和穩定,因此《第一行程式碼》中還是使用Eclipse來作為開發工具的。而如今,三年多的時光,Android Studio已經從0.1版本升級到2.2版本了,並且早已替代了Eclipse,成為當前最主流的Android開發工具。

《第一行程式碼》全書的完稿時間大概是在2014年的3月份,而就在5月份的一天早上,陳冰老師急匆匆地打我電話,說出大新聞了!我疑惑地問:“什麼大新聞啊?”他說:“啊?你不知道啊,Android出5.0系統了!(那個時候還叫Android L)”我當時聽了之後腦子是有點懵逼的,要知道,《第一行程式碼》是基於4.x系統來編寫的,谷歌從2011年釋出4.0系統以來,一直是以4.1、4.2、4.3、4.4這樣的小版本系統來升級的,怎麼偏偏就在《第一行程式碼》快要發售的時候推出了這個號稱是“歷史上版本改動最大”的系統升級呢!

當時我和陳冰老師還是緊急商討了一下,由於《第一行程式碼》計劃是8月份上市,如果非要強行加入5.0系統的內容,一是我學習需要時間,二是寫作也需要時間,這樣書的發售就必然要推遲了。後來我們覺得,新系統剛剛出來,普及恐怕還要很久,就不趕這波熱潮了。於是,《第一行程式碼》中的內容最終仍然是基於Android 4.x來編寫的。

後來這兩件事讓我始終覺得遺憾,由於時間的原因,《第一行程式碼》完美地和Android Studio以及Android 5.0錯過了。

成績

雖說缺少了一些最新的知識點,包括後來還出現了盜版氾濫的事件,不過這些都沒能影響《第一行程式碼》火爆的銷售。其實並不是因為我推廣做得有多好,大家可能覺得我的部落格訪問量比較高,在上面掛個推廣連結什麼的就能讓書暢銷了,並沒有那麼簡單。

《第一行程式碼》在2014年的銷量其實很一般,是在2015年才攀升上去的。那個時候很多第一批《第一行程式碼》的讀者已經把書讀完了,產生了良好的口碑,他們又將這本書推薦給了更多想學習Android開發的人。這種人傳人的方式,比我單純在部落格上面掛個購買連結以及出版社的各種宣傳要遠遠有效得多。如果真是一本大爛書,相信不管我怎麼推廣,也不會有多好的銷量的,反而還會被大家罵。只有真正內容過硬,才能得到大家的認可。

現在,只要你去大一點的書店或圖書館逛一逛,在裡面都能找到《第一行程式碼》的身影。京東或者亞馬遜的暢銷排行榜,《第一行程式碼》在Android圖書分類裡大多數的時候銷量都是排第一的。良好的口碑讓很多人將《第一行程式碼》作為學習Android的首選書籍,現在將它稱之為國內的“Android學習第一書”應該並不為過。

那麼《第一行程式碼》到底賣了多少本呢?之前我還從來沒有公佈過具體的數字,那麼由於要出版升級版了,可以向大家彙報一下成績了。很多沒接觸過圖書行業的人,對於書的銷量可能沒什麼概念,這裡我先向大家普及一些知識。首先中國的圖書行業並不是很發達,因為喜歡買書的人確實不多,而計算機圖書又由於受眾面很窄的原因,買的人就更少了。現在的不少計算機圖書甚至是連首印都賣不完,能賣到一萬本以上的計算機圖書就可以算得上是暢銷書了,能賣到三萬本的話那已經是鳳毛麟角了。陳冰老師當時拍胸脯跟我保證說,《第一行程式碼》至少能賣兩萬本,我笑笑說,能賣到一萬本我就心滿意足了。而現在,《第一行程式碼》出版兩年半的時間,一共賣出了八萬一千本,這個成績是當初誰都無法預料到的。在圖靈出版的所有原創書中,《第一行程式碼》是賣得最好的。

新的開始

《第一行程式碼》雖然沒有趕上Android Studio和Android 5.0的熱潮,但同時這幾年Android技術發展得實在是太快了。2015年Google推出了Android 6.0系統,2016年又推出了Android 7.0系統。其實每推出一個新的系統,也就意味著《第一行程式碼》中的內容更加過時。因此在今年年初的時候,我終於下定決心,將書中的內容全面升級,開始編寫《第一行程式碼——Android 第2版》。當然這個名字感覺有點長,因此我更喜歡直接叫它《第二行程式碼》

新書的首要目標是要將《第一行程式碼》中已經過時的內容進行更新,以及加入這幾年出現的各種新技術的講解。包括Android Studio的使用,以及Android 5.0、6.0、7.0系統中引入的各種新的功能。

由於書的整體內容結構沒有改變,因此一開始我以為只是小修小補而已,但事實上遠沒有我想象得那麼輕鬆。除了介紹新知識點之外,書中之前的所有專案都需要重新編寫和測試,以保證程式碼在新老系統上的相容性。另外,由於Android從5.0系統開始,UI風格變化很大,因此《第二行程式碼》中所有的截圖都需要重新擷取,沒有一張圖是可以直接使用《第一行程式碼》中的。毫不誇張地說,我幾乎重寫了整本書。

這次的新書我大概是在今年2月份的時候開始動筆的,基本保持著每個月寫3章的進度,到9月份的時候書中絕大部分的內容都已經寫完了,然後我就開始等,等Android 7.0以及Android Studio 2.2正式版的釋出。因為我不想重蹈覆轍,再留上次的遺憾,我不想書中的內容都是基於Android 6.0來編寫的,而書還沒來得及上市,Android 7.0系統就推出了。既然是要更新,那麼就索性一次性更到最新。

Android 7.0其實還好,大概是在9月初的時候就推出正式版了,但當時Android Studio 2.2的正式版真的等得我好焦急,每天我都要到官網上去刷一下看看有沒有釋出。終於在9月下旬的時候把Android Studio 2.2給盼來了,於是我迅速對全書的所有內容進行了一遍修訂,並將所有的程式碼都在Android 7.0和Android Studio 2.2中進行了重新的適配。10月份的時候全書順利完稿並且進入出版流程,11月初送廠印刷,11月底開始預售,這個速度恐怕已經是史無前例了。

因此,《第二行程式碼》也是國內第一本基於Android 7.0系統的書籍。

內容

《第二行程式碼》中的內容我相信很多人都會非常感興趣,因為裡面確實加入了很多很新的知識。略粗概括一下的話,新增內容就包括有Android StudioGradleMaterial Design執行時許可權多視窗模式RecyclerView百分比佈局Lambda表示式OkHttpDoze模式等等,幾乎囊括了Google近幾年推出的所有熱點技術。除此之外,還加入了幾個比較完整的專案,不僅單個知識點的內容更加豐富,對各知識點之間的綜合運用講解也比《第一行程式碼》要好上很多。總而言之,這真的是我寫得非常用心的一本書。

下面我就挑幾個《第二行程式碼》中比較有特色的章節來給大家詳細介紹一下吧。

第1章中搭建開發環境不再是使用Eclipse了,而是改用了Android Studio。書中除了對Android Studio的基本用法進行了講解之外,還介紹了一些小技巧,比如說下面的這種Log列印技巧我相信很多人是不知道的:

第3章中,新增了RecyclerView百分比佈局的講解,其中對ReyclerView的多種方法都進行了細緻的介紹,包括會帶著大家實現縱向列表、橫向列表、以及瀑布流列表的效果,下面是瀑布流效果的截圖:

另外,第3章中還將最佳實踐環節的聊天介面使用RecyclerView進行了重寫,最終效果如下:

第7章中增加了Android 6.0執行時許可權的講解,第8章中對系統通知的各種用法進行了更新,第9章中增加了OkHttp的講解,第10章中結合前面所學過的執行時許可權、通知、OkHttp等知識,實現了一個綜合度非常高下載服務程式,並且應我的QQ群中群友們的要求,這個下載服務還支援了斷點續傳功能。效果如下圖所示:

第11章中講的是地理位置服務(LBS),其實在《第一行程式碼》中,LBS方面的內容已經寫得比較詳細了,只是由於近幾年Google的服務在中國全面無法訪問,因此《第一行程式碼》中的這些內容也都失效了。那麼為了保證這次《第二行程式碼》中的內容大家都可以正常執行,我將所有使用Google LBS服務的部分都替換成了百度LBS,現在不管是定位也好,地圖也罷,大家都可以放心執行而不用擔心程式一直跑不通了。

第12章是本書變動最大的一個地方,因為整章內容全部重寫了。原來《第一行程式碼》中的第12章講的是感測器的使用,我覺得這部分內容比較雞肋,於是直接將這一章刪掉了。現在《第二行程式碼》的第12章使用一整章的篇幅介紹了Material Design方方面面的知識,包括講解了Toolbar滑動選單NavigationView懸浮按鈕SnackbarCoordinatorLayout卡片式佈局下拉重新整理摺疊式標題欄等等控制元件的用法和特效的實現。整章內容學習完之後,最終大家都能實現一個具有高度Material Design效果的程式,如下圖所示:
(由於CSDN最大隻能上傳2M的圖片,因此畫質被壓縮得有點渣。你也可以點選 這裡 檢視高清版的視訊效果)

第13章中也加入了不少新的內容,因為第13章是最後專案實戰之前的一個總結性章節,裡面有很多你必須要掌握的高階技巧。新增內容包括有Android 6.0 Doze模式講解Android 7.0多視窗功能講解、以及Lambda表示式講解等,也都是滿滿的乾貨。

第14章仍然是專案實戰部分,仍然開發的是酷歐天氣,只不過這次開發的是酷歐天氣2.0,比《第一行程式碼》中的酷歐天氣可要牛逼得多了。之前很多朋友在學習《第一行程式碼》中的酷歐天氣時,時不時就會有人跟我反饋,獲取省市縣資料的介面訪問不了了,或者是獲取天氣資訊的介面訪問不了了。對於這種情況我也無可奈何,畢竟用的是第三方服務的介面,人家介面關閉了我也沒有辦法。而《第二行程式碼》中,為了保證介面的穩定性,我專門在京東雲上購買了一臺伺服器,用於給大家提供長期可靠的介面支援,保證不會再讓大家遇到學著學著介面就失效了的問題。

另外,如果你也有使用雲服務的需求,可以點選 這裡 註冊京東雲賬號,免費體驗京東雲服務。

說了這麼多,那《第二行程式碼》中的酷歐天氣到底比《第一行程式碼》中的酷歐天氣牛逼在哪裡呢?我們直接來看下效果對比就知道了。先來看一下《第一行程式碼》中的酷歐天氣效果,如下所示:

然後我們再來看一下《第二行程式碼》中的酷歐天氣效果,如下所示:

相信不需要我多說,大家也一眼就能看出來,這兩個版本的酷歐天氣明顯不是在一個檔次上的。另外,新版酷歐天氣的背景並不是一成不變的,而是每天都會有不同的背景,那麼是如何實現的呢?等你學到這一章的時候就知道了。

第15章仍然還是教大家如何打包APK檔案,以及如何上架應用程式,但是這次將會使用Gradle來打包APK,並且講解了如何使用Gradle來打包多渠道APK檔案。至於上架部分,《第一行程式碼》中講的是如何上架Google Play,而現在Google Play已經無法訪問了,因此《第二行程式碼》中改成了教大家如何將APP上架到360應用商店。總之,《第二行程式碼》的宗旨就是一定保證書中的所有例子都可以跑得通。

當然,除了上述內容之外,其他章節也都有很多的改動。尤其是在程式相容性調整方面,幾乎對每一章的程式碼都進行了優化和升級,以保證書中所有的程式在Android 7.0系統上都能完美相容。不過這裡我就不展開來細講了,更多內容等待你自己去發現。

封面

《第二行程式碼》的封面設計可以說是下足了功夫。因為要和《第一行程式碼》有傳承關係,但又要和《第一行程式碼》有明顯的區分。因此,我當時給設計師提了兩點要求:

  1. 讓人一眼看上去就知道這是《第一行程式碼》
  2. 讓人一眼看上去就知道這不是《第一行程式碼》

設計師當然也是做得很用心,給我提供了好幾個版本讓我選擇,然後我又從中選出了3個我個人比較滿意的版本,最後在公眾號上搞了一個投票讓大家來做最終篩選:

最終,綠色版本以接近50%的得票率當選,《第二行程式碼》的封面也最終定版,由大家共同選出來的一定是最好的,我們來一起欣賞下吧。

再來看一張霸氣的宣傳海報吧:

書籤

《第二行程式碼》中還會贈送大家一個非常非常精緻的小禮物,我個人認為這個小禮物也是這本書的特色之一。

其實我從小就是一個特別愛惜書的人,我是從來不捨得給書折角來記錄看到哪裡的。每當看到有些人將一本書的書角折得傷痕累累時,我都會覺得很心疼。因此,當我聽出版社說,可以在《第二行程式碼》中贈送書籤時,我高興得要命。

既然是要贈送書籤,那麼書籤也得好好設計一下。我仔細想了想,書籤的主題一定要和書的主題相關才行,而《第二行程式碼》中最主要的特色就是涵蓋了Android 5.0、6.0、以及7.0中的知識,那麼就乾脆以這三個系統為主題,設計三種不同風格的書籤吧。

設計師當然也是很給力,設計的三種書籤都非常好看,我們來一起欣賞一下吧:

             

這三種書籤會隨機放在每一本書裡面,你將會拿到哪一種書籤就全看運氣了。

當然,書籤這種小東西並不值什麼錢,但是我還是花了很大心思去做這件事情,因為我對這本書的一點一滴真的都很用心。

定價

《第二行程式碼》的定價我只能用“很良心”來形容。《第一行程式碼》一共有500多頁,卻只定了79元,出版社的成本負擔已經比較高了。而這次《第二行程式碼》不僅全面升級了內容,頁數也增加了幾十頁,還贈送書籤等等,因此出版社強烈建議將書價定為89元。雖說書價越高意味著我拿到的稿費也越多,但是高的書價同時也會在一定程度上影響銷量。我諮詢過QQ群裡的群友們,其實很多人還是很在意書價的,尤其是還沒工作的學生。因此,為了給大家爭取權益,我也是盡了我最大的努力和出版社各種溝通、協商,最終出版社終於同意讓《第二行程式碼》仍然保持79元!全面升級了內容,價格還一分錢不漲,這已經是我所能做的全部了。感謝出版社在價格方面做出的妥協,畢竟紙張、印刷、物料等各種成本都在飛漲。

不過仍然要提醒大家一點,79元只是書的標價而已,而通常我們在網上買書都是有折扣的。折扣的多少由各網店自己來定,我參與不了,但一般也就是五六十塊錢就能買到了。

購買

瞭解了這麼多,不知道你有沒有下定決心要買一本呢?目前《第二行程式碼》這本書已經在京東、噹噹、亞馬遜等網上書店上架了,也上架了PDF、Kindle等電子版,有需要的小夥伴們請猛戳下面的地址:

勘誤

新書出版,裡面難免會存在一些勘誤,大家可以點選 這裡 檢視所有已知的勘誤,在閱讀的時候避過這些坑,每一個確認的勘誤都會在下一次印刷的時候修正。當然,如果你有發現任何勘誤,也可以在這個網站上進行提交,一旦勘誤被確認還能領到圖靈的銀子,銀子可以用來免費兌換圖靈的圖書呦。

關注我的技術公眾號,每天都有優質技術文章推送。關注我的娛樂公眾號,工作、學習累了的時候放鬆一下自己。

微信掃一掃下方二維碼即可關注: