个人从零开发一款 Android 应用、上线并盈利 | 项目复盘
最近個人開發的一款應用 言葉 剛剛發布了 1.4.0,至此,我想要開發的大部分功能已經完成了。本來我也想做一次復盤,剛好趁這個機會分析下并發出來。在這篇文章中,我想分析的并不僅僅是技術,除此此外,我也會分析下這個產品、開發過程中有哪些做得好和不好的地方以及接下來的打算。
1、項目背景
這個應用是一款筆記應用。其實,一開始要做它,我也是拒絕的。
因為我覺得這類應用門檻和天花板都比較低,同類和類似的應用都比較多,花費功夫做一個收益也不會太大。后來打算做是出于幾個原因:
這個應用所解決的用戶痛點是,跨平臺寫作的問題。的確,有很多筆記應用是可以跨平臺的,但是這類筆記一般收費比較高而且對開發者來說回報也不高,比如印象筆記、有道筆記等。這類應用存在一個問題,他們的文件格式基本是自己定義的,因此就不容易做到通用。而如果我使用 Markdown 語法以文件目錄形式管理筆記,使用相對目錄在筆記內部進行文件引用,同時提供云同步來實現多端協作。那么我就可以做到:
基于以上幾點以及之前的技術沉淀,我估摸著就算開發一個也不會花費太長的時間。最后,從設計、開發(客戶端+服務器)用了大概一個多月的時間。不過,隨后我發現隨著自己想做的事情越來越多,就又投入了幾個月進去。當然,這個應用一上線就有用戶購買的,這有幾個原因:
2、實踐經驗
因為項目本身是個人開發,所以我負責了從 UI 設計到產品到客戶端到后端以及部分網頁的所有工作。
2.1 UI 設計
對于應用的 UI 設計,因為這次開發寫得非常順,所以所有的 UI 都是打腹稿完成的。當然,也會借助手繪來梳理 UI 和業務邏輯,有時候也會直接使用產品原型工具,比如 Axure,直接繪制產品原型。使用產品原型工具好處是,可以直接預覽設計效果,不好的地方是,因為本身只是個人開發,產品原型更多的是設計和開發之間交流的工具,省略了這個步驟可以減輕開發的難度。
對于圖標、應用內部的圖片選擇則是我通過其他網站精心挑選的。這并不容易,尤其是你對應用細節有要求的時候。下面是我常用的一些免費網站,
- Icons8:免費,用來獲取應用內各種圖標,這個網站對圖標的設計風格都有所區分
- Unsplash:免費,可以用來下載免費的壁紙和應用內部的圖片等
- Dribbble:設計師常逛的網站,可以用來捕捉一些設計靈感
- 以及兩個用來下載 PNG 圖片的網站:pngtree 和 cleanpng,這兩個國外的網站,還是很良心的,可以免費下載,使用 PNG 之后我們只需要通過組合就可以設計出好的應用宣傳圖了
關于應用的 UI 設計的一些總結:
- 圖標風格要統一,比如如果用 Material Design 風格,那么應該全部統一成 Material Design 風格;如果 Material Design2 風格,就應該全部統一成 Material Design2 風格的圖標。對于圖標的設計風格,Icons8 網站里都會有對應的區分,自己選擇下載即可。
- 對于應用的宣傳圖,我目前上架的所有的市場都要求尺寸為 1080*1920,所以按照這個尺寸設計即可。另外,個別商店要求如果宣傳圖里面有手機外殼,要用自家的手機,所以設計的時候不加外殼就可以了。
- 其他的還有一些,一時想不起來了,以后慢慢補充吧。
2.2 客戶端
1. 開發工作
客戶端部分主要包含客戶端業務邏輯開發、客戶端底層加密以及筆記瀏覽器樣式定制幾個部分的工作。
對于客戶端業務邏輯,使用 Kotlin 開發即可。因為我經常開發自己的應用,為了避免經常 Copy 各個模塊,所以開源了很多的框架。也是借助于這些框架,才使得我能夠快速開發并上線一個應用。經過這個項目以及其他項目的迭代,我逐漸將一些具備通用性的設計沉淀到了底層的庫中,也使得這些庫能夠不斷開發完善。對于客戶端部分,我之前很多文章介紹過這些庫以及如何提升開發效率的方法了,這里不多說了,感興趣的看之前的文章即可。
對于底層加密部分,主要使用 C++ 在加固之上繼續做應用的加密、用戶購買和會員信息加密以及與服務器通信加密等。之前我有一款應用,加固,上線,之后被別人破解。然后,我自己根據逆向的結果增加了一層安全措施。這個我之前也分析過,這里不多寫了。當然,之前的文章里面也會有所保留,畢竟寫出來了就相當于把自己的安全方案說出來了。對于應用與后端通信加密,這個容易理解,就是說,通信的時候通過客戶端和后端的約定規則,如果客戶端的參數不符合這個規則,后端就拒絕處理。為了安全性考慮,這部分邏輯當然最好通過 native 的 C++ 來完成。
而對于筆記瀏覽器配置,因為我使用 WebView 展示解析后的 Markdown 結果,因此客戶端部分要做些 CSS 和 JavaScript 完成對筆記瀏覽器樣式的定制。這里目前用到的還只是比較基礎的 JS 和 CSS 知識,以為了增加更多的 features 可能會增加更多的功能。
之前的相關的文章鏈接如下。因為之前寫得比較多了,這里就不啰嗦了:
- 擁抱新的交互方式,在 Android 中應用 MVVM
- 個人開源庫的一些更新,兼談Jetpack和Kotlin給Android開發帶來的變化
- 2020 年,我這樣在項目中使用 MVVM
- 加固了就安全了?幾個措施讓你的 Android 應用更安全
2. 其他的
這里稍微介紹下客戶端開發之外的工作——用戶統計。我在應用內部用戶信息統計和埋點使用的是友盟的 SDK. 之前我更多用 Twitter 的 Fabric. 不過后來被整合到 Google 的 Firebase 之后就沒有再用過。友盟是免費的,不過確實存在一些問題:
不過整體而言友盟還是值得一用的,它還是可以大致描繪用戶信息,這便于以后做用戶畫像,并根據統計信息進一步優化自己的應用。
如果你打算開發一款自己的應用的話,我覺得信息統計和用戶行為埋點還是值得一提的,因為一個產品的成功不僅僅是把產品開發和上線就為止了的,很多時候一個產品的成功取決于運營的工作。
此外,這個應用還用到了我的多語言翻譯等各種工具。也可以這么說吧,按照我的習慣,一個工作重復三次以上就應該考慮使用工具來優化了,畢竟我們是程序員,程序員怎么能做程序的工作呢?
2.3 后端開發
后端的工作包括通用服務器開發和服務器運維兩個部分。
1. 服務器開發
為什么開發這個通用服務器呢?因為當時我手上還有三臺服務器,兩臺中等配置的,一臺期限比較長,另一臺是為另一個項目準備的,還有一臺是新用戶服務器。所以,為了充分利用這臺期限較長的應用,我準備開發一臺通用服務器,即為我現在已經將來要開發的應用提供基礎服務。比如用戶反饋收集、應用配置定義和個性化的下發、設備管理、用戶管理、圖床以及將來也可以考慮集成一些有趣的功能進來等等。
當然,在開發這個應用之前我也是做了技術調研的。因為我之前就有計劃開發幾個應用,將來還可能開發更多。畢竟,有技術,有想法,看到一些好玩的東西,總是手癢,按捺不住要做一個的沖動。所以,當時微服務架構比較火,我對此也做了調研。不過,最終我沒用采用微服務,而是設計成單體的應用。因為,顯然的,架構的設計不僅和要做的事情相關,跟自己當時的實際情況也相關的,當然還要考慮將來的拓展。而以我目前的形狀而言,我只有一個人開發,因此采用微服務和管理微服務都會增加成本。另外,對于微服務的部署問題,我當然不會購買更多的服務器來支持微服務。而所謂的微服務還是單體,無非就是看你從哪個維度來進行劃分:
功能 1 功能 2 功能 3 應用 1 ----+-----------+-----------+-------------> 應用 2 ----+-----------+-----------+-------------> 應用 3 ----+-----------+-----------+------------->如上所示,簡單理解:如果你從功能模塊角度劃分,這就是微服務;如果你從應用的角度劃分,這就是一個個單體。不過我是將所有的應用通過一個單體維護的,這還是跟當前實際情況相關:新用戶的用戶量不大,沒必要各自單獨開發一個應用,并且個人維護多個應用和服務器成本比較高,而假如某一天某個應用用戶數量增多,這當然是一種幸福的煩惱,此時可以將數據遷移出來單獨開發和優化。
后端開發相關的文章我之前也寫過,自己看往期的文章就好了:
- 從零搭建基于 Java 的服務器生產環境
- 為你的應用集成谷歌結算(客戶端集成+服務端校驗)
當時因為要支持國際化,所以為了做系統設計還是花費了些功夫,要導致工期稍微長了一些。我個人覺得這個服務器設計還是很妙的,比如可以給指定的用戶發送消息,雖然不是即時消息,但這便于將一些信息傳遞給用戶,將來也可以借助它設計運營和推廣活動。以后做用戶增長的話,我也可以在這個服務器上面做些工作,來輔助進行用戶畫像。
2. 服務器運維
既然搭建一個服務器,那么服務器安全問題自然是不容忽視的。對于服務器,一方面要通過各種配置增加服務器的安全性,這包括修改各種常用端口,修改 rm 指令等。此外,還需要使用 cron 任務做 MySQL 和 Redis 數據庫的定時備份等等。
這方面好在我之前搭建服務器的時候就整理了很多的筆記,所以,才能夠做到每次搭建服務器的時候能夠快速完成:
2.3 產品
雖然我工作是程序員吧,但我對產品的興趣不亞于代碼。最初我選擇這個行業也是希望有一天能夠做出來自己的產品。當初剛畢業的時候還陰差陽錯地差點做了產品……不過,我希望自己開發自己的產品,至少目前是這樣(出于成本、風險和興趣的考量)。
做產品沒那么容易,我一直覺得,一般的產品經理關注的是產品本身,高級的產品經理關注的是市場。如果你對產品感興趣的話下面這些書可以幫到你:
- 《俞軍產品方法論》:俞軍作品,沒必要多說了,大神級作品,眼界很高
- 《幕后產品:打造突破式產品思維》,作者王詩沐,網易云音樂背后核心人物
另外還有《增長黑客實戰筆記》、《一個廣告人的自白》和《文案訓練手冊》啥的,雜七雜八,之前看了很多,但主要分為個方向:產品、運營和市場。
3、總結
好吧,洋洋灑灑地寫了很多的東西,一篇文章很難面面俱到,但是梳理一下總歸有一些收獲,以后也應該多進行復盤,形成自己的方法論。下面說我覺得做得好和不好的地方以及接下來的打算。
3.1 好的地方
首先,在技術上,
在產品上,產品的 UI 設計不錯 & 能夠抓住用戶的一兩個痛點
3.2 不好的地方
3.3 接下來 …
就這個產品而言,
就個人技術提升而言,
就大環境而言,
就目前情況來看,已經到了互聯網紅利的末期,這當然不是說沒有機會,但我覺得像目前這樣淺嘗輒止肯定是不行的。白巖松有句話說,三十歲之前要努力做加法,多嘗試;三十歲之后做減法,聚焦。所以,我覺得接下來應該多嘗試和了解不同行業,然后選擇一個自己感興趣并且前景好的行業持續積累,這樣才能形成自己的競爭優勢。
現在的確不是自己做事情的好時候,但如果換一個角度思考,正因為很多人抱著這種看法,所以這個時候競爭壓力反而小得多,反而適合好好打磨自己的產品。當然,如果成本太高的話就算了,因為現在經濟大環境確實不好,以后往左還是往右走還分不清~
每個人身份和背景不同,看問題的角度可能不一樣,也應該多認識一些人,交換想法,這樣雙方都有收獲。所以,總結下來:多走,多看,多思考,多嘗試,多認識一些人。
總結
以上是生活随笔為你收集整理的个人从零开发一款 Android 应用、上线并盈利 | 项目复盘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql GEOHASH functi
- 下一篇: 显卡显存测试u盘 mats_耕升RTX