Android產品研發系列

轉載請標明出處:一片楓葉的專欄

最近的Android產品研發系列主要講解的是Android產品研發過程中涉及到的技術,技巧,實踐等。前面我們講解了Android源碼系列的文章  可參考:Android源碼解析–>總結(持續更新中),源碼系列的文章東西比較多比較複雜,並且一些東西還沒有講完,這裏已經更新了30篇了,後續的東西一定會更新的。考慮一直講源碼系列可能看的比較累,這裏就有了產品研發系列的文章。本個系列的文章主要是講解Android產品研發過程中一些需要注意的技術技巧與實踐。其主要面對產品研發,對App穩定性,友好型,兼容性要求較高的App。

下面就是我準備講解的一些產品研發系列的內容:
(其中紅色字體的文章是我已經寫完的部分,其他的是我還沒寫但是打算寫的東西,這些東西大概覆蓋了Android產品研發過程中涉及到的各個方面,當然了有可能後續也會有所補充)


Android產品研發(一)–>實用開發規範

本文中選擇將開發規範作爲這個系列的第一篇文章,就是個人感覺產品研發過程中,開發規範真的很重要,很重要,非常重要(重要的事情說三遍),一個好的開發規範可以讓團隊中的人對他人的代碼更熟悉,新人也可以更好的瞭解產品的業務邏輯。開發規範並不是一個死的一成不變的,每個團隊可能都有自己的開發規範,只要是適合團隊的開發規範就是最好的開發規範…

Android產品研發(二)–>啓動頁優化

這篇文章中我們主要介紹一下啓動頁的優化,關於啓動頁的優化是UE方面的內容了,一個很慢的啓動頁很容易讓用戶覺得受不了,進而“逃離”App的,所以若想產品有更好的用戶體驗,做一些啓動頁的優化是一個不錯的選擇。這裏我們簡單介紹一下我在實踐中對啓動頁是如何優化的…

Android產品研發(三)–>基類Activity

在實際的Android產品研發中,一般的我們在寫Activity的時候都會繼承於一個基類Activity,該Activity是所有的Activity的基類。在該基類中我們主要用於重寫一些共有的邏輯。好處是顯而易見的對於一些Activity的共有邏輯我們不必要在每個Activity中都重新寫一遍,只需要在基類Activity中寫一遍就好了…

Android產品研發(四)–>減小Apk大小

隨着移動技術的深入發展,各種炫酷效果的更新,在我們追求UI與UE的同時一個不如忽視的問題逐漸暴露出來,那就是apk文件越來越大,可能有的童鞋會說現在都是wifi環境,apk文件增大幾M不是什麼大不了的問題,這其實也是有一定道理的,但是作爲開發人員的我們這絕不是我們認爲可以忽略這個問題的理由。優化Apk大小也是優化我們App體驗的一個重要方面,雖然可能它不是那麼的重要…

Android產品研發(五)–>多渠道打包

國內的Android開發者還是很苦逼的,由於衆所周知的原因,google play無法在國內打開(翻牆的就不在考慮之內了),所以Android系的應用市場,羣雄爭霸。後果就是國內存在着有衆多的應用市場,產品在不同的渠道可能有這不同的統計需求,爲此Android開發人員需要爲每個應用市場發佈一個安裝包,這裏就引出了Android的多渠道打包…

Android產品研發(六)–>Apk混淆

本文主要講解Apk的混淆,這裏的混淆分爲兩種代碼混淆和資源文件混淆。實際的產品研發中爲了防止自己的勞動成果被別人竊取,混淆代碼能有效防止apk文件被反編譯,進而查看源代碼。說來慚愧,作爲互聯網創業公司的我們也確實對競品Apk反編譯研究過,如果Apk混淆之後確實對理解源碼的業務流程造成了困擾,這也從側面說明了Apk混淆的重要性…

Android產品研發(七)–>Apk熱修復

去年一整年Android社區中刮過了一陣熱修復的風,各大廠商,逼格大牛紛紛開源了熱修復框架,恩,產品過程中怎麼可能沒有bug呢?重新打包上線?成本太高用戶體驗也不好,咋辦?上熱修復唄。好吧,既然要開始上熱修復的功能,那麼就得調研一下熱修復的原理。下面我將分別講述一下熱修復的原理,各大熱修復框架的比較,以及自身產品中熱修復功能的實踐

Android產品研發(八)–>App數據統計

文本將要介紹一下Android產品中另一項基礎功能-數據統計。App數據統計的意義在於通過統計用戶的行爲方式有針對性的更新展示算法,根據用戶的行爲習慣更新產品功能等等,具體而言當我們開發好App後就會把它發到應用市場上,但是目前有很多的應用市場(如,豌豆莢,應用寶,安卓市場等),那麼問題來了,假如我們想統計我們開發的應用的下載次數,就必須使用統計吧,而且它不僅可以統計我們的應用的下載量,啓動次數,還可以統計頁面訪問量、查看程序的bug等等,所以相對於項目而言產品由於存在着持續的迭代與用戶體驗,所以做好數據統計工作是一項必不可少的工作…

