从没有白费的努力,也没有碰巧的成功。只要认真对待生活,终有一天,你的每一份努力,都将绚烂成花。
前言
为了方便阅读博主博客,梳理了博主相关文章,本文将持续更新,记录博主开发过程中的成长经历,跳过开发中踩过的坑,快速实现移动端产品的开发、更新和迭代。
博主自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即时通讯功能以及目前比较稳定的产品日活数来综合对比进行选择。 |