從沒有白費的努力,也沒有碰巧的成功。只要認真對待生活,終有一天,你的每一份努力,都將絢爛成花。
前言
爲了方便閱讀博主博客,梳理了博主相關文章,本文將持續更新,記錄博主開發過程中的成長經歷,跳過開發中踩過的坑,快速實現移動端產品的開發、更新和迭代。
博主自2016年從事軟件開發工作以來,深感敲代碼的不易,重複的製造車輪子只是在浪費時間,作爲一位優秀的開發者,應當利用好已有的優秀開源框架,將富餘的時間用在研究底層技術上。
以上僅屬於博主個人觀點,不喜勿噴!!!
聲明
本文整合了博主原創文章及在開發過程中使用的優秀框架,另附有優秀的博客推薦。
在此,感謝本文中涉及的相關文章博主的無私奉獻,相關轉載文章如有侵權,請聯繫博主,博主將及時下架相關文章,謝謝!
博主聯繫方式
聯繫時,請直接說明來意,謝謝合作!!!
- WeChat - zhaikun15519092013
- QQ - 2576354326
- Email - [email protected]
- Phone - 13017482968/15519092013
- 社交主頁 - https://blog.csdn.net/ZhaiKun68
博主業餘時間 >>> 可接私活、可接私活、可接私活(嘿嘿!!!生活不易)
博主考慮優質的工作機會,歡迎聯繫,謝謝!個人簡歷:https://www.500d.me/cvresume/3588855576/
文章目錄
- 前言
- 聲明
- 博主聯繫方式
- 一 APP架構搭建
- 1.1 Android開發框架MVP
- 1.2 底部導航欄
- 1.3 BaseActivity基類設計
- 1.4 日誌管理
- 1.5 標題欄
- 1.6 側滑返回
- 1.7 網絡請求框架
- 1.8 沉浸式開發
- 1.9 數據庫管理
- 1.10 事件分發處理
- 1.11 圖片加載
- 二 Android
- 2.1 開發環境搭建
- 2.2 開發框架/小工具
- 2.3 Gradle插件
- 2.4 開發組件
- 2.4.1 ListView 列表組件
- 2.4.2 RadioButton 單選按鈕
- 2.4.3 Android四大組件
- 2.4.5 TextView 文本組件
- 2.4.6 GridView 九空格佈局組件
- 2.4.7 CheckBox 複選框
- 2.5 異常問題分析
- 2.6 APP權限調用
- 2.7 APP功能開發
- 2.8 數據存儲
- 2.9 APP性能優化
- 2.10 APP兼容性適配
- 2.11 apk靜默升級常用處理方式 打包
- 2.12 與前端頁面交互
- 三 Java
- 四 代碼管理
- 五 數據庫
- 六 MarkDown
- 七 算法
- 八 工具
- 九 自我提升
- 十 前端
- 十一 移動跨平臺開發
- 十二 蘋果端
- 十三 大數據
- 十四 面試技巧
- 十五 ADB命令
- 十六 藍牙
- 十七 即時通訊
一 APP架構搭建
1.1 Android開發框架MVP
博客推薦 - 博主 - 大力-哥 -【android進階篇】MVP+Retrofit+RxJava框架結合
1.2 底部導航欄
博客推薦 - 博主 - 阿飛__ - Android底部導航欄,三種風格和實現
博客推薦 - 博主 - cc_wentian - Android底部導航欄最常用的兩種寫法
博客推薦 - 博主- 野狼谷 - Android (爭取做到)最全的底部導航欄實現方法
博客推薦 - 博主 - 天地炫舞 - LinearLayout+Fragment實現下導航欄效果
1.3 BaseActivity基類設計
博客推薦 - 博主 - 吾非言 -【Android】BaseActivity基類設計
1.4 日誌管理
1.4.1 Klog
使用方法:博客推薦 - 博主 - 熊旭川 - Klog的使用
項目地址:https://github.com/ZhaoKaiQiang/KLog
1.5 標題欄
博客推薦 - 博主 - lovesosoi - Android 去掉標題欄的真正使用方式
1.6 側滑返回
1.6.1 swipeback-android 側滑返回控件
側滑返回控件,支持右滑手勢以及下拉手勢
項目地址:https://github.com/1004145468/swipeback-android
1.7 網絡請求框架
1.7.1 Retrofit
博客推薦 - 博主 - SHERLOCKvv - 網絡加載框架 - Retrofit
博客推薦 - 博主 - Carson_Ho - Android Retrofit 2.0 的詳細使用攻略(含實例講解)
博客推薦 - 博主 - Carson_Ho - Android:Retrofit 結合 RxJava的優雅使用(含實例教程)
博客推薦 - 博主 - 5ingwings - Retrofit2.0(三)封裝:如超時設置,加請求頭,加公共請求參數,加攔截器等
博客推薦 - 博主 - ding_GC - Retrofit 攔截器-基礎公共參數攔截器實現
博客推薦 - 博主 - 不對法 - retrofit http取消請求
1.8 沉浸式開發
1.8.1 ImmersionBar 沉浸式狀態欄和沉浸式導航欄管理
android 4.4以上沉浸式狀態欄和沉浸式導航欄管理,適配橫豎屏切換、劉海屏、軟鍵盤彈出等問題,可以修改狀態欄字體顏色和導航欄圖標顏色,以及不可修改字體顏色手機的適配,適用於Activity、Fragment、DialogFragment、Dialog,PopupWindow,一句代碼輕鬆實現,以及對bar的其他設置。
使用方法:博客推薦 - 博主 - HeLe小子拽 - android4.4以上沉浸式狀態欄和導航欄實現以及Bar的其他管理
項目地址:https://github.com/gyf-dev/ImmersionBar
1.9 數據庫管理
1.9.1 GreenDao
博客推薦 - 博主 - 大城小小愛 - GreenDao:3.2.0用法
博客推薦 - 博主 - 閒庭CC - GreenDao3.0簡單使用
博客推薦 - 博主 - 閒庭CC - GreenDao設置數據庫路徑以及數據庫升級
1.9.2 LitePal
使用方法:博客推薦 - 博主 - guolin - SQLite中一些不爲人知的使用技巧,以及全面剖析 LitePal 這款Android數據庫框架的所有用法
項目地址:https://github.com/LitePalFramework/LitePal
1.10 事件分發處理
1.10.1 EventBus
項目地址:https://github.com/greenrobot/EventBus
1.11 圖片加載
1.11.1 Glide
使用方法:博客推薦 - 博主 - guolin - Glide最全解析
使用方法:博客推薦 - 博主 - 遺失的流年 - roid圖片加載框架Glide用法
GitHub:glide-transformations實現圖片變換
二 Android
2.1 開發環境搭建
博客推薦 - 博主 - 風之盔 - 查看Android API文檔的正確方式
Android Studio 下載 Gradle 失敗或下載速度慢的解決方案
博客推薦 - 博主 - 生命壹號 - Android Studio中gradle項目構建
博客推薦 - 博主 - 生命壹號 - Android Studio新建工程並安裝Genymotion模擬器
博客推薦 - 博主 - 生命壹號 - Android Studio的常用配置
博客推薦 - 博主 - 顯卡84du - Android Studio配置文件路徑修改
博客推薦 - 博主 - SurprisedHao - AndroidStudio連不上Android設備真機
博客推薦 - 博主 - 菩提樹下的楊過 - 在MAC中安裝Android SDK
2.2 開發框架/小工具
2.2.1 圖片處理
2.2.1.1 banner 廣告圖片輪播控件
Android廣告圖片輪播控件,支持無限循環和多種主題,可以靈活設置輪播樣式、動畫、輪播和切換時間、位置、圖片加載框架等!
項目地址:https://github.com/youth5201314/banner
2.2.1.2 圖片切換效果
博客推薦 - 博主 - 分享是總結學習的一種好方法 - Android Banner圖片輪播控件 + ViewPagerIndicator + ViewPager 炫酷切換效果大全收集
2.2.2 組件
2.2.2.1 Butterknife 組件依賴注入
項目地址:https://github.com/JakeWharton/butterknife
2.2.2.2 Android-PickerView 仿iOS的PickerView控件
Android-PickerView是一款仿iOS的PickerView控件,帶有3D圓弧效果,並封裝了時間選擇和選項選擇這兩種選擇器。
時間選擇器、省市區三級聯動。
項目地址:https://github.com/Bigkoo/Android-PickerView
文檔地址:https://github.com/Bigkoo/Android-PickerView/wiki
2.2.2.3 FlycoTabLayout 一個Android TabLayout庫
項目地址:https://github.com/H07000223/FlycoTabLayout/blob/master/README_CN.md
2.2.2.4 XFrame Android快速開發框架
XFrame - Android快速開發框架:主要是封裝有Http網絡隔離框架、日誌、緩存、加載等待、toast、頁面狀態佈局管理、權限、自定義view等常用的集合框架,減少開發成本,提高軟件體驗!
項目地址:https://github.com/youth5201314/XFrame
說明文檔:https://github.com/youth5201314/XFrame/wiki
2.3 Gradle插件
2.4 開發組件
2.4.1 ListView 列表組件
ListView組件中嵌套GridView(重算GridView的高度)
Android列表組件ListView子項的點擊事件與子項中組件的點擊事件
Android列表組件ListView使用詳解之滑動事件監聽
Android列表組件ListView使用詳解之屏幕觸摸事件
Android列表組件ListView使用詳解之數據爲空提示信息
Android列表組件ListView使用詳解之動態加載或修改列表數據
Android列表組件ListView使用詳解之設置顯示第幾項子項
Android列表組件ListView使用詳解之取消子項的點擊效果
Android列表組件ListView使用詳解之ViewHolder提高效率
2.4.2 RadioButton 單選按鈕
博客推薦 - 博主 _張風捷特烈 - 自定義RadioButton:改變文字上、下、左、右圖片,可設置圖片大小(寬高)
2.4.3 Android四大組件
2.4.5 TextView 文本組件
2.4.6 GridView 九空格佈局組件
2.4.7 CheckBox 複選框
2.5 異常問題分析
2.5.1 相機
2.6 APP權限調用
博客推薦 - 博主 - hmg25 - Android權限sharedUserId使用:設備關機重啓、調用隱藏方法、靜默安裝升級卸載APP等需要使用system權限的場景
2.7 APP功能開發
博客推薦 - 博主 - 淡漠de人生 - 栗子——ListView實現篩選菜單滑動吸頂懸停
博客推薦 - 博主 - 淡漠de人生 - 栗子——嵌套組合實現篩選菜單滑動吸頂懸停 Android新特性
博客推薦 - 博主 -下沉的代碼 - 自定義Android消息推送提示音
2.8 數據存儲
2.9 APP性能優化
2.9.1 內存優化
博客推薦 - 博主 - Sun‘刺眼的博客 - 在Android中解決內存溢出 – OutOfMemoryError
博客推薦 - 博主 - Scorpio_Happy - java.lang.OutOfMemoryError
博客推薦 - 博主 - 大聖代 - Android性能優化之內存
博客推薦 - 博主 - 大聖代 - Android UI性能優化
2.9.2 圖片優化
博客推薦 - 博主 - guolin - Android高效加載大圖、多圖解決方案,有效避免程序OOM
2.9.2.1 Compressor 圖片壓縮
項目地址:https://github.com/zetbaitsu/Compressor
2.9.2.2 Luban 可能是最接近微信朋友圈的圖片壓縮算法
項目地址:https://github.com/Curzibn/Luban
2.9.2.3 android和RxJava配合使用的兩個圖片壓縮框架LuBan、Compressor
博客推薦 - 博主 - 曉果博客 - android 和RxJava配合使用的兩個圖片壓縮框架LuBan、Compressor
2.10 APP兼容性適配
2.11 apk靜默升級常用處理方式 打包
博客推薦 - 博主 - 手工藝人 - Android實現靜默安裝的兩種方法,android 靜默升級
博客推薦 - 博主 - qhs1573 - Android Apk靜默安裝的方法(後臺安裝)
博客推薦 - 博主 - 九九叔 - 不可實現的Android靜默安裝
博客推薦 - 博主 - Goingmerry - Apk安裝:應用未安裝,解決辦法
博客推薦 - 博主 - erweimaerweima - Android Studio 打包時 Signature Version V1 V2
2.12 與前端頁面交互
博客推薦 - 博主 - 少問,多查,靠自己 - Android開發 assets目錄
三 Java
3.1 基礎語法
3.2 算法
四 代碼管理
4.1 Git
博客推薦 - 博主 - UTF槓8 - windows 下修改git 登錄賬號密碼
4.2 SVN
SVN本地代碼管理工具TortoiseSVN小烏龜的安裝使用
4.3 Maven中央倉庫
五 數據庫
六 MarkDown
編輯工具:MarkdownPad編輯器
博客推薦 - 博主 - 娃哈哈、 - MarkDown頁面添加錨點,跳轉到本頁指定位置
博客推薦 - 博主 - AWeiLoveAndroid - 開發工具總結(5)之Markdown語法圖文全面詳解及其工具介紹
七 算法
八 工具
九 自我提升
十 前端
10.1 WebStorm開發工具
10.2 JsBridge實戰
打造專屬你的Hybrid APP
博客推薦 - 博主 - Tamic - Android JsBridge實戰 打造專屬你的Hybrid APP
十一 移動跨平臺開發
11.1 Ionic
Ionic創建項目失敗Error: read ETIMEDOUT解決方案
Ionic-Android平臺項目調試時出錯:The connection to the server was unsuccessful
Ionic 介紹、安裝、配置、項目不同平臺編譯、DeBug調試經驗總結
11.2 Hybrid
博客推薦 - 博主 - 撒網要見魚 - Hybrid APP 混合開發模式的選擇之路(六:JSBridge—Native代碼與JS代碼的通信橋樑)
博客推薦 - 博主 - 撒網要見魚 - Hybrid APP 混合開發模式的選擇之路(五:原生和H5的交互原理)
博客推薦 - 博主 - 撒網要見魚 - Hybrid APP 混合開發模式的選擇之路(四)
博客推薦 - 博主 - 撒網要見魚 - Hybrid APP 混合開發模式的選擇之路(三)
博客推薦 - 博主 - 撒網要見魚 - Hybrid APP 混合開發模式的選擇之路(二)
InfoQ - Hybrid APP 混合開發模式的選擇之路(一)
十二 蘋果端
12.1 iOS
12.1.1 Objective-C
iOS網絡請求錯誤nw_proxy_resolver_create_parsed_array PAC evaluation error: NSURLErrorDomain: -1004
12.2 Mac配置
十三 大數據
博客推薦 - 博主 - big大鳥 - 大數據?什麼是大數據(大數據的概念)?大數據的價值?
十四 面試技巧
14.1 Java基礎
Java基礎面試題:String與StringBuffer的區別
14.2 面試細節
博客推薦 - 博主 - Linux雲計算數據自學 - 程序員面試→如何巧妙的談薪資?
14.3 Android
博客推薦 - 博主 - 劉望舒 - Android面試題總結加強版(一)
博客推薦 - 博主 - 劉望舒 - Android面試題總結加強版(二)
博客推薦 - 博主 - 劉望舒 - Android面試題總結加強版(三)
博客推薦 - 博主 - 劉望舒 - Android面試題總結加強版(四)
十五 ADB命令
十六 藍牙
博客推薦 - 博主 - RalfNick - Android 藍牙開發 —— BLE
十七 即時通訊
17.1 網易雲信
17.2 環信
17.3 融雲
17.4 極光
17.5 容聯雲通訊
17.6 LeanCloud
17.7 親加通訊雲
17.8 aurora-imui 通用的即時通訊(IM)UI 庫
Aurora IMUI 是個通用的即時通訊(IM)UI 庫,不特定於任何 IM SDK。
本 UI 庫提供了消息列表、輸入視圖等常用組件,支持常見的消息類型:文字、圖片、語音、視頻等。默認包含多套界面風格,也能根據自己的需要自定義。
項目地址:https://github.com/jpush/aurora-imui/blob/master/README_zh.md
17.9 國內主流IM即時通訊平臺綜合評測
相關參考資料來源於 企業服務匯
http://www.chiefmore.com/yuntongxun/3643.jhtml
服務平臺 | IM即時通訊功能服務與性能 | IM即時通訊功能接入與部署方式 | IM即時通訊功能收費 |
---|---|---|---|
環信 | 目前環信可以提供比較完善的人與人之間的聊天與消息功能,不過在人與智能機器人聊天方面僅支持最基礎的機器人服務,適用於在線客服類產品,在這一點上與容聯雲通訊和網易雲信相比有一定的不足。 | 在這四家服務商中,環信唯一提供React Native demo接口來方便企業集成實現其IM功能,這對於一些使用JavaScript和React來開發原生的iOS和Android產品應用的企業來說十分友好,它可以幫助企業有效提升產品IM功能的開發效率;另外環信支持上述全部的公有云、私有云、專有云、託管雲以及海外部署方式,企業在部署時面臨的選擇性非常靈活。 | 目前環信、容聯雲通訊、極光推送、網易雲信這四家雲通訊平臺,在IM即時通訊功能的收費價格方面,均按照基礎IM功能(通常按照產品日活數收費)、增值IM功能(最典型的是實時音視頻通話功能,按照使用分鐘數收費)以及擴展IM功能分別進行收費。企業在選購時,需要根據自己的產品類型、實際需要的IM即時通訊功能以及實際的產品日活數來進行綜合選擇。 |
容聯雲通訊 | 目前容聯雲通訊提供非常豐富的聊天與消息功能 ,支持人與智能機器之間的單聊、羣聊以及閒聊語料、天氣查詢等個性化聊天功能,可有效提升用戶使用體驗和產品活躍度;不過容聯雲通訊在性能水平方面,目前暫不支持智能反垃圾服務和敏感詞過濾服務,企業對於用戶在聊天過程中產生的消息可能無法做到有效的實時監控,從而不利於企業構建良好的網絡聊天環境。 | 目前容聯雲通訊僅支持最基礎的接入方式,並且還支持專有云部署方式,與其他服務商相比並無特別之處。 | 目前環信、容聯雲通訊、極光推送、網易雲信這四家雲通訊平臺,在IM即時通訊功能的收費價格方面,均按照基礎IM功能(通常按照產品日活數收費)、增值IM功能(最典型的是實時音視頻通話功能,按照使用分鐘數收費)以及擴展IM功能分別進行收費。企業在選購時,需要根據自己的產品類型、實際需要的IM即時通訊功能以及實際的產品日活數來進行綜合選擇。 |
極光 | 目前極光推送不提供聊天室功能(在視頻直播類產品中經常用到)、實時音視頻通話功能(在熟人社交/在線教育/在線醫療等需要直接通話才能實現有效溝通的產品中經常用到)以及人與智能機器人聊天等功能,僅可以爲企業提供最基礎的聊天與消息功能,與其他服務商相比具有較爲明顯的不足,因此僅能夠滿足企業產品最基本的IM即時通訊需求,適用於有輕量級的IM即時通訊功能需求的企業。 | 目前與其他三家服務商相比,極光推送支持的接入與部署方式均是最少的,在這一點上有一定的不足。 | 目前環信、容聯雲通訊、極光推送、網易雲信這四家雲通訊平臺,在IM即時通訊功能的收費價格方面,均按照基礎IM功能(通常按照產品日活數收費)、增值IM功能(最典型的是實時音視頻通話功能,按照使用分鐘數收費)以及擴展IM功能分別進行收費。企業在選購時,需要根據自己的產品類型、實際需要的IM即時通訊功能以及實際的產品日活數來進行綜合選擇。 |
網易雲信 | 與其他三家服務商相比,目前網易雲信提供的IM聊天與消息功能最爲完善,並且網易雲信還唯一支持用戶託管功能,可以幫助企業有效維護閒置的用戶資料/關係;另外網易雲信提供的人與智能機器人聊天功能也比較豐富,也支持人機之間的單聊、羣聊等功能,適用於在線教育、企業協同辦公以及智能客服等產品。 | 目前網易雲信與其他三家服務商相比,支持的接入方式最爲全面,並且唯一支持macOS、Cocos-2d和Unity這三個平臺系統的接入,在這一點有較大的競爭優勢。 | 目前環信、容聯雲通訊、極光推送、網易雲信這四家雲通訊平臺,在IM即時通訊功能的收費價格方面,均按照基礎IM功能(通常按照產品日活數收費)、增值IM功能(最典型的是實時音視頻通話功能,按照使用分鐘數收費)以及擴展IM功能分別進行收費。企業在選購時,需要根據自己的產品類型、實際需要的IM即時通訊功能以及實際的產品日活數來進行綜合選擇。 |
服務平臺 | IM即時通訊功能服務與性能 | IM即時通訊功能接入與部署方式 | IM即時通訊功能收費 |
---|---|---|---|
融雲 | 與其他兩家服務商相比,融雲唯一提供非常完整的實時音視頻通話功能,並且支持企業基於此功能實現視頻會議功能,在這一點融雲有着較大的競爭優勢。同時融雲還支持在後臺爲企業提供完善的後臺數據統計功能,方便企業直接查看用戶活躍以及費用消耗方面的數據。 | 與其他兩家服務商相比,目前融雲唯一支持macOS、Linux等平臺系統的接入,對於基於這兩大平臺開發產品的企業非常友好,企業可以實現快速接入;另外融雲也可以單獨提供專有云部署服務,通過爲企業提供專有的服務集羣和海外數據中心,來充分滿足企業的特殊需求,企業在部署方式方面選擇性很強。 | 目前融雲、LeanCloud、親加通訊雲這三家雲通訊平臺,在IM即時通訊功能的收費價格方面,其收費方式和收費標準各不一樣,具體如下:融雲主要是按照產品日活數按月收費;LeanCloud主要是按照產品日活數按天收費(其中美國和中國分別收費);而親加通訊雲因爲本身僅專注於爲企業的視頻直播和遊戲類產品提供服務,因此按照直播時的使用帶寬峯值以及產品日活數分別收費。企業在選購時,需要明確自己產品的類型、需要的IM即時通訊功能以及目前比較穩定的產品日活數來綜合對比進行選擇。 |
LeanCloud | 目前LeanCloud不支持實時音視頻通話功能,僅爲企業提供最基礎的聊天服務;同時LeanCloud在海外僅支持美國用戶使用其服務,不支持全球範圍內的其他國家或地區使用,與另外兩家服務商相比有一定的不足。 | 目前LeanCloud僅支持最基礎最常見的接入與部署方式,與其他兩家服務商相比表現較爲一般。 | 目前融雲、LeanCloud、親加通訊雲這三家雲通訊平臺,在IM即時通訊功能的收費價格方面,其收費方式和收費標準各不一樣,具體如下:融雲主要是按照產品日活數按月收費;LeanCloud主要是按照產品日活數按天收費(其中美國和中國分別收費);而親加通訊雲因爲本身僅專注於爲企業的視頻直播和遊戲類產品提供服務,因此按照直播時的使用帶寬峯值以及產品日活數分別收費。企業在選購時,需要明確自己產品的類型、需要的IM即時通訊功能以及目前比較穩定的產品日活數來綜合對比進行選擇。 |
親加通訊雲 | 親加通訊雲與其他兩家服務商最大的不同在於——親加通訊雲本身僅專注於爲企業的視頻直播以及遊戲類產品提供IM即時通訊服務,這一點企業在選購時需要特別注意。另外親加通訊雲可以爲企業提供最基礎的聊天功能以及實時音頻通話功能,通常適用於遊戲類的產品。 | 與其他兩家服務商相比,目前親加通訊雲最大的不同在於——在接入方式上唯一支持Unity和Cocos-2d這兩大手遊引擎的接入,因此非常適用於開發遊戲類產品的企業。 | 目前融雲、LeanCloud、親加通訊雲這三家雲通訊平臺,在IM即時通訊功能的收費價格方面,其收費方式和收費標準各不一樣,具體如下:融雲主要是按照產品日活數按月收費;LeanCloud主要是按照產品日活數按天收費(其中美國和中國分別收費);而親加通訊雲因爲本身僅專注於爲企業的視頻直播和遊戲類產品提供服務,因此按照直播時的使用帶寬峯值以及產品日活數分別收費。企業在選購時,需要明確自己產品的類型、需要的IM即時通訊功能以及目前比較穩定的產品日活數來綜合對比進行選擇。 |