Android產品研發(九)–>App網絡傳輸協議

本文將要介紹的是App的網絡傳輸協議。App與服務器交互就會涉及到信息的交換,而信息的交互就必然需要一套完整的數據協議。這裏首先需要明確一點的是什麼是網絡傳輸協議呢?這裏首先套用一段百度百科的定義…

Android產品研發(十)–>不使用靜態變量保存數據

本文講解的其實並不是一個技術方面,而是一個Android產品研發過程中的技巧:儘量不使用靜態變量保存核心數據。這是爲什麼呢?這是因爲Android系統中的應用進程並不是安全的,包括application對象、靜態變量在內的進程級別變量並不會一直呆着內存裏面,它會被kill掉,它真的有可能會被kill掉,真的真的,重要的事情說三遍。與大家普遍的看法不同之處在於,當進程被幹掉之後,實際上app不會重新開始啓動。Android系統會創建一個新的Application對象,然後啓動上次用戶離開時的activity以造成這個app從來沒有被kill掉得假象。而這時候靜態變量等數據由於進程已經被殺死而被初始化,所以就有了我們的不推薦在靜態變量(包括Application中保存全局數據靜態數據)的觀點…

Android產品研發(十一)–>使用scheme實現頁面跳轉

本文講解的是一種App內頁面跳轉協議,這裏的跳轉包括應用內跳轉、H5與Native跳轉,服務器通知客戶端如何跳轉等。在講解應用內跳轉協議之前我們先講解一下H5與Native相互跳轉的相關知識點…

Android產品研發(十二)–>App長連接實現

本文中我們將講解一下App的長連接實現。一般而言長連接已經是App的標配了,推送功能的實現基礎就是長連接,當然了我們也可以通過輪訓操作實現推送功能,但是輪訓一般及時性比較差,而且網絡消耗與電量銷燬比較多,因此一般推送功能都是通過長連接實現的…

Android產品研發(十三)–>App輪訓操作

本文將講解app端的輪詢請求服務,一般而言我們經常將輪詢操作用於請求服務器。比如某一個頁面我們有定時任務需要時時的從服務器獲取更新信息並顯示,比如當長連接斷掉之後我們可能需要啓動輪詢請求作爲長連接的補充等,所以這時候就用到了輪詢服務…

Android產品研發(十四)–>App升級與更新

本文將講解app的升級與更新。一般而言用戶使用App的時候升級提醒有兩種方式獲得:一種是通過App Store獲取、一種是打開應用之後提醒用戶更新升級,而更新操作一般是在用戶點擊了升級按鈕之後開始執行的,這裏的升級操作也分爲兩種形式:一般升級、強制升級…

Android產品研發(十五)–>內存對象序列化

本文將講解Android中數據傳輸中需要了解的數據序列化方面的知識,我們知道Android開發過程中不同Activity之間傳輸數據可以通過Intent對象的put**方法傳遞,對於java的八大基本數據類型(char int float double long short boolean byte)傳遞是沒有問題的,但是如果傳遞比較複雜的對象類型(比如對象,比如集合等),那麼就可能存在問題,而這時候也就引入了數據序列化的概念…

Android產品研發(十六)–>開發者選項

本文主要介紹Android開發中常常涉及到但又不是被人重視知識點:開發者選項。主要涉及到如何打開開發者模式,開發者選項中有哪些操作菜單以及各自的作用,如何清除手機數據,清除手機數據具體清除那些數據等等…

Android產品研發(十七)–>Hybird開發

本文將介紹Android中hybrid開發相關的知識點。hybrid開發實際上是混合開發的意思,這裏的混合是H5開發與Native開發混合的意思。下面的文章中我們將逐個介紹一下hybrid開發的概念、hybrid開發的優勢、Android中如何實現hybrid開發、簡單的hybrid開發的例子,以及在產品實踐中對hybrid開發的應用,希望通過本篇文章的介紹讓您能夠對Android中的hybrid開發有一個基本的認識…

Android產品研發(十八)–>webview問題集錦

本文中我們將介紹一下Android中webview在使用過程中會遇到的一些問題。這些問題主要是webview在使用過程中我已經趟過的坑,希望通過這篇文章的介紹能夠幫助大家更好的使用webview…

Android產品研發(十九)–>Android studio中的單元測試

本文我們將講解如何在Android studio中進行單元測試。在Android開發項目中,經常會進行測試操作,而一次又一次的運行模擬器,浪費了大量時間,降低了工作效率降低,雖然最新的Android studio中提供了instance run功能,來提高Android studio的編譯速度,但是我們還是需要了解Android studio的單元測試功能,其可以很方便的爲我們提供功能性測試,所以如果項目中有用到測試數據的時候,可以先進行單元測試,如果可以正常輸出數據了,然後再到UI中執行,這樣會提高一些工作效率…

