在智能手機(jī)行業(yè)發(fā)展之初鸳吸,大多數(shù)手機(jī)自帶相機(jī)應(yīng)用的表現(xiàn)都不能盡如人意速勇。那時(shí)养匈,一些算法強(qiáng)大的第三方拍照應(yīng)用成了 “裝機(jī)必備” 清單里的成員积担。Camera360 就是這樣一個(gè)老牌 “裝機(jī)必備” 的拍照類應(yīng)用,已經(jīng)近 8 歲 “高齡” 的它的烁,曾經(jīng)獲選 Google Play "Best of 2016"。目前在 Google Play 上的總下載量超過 4 億次襟雷。
雖然現(xiàn)在很多 Android 旗艦機(jī)的自帶相機(jī)拍照功能越來越強(qiáng)大,第三方相機(jī)應(yīng)用的必要性似乎越來越低偿乖。能在激烈的市場競爭中屹立不倒眠副,得益于 Camera360 開發(fā)公司成都品果科技對于產(chǎn)品定位的精準(zhǔn)拿捏以及最新技術(shù)的快速跟進(jìn)霍弹。
這個(gè)老牌影像應(yīng)用是如何在手機(jī)自帶相機(jī)越來越強(qiáng)的沖擊下順利存活的?在技術(shù)層面又有哪些追求砾肺?這一次,我們帶來的是 Camera360 的開發(fā)商品果科技的心得與故事。
及時(shí)跟進(jìn)新技術(shù) 用 Kotlin "換血" 提效
任何一家技術(shù)驅(qū)動型公司闷煤,都會對熱門領(lǐng)域的新技術(shù)嗅覺敏感署咽。品果也不例外窒升。品果的技術(shù)總監(jiān) Lee 在大概六七年前知道了 Kotlin 這種新型語言,那時(shí)候關(guān)于 Kotlin 的技術(shù)社區(qū)逐漸開始起步蓉媳。2017 年狠角,Lee 和同事參加 Google I/O 大會時(shí)見證了 Kotlin 正式成為 Android 官方語言的時(shí)刻姨蟋,回到成都后悠砚,便開始在公司內(nèi)部推動學(xué)習(xí) Kotlin。在組織公司里的工程師們學(xué)習(xí) Kotlin 時(shí)枢泰,Lee 改進(jìn)了以往的培訓(xùn)方式毛甲。
“在內(nèi)部推廣學(xué)習(xí) Kotlin 之前,我們公司的技術(shù)分享比較中規(guī)中矩,談不上培訓(xùn),很多人聽了其他同事的分享以后有多少收獲终蒂、能否落地,其實(shí)是不明確的。”?Lee 說粤咪。
為了讓 Kotlin 更快在公司項(xiàng)目中落地,Lee 最初選擇了參加 StudyJams 的形式渴杆,動員公司里的同事組建了一個(gè)小組參加學(xué)習(xí)寥枝,最后也有四個(gè)同事順利拿到了畢業(yè)證。后來也在公司內(nèi)部建立了類似的學(xué)習(xí)機(jī)制磁奖,每周開課兩次囊拜,對此感興趣的工程師們自愿參加。因?yàn)橐痪€的優(yōu)秀開發(fā)者們普遍抱有隨時(shí)充電學(xué)習(xí)的態(tài)度比搭,所以每次課程都人滿為患冠跷。值得欣慰的是,Kotlin 的學(xué)習(xí)曲線較為合理敢辩,既不會很平蔽莱,也沒有很陡 (您可以參考我們發(fā)布的文章《31天,從淺到深輕松學(xué)習(xí)Kotlin》)戚长,有 Java 語言基礎(chǔ)的開發(fā)者上手并不困難盗冷。
當(dāng) Kotlin 成為品果科技工程師們 "標(biāo)配" 技能后,Lee 開始嘗試完全用 Kotlin 開發(fā)新的功能 —— 他們只用了三個(gè)月時(shí)間便將一個(gè)復(fù)雜度相當(dāng)高的新模塊開發(fā)到了可上線程度同廉,但因產(chǎn)品策略的調(diào)整仪糖,目前這個(gè)新功能還未正式對外。
“雖然還沒上線迫肖,但有了實(shí)操經(jīng)驗(yàn)锅劝,可以說我們技術(shù)團(tuán)隊(duì)已經(jīng)對Kotlin上手了◇『”?Lee 說故爵。
除了使用 Kotlin 開發(fā)新功能,品果也在用 Kotlin 重構(gòu) Camera360 的老模塊隅津。Camera360 的架構(gòu)師表示诬垂,使用 Kotlin 可以顯著減少代碼行數(shù)。
“我們統(tǒng)計(jì)了整個(gè)項(xiàng)目中的所有代碼伦仍,其中每個(gè) Kotlin 文件的平均行數(shù)是 86 行结窘,而相對每個(gè) java 文件則平均接近 200 行,這能側(cè)面反應(yīng) Kotlin 更加簡潔充蓝;具體來說隧枫,我們的一個(gè)工具類庫喉磁,在使用Kotlin重構(gòu)之后,代碼從 2600 行減少到了 1400 行官脓⌒”
而代碼行數(shù)的減少意味著效率的提升,雖然沒辦法具體量化效率提升了多少确买,但一些提升是顯而易見的斤讥,比如自動類型推斷讓編寫代碼更簡潔,data class 可以減少大量的模板代碼湾趾,默認(rèn)參數(shù)減少重載方法的編寫芭商,字符串模板這些開發(fā)中最常用到的功能,另外 lambda 表達(dá)式搀缠、函數(shù)式編程和擴(kuò)展方法這些更高級的功能也大大豐富了代碼的編寫方式和效率铛楣。
此外,使用 Kotlin 顯著減少 NullPointerException 這個(gè) Java 語言的老大難問題艺普,在一個(gè) 90% Java 代碼的老項(xiàng)目中簸州,每個(gè)版本的前 50 條錯(cuò)誤最高統(tǒng)計(jì)中,平均出現(xiàn) 1~2 次 NPE歧譬,而在一個(gè) 70% 使用了 Kotlin 代碼的新項(xiàng)目中岸浑,很難在錯(cuò)誤統(tǒng)計(jì)的前幾頁找到 NPE。
強(qiáng)大的語法糖也是深受工程師們喜愛的一個(gè)特性瑰步。目前矢洲,Camera360 大概有 10% 左右的代碼使用 Kotlin 重構(gòu)完成,這些 Kotlin 代碼主要用在了相機(jī)模塊和一些基礎(chǔ)模塊上缩焦,品果希望在一年之內(nèi)把 Kotlin 的代碼占比提升到 50%读虏。
歷史轉(zhuǎn)折中的第三方拍照應(yīng)用
第三方拍照應(yīng)用逐漸淡出了智能手機(jī)的 "裝機(jī)必備" 清單,是個(gè)無可否認(rèn)的事實(shí)袁滥。在手機(jī)廠商越來越重視軟件配套盖桥、手機(jī)自帶相機(jī)應(yīng)用愈發(fā)強(qiáng)大的當(dāng)下,曾經(jīng)叱咤風(fēng)云的第三方拍照應(yīng)用紛紛開始了轉(zhuǎn)型题翻。作為起步較早的第三方拍照應(yīng)用揩徊,Camera360 也很早意識到了賽道的變化。品果科技 COO 顧銳表示嵌赠,實(shí)際上靴拱,在如今的市場格局下,用戶使用手機(jī)拍照已經(jīng)被清晰地分成了兩種場景:記錄場景和創(chuàng)作場景猾普。
手機(jī)廠商對攝像頭以及算法的優(yōu)化調(diào)教,是力求在記錄場景中本谜,給予用戶更好的體驗(yàn)初家,讓人們可以更加迅速、準(zhǔn)確、真實(shí)地記錄眼前的景象溜在,講究的是所見即所得陌知。
而曾經(jīng)的第三方拍照應(yīng)用,雖然承擔(dān)記錄眼前景象的任務(wù)越來越少掖肋,但各家的核心都逐漸放到了創(chuàng)作場景中來仆葡,即讓用戶將喜愛的照片更加生動,這種需求下追求的差異化志笼、風(fēng)格化是和記錄場景的初衷截然不同的沿盅。
這兩種拍照場景體現(xiàn)在手機(jī)商,辨識前后攝像頭的定位差異纫溃。很多用戶打開手機(jī)前置攝像頭自拍的時(shí)候腰涧,希望把自己拍得美一點(diǎn)。但這個(gè)美也會有一個(gè)限度紊浩,可能會去做一些細(xì)微的修飾窖铡,但過猶不及。這個(gè)尺度其實(shí)并不好掌握坊谁,“點(diǎn)到為止” 的美化方案费彼,便是 Camera360 長期以來在行業(yè)里摸索出的規(guī)律。
在發(fā)展初期口芍,Camera360 是記錄箍铲、創(chuàng)作兩手抓,所以早期的一些濾鏡如 LOMO阶界、復(fù)古等虹钮,其實(shí)都是想讓用戶更好地記錄所見到的世界。那個(gè)時(shí)候在各種特效之外膘融,品果的技術(shù)團(tuán)隊(duì)還在相機(jī)啟動速度芙粱,占用系統(tǒng)資源方面花了很多精力去優(yōu)化,這也是其得以在第三方相機(jī)大戰(zhàn)中脫穎而出的一個(gè)關(guān)鍵氧映。
“但后來我們發(fā)現(xiàn)手機(jī)廠商在這方面做的越來越好春畔,畢竟是自家生產(chǎn)的設(shè)備,所以在軟硬件結(jié)合方面有著天然的優(yōu)勢岛都,這時(shí)第三方拍照應(yīng)用的記錄場景幾乎已經(jīng)被剝奪了律姨。”?顧銳表示臼疫。
所以在這樣的產(chǎn)業(yè)轉(zhuǎn)折中择份,第三方拍照應(yīng)用將未來發(fā)展重心放在了創(chuàng)作場景中,品果也在 Camera360 之后烫堤,推出了 MIX 這樣聚焦于影像后期創(chuàng)作的應(yīng)用荣赶。
而在變現(xiàn)方面凤价,Camera360 也在嘗試向內(nèi)容社區(qū)和新功能訂閱模式發(fā)展。
品果曾經(jīng)用 Google 的 AdWords 平臺購買廣告拔创,但作為一個(gè)工具型產(chǎn)品利诺,Camera360 在全球推廣的核心依然是產(chǎn)品本身的運(yùn)用前沿技術(shù)開發(fā)新功能,所建立起的口碑剩燥。比如慢逾,當(dāng)年 Camera360 推出了創(chuàng)新性的動態(tài)貼紙功能,便憑借這個(gè)新的特性成功登頂日本應(yīng)用市場灭红。在 Google 推出了 ARCore 后侣滩,品果也第一時(shí)間選擇了跟進(jìn),以期讓動態(tài)功能的表現(xiàn)力更加優(yōu)秀比伏。
顧銳舉了這樣一個(gè)例子:Camera360 曾在全球范圍舉辦了一個(gè)封面女郎征集挑戰(zhàn)賽胜卤,用戶可以將自己的照片上傳到指定專區(qū),獲勝者將成為某一天 Camera360 的開機(jī)封面赁项。這個(gè)活動在泰國葛躏、越南等市場吸引了大量的當(dāng)?shù)嘏杂脩魠⒓樱髞砥饭?lián)合那些熱門地區(qū)的知名企業(yè)悠菜,提供當(dāng)?shù)匮莩獣闹蓖▍^(qū)選拔入口舰攒,也獲得了用戶歡迎。現(xiàn)在 Camera360 已成為東南亞國民級別的應(yīng)用悔醋。
新內(nèi)容訂閱也是 Camera360 正在發(fā)力的方向摩窃。在海外市場,很多用戶是愿意為更新的功能芬骄、特效付費(fèi)的猾愿,顧銳提到 Camera360 在日本應(yīng)用商店登頂,還曾獲得熱門偶像團(tuán)體 AKB48 成員在綜藝節(jié)目中力薦账阻,這些其實(shí)都是靠內(nèi)容和功能取得的成績蒂秘。
Firebase、Google Cloud Platform 等開發(fā)者工具都已經(jīng)成為了品果日常工作中的好幫手淘太。 一邊學(xué)習(xí)新技術(shù)姻僧,一邊利用新工具,早早揚(yáng)帆出海的品果在多年的實(shí)踐中蒲牧,已經(jīng)有了豐富的研發(fā)/運(yùn)營經(jīng)驗(yàn)撇贺。
“和 Google 合作了這么多年,我們成了堅(jiān)定的新技術(shù)冰抢、新工具追隨者松嘶,也受益良多】嫒牛”?顧銳表示翠订。
成立近 8 年的品果缓升,在日新月異的移動互聯(lián)網(wǎng)領(lǐng)域見證了太多的行業(yè)變遷,自身也經(jīng)歷了從 "產(chǎn)品輸出" 到 "技術(shù)輸出"蕴轨,從 "記錄場景" 到 "創(chuàng)作場景" 的定位升級。但無論行業(yè)如何變幻骇吭,保持對新技術(shù)的熱情追求橙弱,是這家公司永葆活力的秘訣。
合適的技術(shù)就像一片含蓄而又前衛(wèi)的濾鏡燥狰,能將看似平凡的事業(yè)刻畫得更加美好棘脐,也能折射出不一樣的光線,照亮前行的路龙致。
注: 本文配圖的肖像權(quán)歸拍攝對象本人所有蛀缝,品果科技征得員工同意后授權(quán)使用
點(diǎn)擊這里在?"成功案例"?菜單中您可查看更多谷歌開發(fā)者的故事