APP移动开发完整流程知识点总结
2022-10-13 09:37:35 0 举报
AI智能生成
APP移动开发完整流程知识点总结
作者其他创作
大纲/内容
基础
Java基础
浅析Java中的final关键字
注释说明
@author 对类的说明 标明开发该类模块的作者
@version 对类的说明 标明该类模块的版本
@see 对类、属性、方法的说明 参考转向,也就是相关主题
@param 对方法的说明 对方法中某参数的说明
@return 对方法的说明 对方法返回值的说明
@exception 对方法的说明 对方法可能抛出的异常进行说明
@Time2012-11-20 15:02:29
@since
@description: 这是用户类
@methodsName
@link 语法{@link package.class#member label}
java中for和foreach的区别
区别
性能比较
开发点滴
byte[]与十六进制字符串相互转换
Array和及平均数
Kotlin
数据结构
链表
队列
栈
数组
哈希表
HashMap
二分查找
二叉树
N叉树
B树
数据结构和算法
结构
线性表
数组
链表
单链表
双向链表
循环链表
双向循环链表
静态链表
栈
顺序栈
链式栈
队列
普通队列
双端队列
阻塞队列
并发队列
阻塞并发队列
散列表
散列函数
冲突解决
链表法
开发寻址
其他
动态扩容
位图
树
二叉树
平衡二叉树
二叉查找树
平衡二叉查找树
AVL树
红黑树
完全二叉树
满二叉树
多路查找树
B树
B+树
2-3树
2-3-4树
堆
小顶堆
大顶堆
优先级队列
斐波那契堆
二项堆
其他
树状数组
线段树
图
图的存储
邻接矩阵
邻接表
拓扑排序
最短路径
关键路径
最小生成树
二分图
最大流
复杂度分析
空间复杂度
时间复杂度
最好
最坏
平均
均摊
基本算法思想
贪心算法
分治算法
动态规划
回溯算法
枚举算法
排序
O(n*2)
冒泡
插入排序
选择
希尔
O(nlogn)
并归
快排
堆排序
O(n)
计数排序
基数排序
桶排序
搜索
深度优先搜索
广度优先搜索
启发式搜索
查找
线性表查找
树结构查找
散列表查找
字符串匹配
朴素
KMP
Robin-Karp
Boyer-Macore
AC自动机
Trie
后缀数组
其他
数论
计数几何
概率分析
并查集
拓扑网络
矩阵运算
线性规划
leetcode
递归
接雨水
剑指offer
https://www.jianshu.com/p/4a889d052127
题目一:找出数组中重复的数字
其他算法
github开源上有配图的java算法
设计模式
设计模式六大原则
开闭原则(Open Close Principle)
类、 模块、 函数 等 应该 是 可以 拓展 的, 但是 不可 修改。
单一职责
就 一个 类 而言, 应该 仅有 一个 引起 它 变化 的 原因。
里氏代换原则(Liskov Substitution Principle)
所有 引用 基 类( 父 类) 的 地方 必须 能 透明 地 使用 其 子类 的 对象。
依赖倒转原则(Dependence Inversion Principle)
针对接口编程,依赖于抽象而不依赖于具体
接口隔离原则(Interface Segregation Principle)
一个 类 对 另一个 类 的 依赖 应该 建立 在最 小的 接口 上。
迪米特法则,又称最少知道原则(Demeter Principle)
一个 软件 实体 应当 尽可能 少地 与其 他 实体 发生 相互作用。
合成复用原则(Composite Reuse Principle)
创建型模式
工厂模式
抽象工厂模式
单例模式
静态 内 部类 单 例 模式
建造者模式
原型模式
结构型模式
适配器模式
桥接模式
过滤器模式
组合模式
装饰器模式
外观模式
享元模式
代理模式
行为型模式
责任链模式
命令模式
解释器模式
迭代器模式
中介者模式
备忘录模式
观察者模式
状态模式
策略模式
模板模式
访问者模式
J2EE模式
MVC 模式
业务代表模式
组合实体模式
数据访问对象模式
前端控制器模式
拦截过滤器模式
服务定位器模式
传输对象模式
空对象模式
多线程
线程池
开发环境
Kotlin
Retrofit+RxJava, 开启 LiveData+Retrofit
Dart
Book
三步读书法
同一个技能方向按照难度选取3到5本书阅读,其中最好的书读3遍
碎片化时间系统学习
要想真正掌握一本书的核心内容,需要读三遍。第一遍:细读,目的在于完整阅读全书,并且划出重点,写上读书笔记;一个月后读第二遍:扫读,主要快速翻阅第一遍阅读时做的笔记和划的重点,目的在于加深记忆;半年后第三遍:忆读,读的时候只看目录,然后去回想内容,如果回想不起来,再去进行扫读。这样三遍下来,基本上一本书的核心内容就能够很好的吸收。
Android进阶之光
目录摘要
Android新特性
替换 ListView 和 GridView 的 RecyclerView
Palette
运行时权限机制
PermissionsDispatcher(见框架)
MaterialDesign
Snackbar
TextInputLayout
FloatingActionButton
View体系
多线程编程
安全地终止线程
同步
volatile
线程池
AsyncTask解析
网络框架
volley
okHttp
Retrofit
设计模式(见基础部分->设计模式)
事件总线
eventBus
otto
函数响应式编程
Rxjava
注解与依赖框架
butterKnife
Dagger2
注解定义与使用
依赖定义与使用
应用架构设计
MVC模式
MVP模式
MVVM模式
系统架构与MediaPlay框架
Android应用性能优化最佳实践
硬件加速控制级别
卡顿监控与实现
自定义Printer
给UI主线程发定时任务
开源组件
Retrofit 2.0
这是一份全面 & 详细的Retrofit 2.0 源码分析指南
视频解说
动态请求头
RxJava2.X
这可能是最好的RxJava 2.x 教程(完结版
okhttp3.0
子主题
OKHttpFinal
拦截器
LitePal
一些使用方式
butterknife
implementation 'com.jakewharton:butterknife:8.4.0'<br> annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
AST
ButterKnife Zelezny插件的安装与使用
activity和Fragment中使用的区别
Dagger2
PermissionsDispatcher
Glide
Gson
使用
List<Person> persons = gson.fromJson(json, new TypeToken<List<Person>>() {<br> }.getType());//对于不是类的情况,用这个参数给出
联系人列表
TensorFlow
Lottie
平台框架
Flutter
android 和 flutter 混合开发
开发文档
开源项目
阿里练习项目
GSYGithubAppFlutter
Flutter-Notebook
flutter_app
《Flutter 实战》
开源地址
Flutter平台适配
另外有一个小技巧,就是你想看什么方向技术的时候,果断用 awesome + 关键词 搜索。<br>
Kotlin vs Flutter,我到底应该怎么选?
Weex
鸿蒙系统
方舟
架构
RESTful
RESTful 架构详解
【Restful】三分钟彻底了解Restful最佳实践
子主题
注解与依赖
注解
@Override
@Deprecated
@SuppressWarnings
@SafeVarargs
@SafeVarargs
元注解
@Targe
@Inherited
@Documented
@Retention
@Repeatable
注解定义使用
依赖注入的原理
Andoid
AIDL
Android:学习AIDL,这一篇文章就够了(上)
Binder
写给 Android 应用工程师的 Binder 原理剖析
Android Bander设计与实现 - 设计篇
Binder简介
国际化
权限管理
运行时权限使用
UI
布局
关于ConstraintLayout的部分属性总结
Android中RelativeLayout和LinearLayout性能分析
ConstraintLayout UI性能分析(劣势)
解析ConstraintLayout的性能优势(优势)
标签布局
FlowLayout
FlowTagLayout
View
Android View绘制和显示原理简介
部分继承关系
View
ViewGroup
FrameLayout
DatePicker
TimePicker
CalendarView
LinearLayout
Tablelayout
RadioGroup
RelativeLayout
TextView
EditText
不弹出输入法
Button
CompoundButton
CheckBox
RadioButton
CheckedTextView
AnalogClock
ProgressBar
AbsSeekBar
RatingBar
SeekBar
ImageView
ImageButton
QuickContactBadge
SurfaceView
VideoView
Android应用程序与SurfaceFlinger服务的关系概述和学习计划
Resource
UI 事件传递
Android-UI事件传递就是这么个事儿
Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
动画
Android属性动画深入分析
组件使用
RecyclerView
博客讲解
视频讲解
自动滑动到底部
WebView
https://chrome//inspect
与JS交互
上传图片(base64)到H5(JS)
约定一:调用H5中js方法传递参数统一采用jsonObject对象
调用JS代码
JS调用java代码
Spinner
使用
popupwindow
底部弹出+背景半透明
ConstraintLayout
https://blog.csdn.net/guolin_blog/article/details/53122387
LinearLayout设置透明度
Dialog
DatePickerDialog
https://www.jianshu.com/p/f5e2ae44f25b
Toast
字体大小
自定义界面
浮窗
gitHub
https://github.com/lichong951/camera
shape
shape绘制边框
基本使用
多级列表结构
https://github.com/WelliJohn/MultiLevelRecyclerView
https://github.com/SuperZhouyong/AdapterDemo
camera
CameraX
相册选择
通信
HTTP
HTTP状态码100-500+详解
HTTP中的Host字段
Socket
Bluetooth
NFC
USB
Wifi
串口通信
串口工具
开源串口工具项目
串口项目
串口调试工具
大端小端解析格式
切换大小端续
java异或校检
性能调优工具
Java 如何有效地避免OOM:善于利用软引用和弱引用
Android内存优化(一)DVM和ART原理初探
内存异常
infer
虚拟机
Dalvik虚拟机进程和线程的创建过程分析
数据持久化
SqlLite
File
SharedPreferences
保活
Android进程保活的一般套路
NDK
并发
你真的了解volatile关键字吗?
Android中的多进程模式-开启多进程模式
《Android开发艺术探索》 -- AsyncTask 工作原理
Android 多线程之IntentService 完全详解
Android 多线程之HandlerThread 完全详解
Hanler系列
Android源码解析Handler系列
Handler专辑
Android中为什么主线程不会因为Looper.loop()里的死循环卡死?
多媒体
音频
AndroidManifest
Fragment
Intent
Context
四大组件
Activity
android跳转到另一个Activity三种方法
我打赌你一定没搞明白的Activity启动模式
启动模式理解
Service
关于Android Service真正的完全详解,你需要知道的一切
BroadcastReceiver
ContentProvider
AndroidSdk
基础依赖库
Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91<br> is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).<br> Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:36:5-364:19 to override.
多版本迁移解决
LeakCanary
源码
UI功能特效
探照灯
二维码
定制化开发二维码扫描界面
推荐使用https://github.com/journeyapps/zxing-android-embedded
填空题View特效
啡常OK
Excel电子表格
ZzExcelCreator
GitHub
逆向
因一纸设计稿,我把竞品APP扒得裤衩不剩(上)
构建异常
Execution failed for task ':app:mergeDebugJavaResource'. > A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade > More than one file was found with OS independent path 'META-INF/DEPENDENCIES'<br>
系统签名
Benchmark
google benchmark主要是对c++中的函数进行基准功能测试。
版本更新框架
XUpdate
AndroidStudio
插件集
常用21款插件
Genymotion
virtualBox
Genymotion
快捷键
https://mp.weixin.qq.com/s/eMrBP72V9D7oaVlmaTym8g
ERROR: Unable to resolve dependency for
Android Tools
查找
https://mp.weixin.qq.com/s/_pXtKCW60bIeZFxW8FKdXA
异常情况
mac Android studio com.intellij.ide.plugins.PluginManager$StartupAbortedExceptiir
AS Debug还能这么玩?我也是服
ADB
adb通过wifi连接android设备
查询分辨率
adb shell wm size
adb命令集合
android面试资料
android_interviews
随机数
小程序
小程序注册
搭建环境
调试Helloworld
代码结构
配置文件
json
project.config.json
app.json
pages:页面
tabBar
页面结构
VIEW
button
页面样式
页面交互
事件机制项
tap
catchtap
冒泡策略
事件绑定
bindtap
云开发
云函数
云数据库
数据类型
String:字符
Number:数字
Object:对象
Array:数组
Bool:布尔
GeoPoint:地理位置点
Date:日期时间
子主题
云存储
上传文件
文件下载
第三方组件库
分页加载
UI框架
vant
mpx
图片轮播
组件
camera
全屏预览
预览帧回调
预览帧参数解析
参数
arrayBuffer
参数值是RGBA值
转换为base64
首先进行png||jpg处理
然后进行base64转换
下载upng.js和piko.mini.js
arrayBuffer转换为可识别图片base64
开发工具
Git
Gradle
版本自增
Gradle User Guide 中文版
Tasks
构建异常
SSL peer shut down incorrectly
jenkins
APK加固
蒲公英
接口测试
https://www.eolinker.com/
JSON Quick Format
同屏工具
vysor
scrcpy
win
linux
mac
友盟
工具类IO
CL编程指南
热修复
简称 "DoKit" 。一款功能齐全的客户端( iOS 、Android、微信小程序 )研发助手,你值得拥有。
子主题
vcn--mac同屏工具
单元测试
Android
Android单元测试 - 几个重要问题
gradlew test
test
Context#getString(int)的测试用例
SHaredPreference
隔离native方法
在内部new,不方便Mock
本地单元测试-文件操作
Androidtest
SharedPreference的实现
UI测试
Espresso
UI Automator
压力测试
Monkey
配方一
// Robolectric<br> testImplementation 'org.robolectric:robolectric:4.3'<br> testImplementation "org.robolectric:shadows-multidex:4.3"<br>// androidx<br> androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'<br> // Core library<br> androidTestImplementation 'androidx.test:core:1.0.0'<br><br> // AndroidJUnitRunner and JUnit Rules<br> androidTestImplementation 'androidx.test:runner:1.1.0'<br> androidTestImplementation 'androidx.test:rules:1.1.0'<br><br> // Assertions<br> androidTestImplementation 'androidx.test.ext:junit:1.0.0'<br> androidTestImplementation 'androidx.test.ext:truth:1.0.0'<br> androidTestImplementation 'com.google.truth:truth:0.42'<br><br> // Espresso dependencies<br> androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'<br> androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.0'<br> androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.0'<br> androidTestImplementation 'androidx.test.espresso:espresso-accessibility:3.1.0'<br> androidTestImplementation 'androidx.test.espresso:espresso-web:3.1.0'<br> androidTestImplementation 'androidx.test.espresso.idling:idling-concurrent:3.1.0'
// PowerMock brings in the mockito dependency<br> testCompile 'org.powermock:powermock-module-junit4:1.6.5'<br> testCompile 'org.powermock:powermock-module-junit4-rule:1.6.5'<br> testCompile 'org.powermock:powermock-api-mockito:1.6.5'<br> testCompile 'org.powermock:powermock-classloading-xstream:1.6.5'
Junit
@Test
@Test(expected = ParseException.class)
建议使用下面规则测试异常 @Rule <br>publicExpectedException expectedEx = ExpectedException.none(); <br> <br>@Test <br>publicvoid passwordIsEmptyThrowsException() throwsInvalidPasswordException { <br> expectedEx.expect(InvalidPasswordException.class); <br> expectedEx.expectMessage("required"); <br> Password.validate(""); <br>}
Mocktio
testImplementation 'org.mockito:mockito-core:2.19.0'<br>
例子
使用说明
powermock
testImplementation 'org.powermock:powermock-api-mockito2:1.7.4'<br> testImplementation 'org.powermock:powermock-module-junit4:1.7.4'<br>
例子
Robolectric
testImplementation "org.robolectric:robolectric:3.8"<br><br>android {<br> ...<br> testOptions {<br> unitTests {<br> includeAndroidResources = true<br> }<br> }<br>}<br>
例子
https://blog.csdn.net/shensky711/article/details/53561172
https://www.jianshu.com/p/c6d91b8a491f
异常情况
Caused by: java.lang.UnsupportedOperationException: XML file /Users/lichong/Documents/com.glodon/code/GateFaceAndroid/app/build/intermediates/merged-not-compiled-resources/debug/layout/glodon_launch_activity.xml line #-1 (sorry, not yet implemented): You must supply a layout_height attribute.
android.content.res.Resources$NotFoundException: Resource ID #0x7f060054
Caused by: java.lang.UnsupportedOperationException: Binary XML file line #10: You must supply a layout_height attribute.
和demin有关系
https://github.com/robolectric/robolectric/issues/1769
java.lang.RuntimeException: Method setLocale in android.content.res.Configuration not mocked. See http://g.co/androidstudio/not-mocked for details.
java.lang.RuntimeException: Method getMainLooper in android.os.Looper not mocked. See http://g.co/androidstudio/not-mocked for details.
@RunWith(RobolectricTestRunner.class)
java.lang.Exception: Main looper has queued unexecuted runnables. This might be the cause of the test failure. You might need a shadowOf(getMainLooper()).idle() call.
@LooperMode(LooperMode.Mode.PAUSED)<br>
TextView
ImageVIew
https://stackoverflow.com/questions/18008044/assert-imageview-was-loaded-with-specific-drawable-resource-id
AndroidX Test
测试结构
JUnit4+Mockito+PowerMockito+Robolectric
安全
手机功能
资源网站
图标
https://www.iconfont.cn/search/index?q=movie
玩Android
beJson
亿级流量大型网站
慕课视频网
热修复
制图
RemixIcon
菜鸟教程Kotlin
ss免费账号
0 条评论
下一页
为你推荐
查看更多