Android產品研發(二十)–>代碼Review

本文我們將講解Android中的代碼Review。良好的產品開發迭代過程中,代碼Review是一個必不可少的步驟,通過代碼Review能夠提高產品質量,增強團隊成員之間的溝通,提高開發效率。所以團隊開發活動中定時進行代碼Review就顯得很有必要了…

Android產品研發(二十一)–>Android中的UI優化

本文我們將講解一下Android UI優化方面的知識。Android系統的優化分爲好多方面:比如性能優化,UI優化,資源文件優化等等,這裏我們先暫時講解Android UI優化方面的知識點…

Android產品研發(二十二)–>Android實用調試技巧

本文我們將講解Android中的調試技巧。程序調試,是將編制的程序投入實際運行前,用手工或編譯程序等方法進行測試,修正語法錯誤和邏輯錯誤的過程。這是保證計算機信息系統正確性的必不可少的步驟。在Android開發過程中熟練的使用調試技巧是一個很重要的方面。Android的調試技巧包括熟練使用Android中的日誌API,自定義Android日誌框架,通過gradle配置調試日誌,Android studio的調試技巧等等。通過對本文的學習我們能夠對Android中調試技巧有一個大概的瞭解…

Android產品研發(二十三)–>Android中保存靜態祕鑰實踐

本文我們將講解一個Android產品研發中可能會碰到的一個問題:如何在App中保存靜態祕鑰以及保證其安全性。許多的移動app需要在app端保存一些靜態字符串常量,其可能是靜態祕鑰、第三方appId等。在保存這些字符串常量的時候就涉及到了如何保證祕鑰的安全性問題。如何保證在App中靜態祕鑰唯一且正確安全,這是一個很重要的問題,公司的產品中就存在着靜態字符串常量類型的祕鑰,所以一個明顯的問題就是如何生成祕鑰,保證祕鑰的安…

Android產品研發(二十四)–>內存泄露場景與檢測

最近的Android產品研發系列主要講解的是Android產品研發過程中涉及到的技術,技巧,實踐等。前面我們講解了Android源碼系列的文章 可參考:Android源碼解析–>總結(持續更新中),源碼系列的文章東西比較多比較複雜,並且一些東西還沒有講完,這裏已經更新了30篇了,後續的東西一定會更新的。考慮一直講源碼系列可能看的比較累,這裏就有了產品研發系列的文章。本個系列的文章主要是講解Android產品研發過程中一些需要注意的技術技巧與實踐。其主要面對產品研發,對App穩定性,友好型,兼容性要求較高的App…

Android產品研發(二十五)–>MVC/MVVM/MVP簡單理解

本文我們將講解Android開發中常常涉及到的MVC/MVP/MVVM等模式的基本概念。許多童鞋對Android開發中涉及到的MVC、MVP、MVVM這三種模式不是太清楚,我認爲無論是MVC、MVP亦或者是MVVM都是一種代碼組織方式,通過這種代碼組織方式能夠讓代碼更有層次感,各個層次主要負責各自的工作,這樣降低了整個項目的代碼邏輯耦合度與可讀性…



Android產品研發之Https請求;
Android產品研發之攔截App請求;
Android產品研發之定位服務;
Android產品研發之持續集成;
Android產品研發之常用框架;
Android產品研發之git使用;
Android產品研發之產品加固與加密;
Android產品研發之屏幕適配;
Android產品研發之Fragment化;
Android產品研發之基礎組件SDK化;
Android產品研發之React Native開發;
Android產品研發之RxAndroid;
Android產品研發之性能優化;
Android產品研發之控件MD化;

作爲IT人員我還是比較強調做產品而不是做項目的,因爲做項目都是跟着項目走許多東西做完了也就做完了,沒有深入進去,沒有持續的迭代與優化,相當於做一件事做了N遍,這樣對個人很難有技能上的提高。持續的迭代一個產品不但能夠在深度也能在廣度上提高自己,如果可以的話強烈建議大家持續的迭代某一個產品。

這裏多說幾句,這裏只是在技術上關於Android產品研發的一些tip,在產品上我們同樣的是需要有自己的思考。爲了讓App更好用,更好看,更簡單,多多的站在用戶的角度上思考,這不但是產品經理的任務,同樣也是我們程序員需要做的。只有在和用戶交流的時候,你纔會發現,你覺得很好的東西用戶可能根本不會用,有時候,專業術語導致用戶完全不理解。按鈕很明顯但用戶完全沒看到,爲什麼?因爲用戶的注意力被其他功能給擾亂了,這些問題都是產品的複雜造成的。說這麼多就是想跟大家說做產品需要的時候更多的需要從用戶的角度考慮問題,而不是站在你的角度想用戶的問題,有時候你所想的問題可能並不是用戶想要的。


本系列文章以同步至github中:https://github.com/yipianfengye/AndroidProject,歡迎star和follow

對產品研發技術,android源碼實踐,Github項目解析方面感興趣的同學可以參考我的:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章