android架构

作为测试人员,不能不懂的adb命令和操作

醉酒当歌 提交于 2019-11-26 14:20:21
刚从web转到app测试,很多知识需要补充,记录一下 1.概念 其实我们口中所讲的adb是个泛指,这其中有两个工具——Fastboot和ADB fastboot 快速启动,usb链接数据线的一种刷机方式 ADB 调试安卓或者按照app的工具,是安卓sdk中的一种工具,用此工具可以调试安卓模拟器或者真机 ps:冷知识 一般Android设备连接WinXP是无需安装驱动的 2.adb的功能 运行设备的shell(命令行) 管理模拟器或设备的 端口映射 计算机和设备之间上传/下载文件 将本地apk软件安装至模拟器或android设备 ADB是一个客户端-服务器端 程序, 其中客户端是你用来操作的电脑, 服务器端是android设备。而ADB驱动就是电脑与android设备的通信的客户端驱动程序。 所有能对手机的操作都能用adb实现。也就是说如果你玩的6,你就是触摸屏完全坏了,显示屏完全坏了,就只是给你一个主板,你照样能完成你要做的动作。当然在一般场景不推荐这样做,效率优先嘛。 ps:下载adb工具的时候,很多包都把这两个工具打包在一起了 3.使用方法 a.电脑下载并安装好adb工具 安卓开发者网站 https://developer.android.google.cn/studio/releases/platform-tools?hl=en 下载对应的adb安卓包 解压后,配置环境变量

Android JetPack应用架构

岁酱吖の 提交于 2019-11-26 13:59:30
简介 在2018年的谷歌I/O大会上,官方发布了一系列辅助android开发者的实用工具,合称Jetpack,以帮助开发者构建出色的 Android 应用。这次发布的 Android Jetpack 组件覆盖以下 4 个方面:Architecture、Foundation、Behavior 以及 UI。 同时,Android Jetpack 完美兼容 Kotlin 语言,利用 Android KTX 可大幅节省代码量。作为下一代的 Android 组件,Android Jetpack 通过提供现代化应用架构以及提供强健的向后兼容能力等方式,让开发者能够快速、轻松地创造拥有卓越性能的高质量应用。 作为一个类库集合,Jetpack具有如下的一些特性: 快速开发:组件可单独使用,也可以同时工作,当使用kotlin语言特性时,可以让你更有效率 消除样板代码:Android Jetpack管理乏味的活动,例如后台任务、导航和生命周期管理,你可以专注于让你的app更棒的东西。 构建高质量、健壮的app:基于现代设计实践,Android Jetpack组件可以减少崩溃和内存泄漏,且向后兼容。 示例 来源: https://blog.csdn.net/xiangzhihong8/article/details/98881273

android十大开源框架

人盡茶涼 提交于 2019-11-26 13:59:24
1-1 课程导学 第2章 Okhttp网络库深入解析和相关面试题分析 本章主要先通过分析OKhttp的简单使用,对于OKhttp的调度器、拦截器、缓存策略、连接池等进行了相应的源码和原理分析,并对于socket、websocket、http缓存、多线程下载、文件下载、https等经典Android面试题进行分析。 2-1 okhttp框架流程分析 2-2 okhttp同步请求方法 2-3 okhttp异步请求方法 2-4 okhttp同步请求流程和源码分析 2-5 okhttp异步请求流程和源码分析-1 2-6 okhttp异步请求流程和源码分析-2 2-7 okhttp任务调度核心类dispatcher解析-1 2-8 okhttp任务调度核心类dispatcher解析-2 2-9 okhttp拦截器流程 2-10 okhttp拦截器链介绍 2-11 okhttp之RetryAndFollowUpInterceptor解析 2-12 okhttp之BridgeInterceptor解析 2-13 okhttp缓存策略源码分析:put方法 2-14 okhttp缓存策略源码分析:get方法 2-15 okhttp拦截器之CacheInterceptor解析 2-16 okhttp拦截器之ConnectInterceptor解析-1 2-17

Android 开发中的架构模式 -- MVC / MVP / MVVM

本秂侑毒 提交于 2019-11-26 11:27:22
【 这是 ZY 第 15 篇原创技术文章 】 预备知识 了解 Android 基本开发 看完本文可以达到什么程度 了解如何分析一个架构模式 掌握 MVC,MVP,MVVM 架构定义和实现 阅读前准备工作 clone CommonTec 项目,其中 architecture 模块是本文架构模式的对应的示例代码 文章概览 一、什么是架构 关于架构的定义,其实在很多书籍和文章中都是不同的,很难做一个统一。这里列举两个定义: 在维基百科里是这样定义的: 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。 在 IEEE 软件工程标准词汇中是这样定义的: 架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理。 关于更多的定义,推荐阅读《软件架构设计:程序员向架构师转型必备》第二章 ... 在看过茫茫多的架构定义以后,我理解的架构是这样的: 为了解决 特定的问题 而提出 按照 特定的原则 将系统整体进行模块/组件/角色的划分 建立模块/组件/角色间的 沟通机制 具体解释一下,首先是要有特定的问题,没有问题空谈架构,仿佛是空中楼阁,没有实用价值,而对应到不同的问题,会有不同的解决方式。

Android开发技术周报 Issue#27

ε祈祈猫儿з 提交于 2019-11-26 09:37:35
教程 Android开发技术前线第五期 ( @MrSimp1e ) 深入Android图形管道、Romain Guy的性能优化案例、图片加载框架Glide、模仿iOS的模糊视图,都是些不错的文章。 Android内存优化之MAT工具使用教程系列 ( @高建武_Gracker ) 正所谓工欲善其事,必先利其器,在对Android应用进行内存优化MAT(Memory Analyzer Tool)是一把必不可少的利剑,MAT一个基于Eclipse的内存分析工具,是一个快速、功能丰富的JAVA heap分析工具,它可以帮助我们查找内存泄漏和减少内存消耗。此系列目前有:1. MAT使用入门 2. MAT使用进阶 3. 打开MAT中的Bitmap原图 三篇文章满满的干货,步骤、注释写的很详细图文并茂,一步步带你走进MAT的世界。 从Fragment被销毁看replace和add的区别 ( @方杰_Jay ) 首先从一个bug说起 我们都知道fragment切换有两种方式: 1. replace方式transaction.replace(R.id.content, IndexFragment); 2. add-hide-show方式transaction.add(R.id.content, IndexFragment); transaction.hide 使用AIDL实现进程间的通信 (

Android开发技术周报 Issue#1

前提是你 提交于 2019-11-26 09:34:41
Android开发技术周报 Issue#1 业界新闻 1. “OK, Google” 开放体验,可以为你的应用服务了 2. 谷歌与菲亚特合作开发新款 Android 车载系统 北京时间 1 月 3 日消息,据外媒报道,谷歌和菲亚特-克莱斯勒汽车公司周一在国际消费电子展(CES)开幕前宣布,两家公司已在合作开发一款基于 Android 系统的新版车载信息娱乐系统。 3. Google Play服务将最低支持API级别14 Google Play 服务客户端内容库及 Firebase for Android 客户端内容库的 10.0.0 版本将是支持 Android API 级别 9(Android 2.3,Gingerbread)的最后版本。这些内容库的下一计划版本是 10.2.0,该版本会将支持的最低 API 级别从 9 提升至 14(Android 4.0.1,Ice Cream Sandwich)。此变更将于 2017 年初实施。 Android开发 1. Google分享系列 Android 7.x的新增功能 (Google开发者大会演讲PPT&视频) Android开发工具中的新增功能 (Google开发者大会演讲PPT&视频) “哎呀!我的 Android 应用程序又崩溃了!” (Google开发者大会演讲PPT&视频) Android开发中的电量和内存优化

Android开发技术周报--开源库 & App

妖精的绣舞 提交于 2019-11-26 09:33:20
本文在CSDN博客首发 转载请注明出处 http://blog.csdn.net/u011071427/article/details/71311357 本文出自Allen李的博客 开源库 & App 本文所有开源库来自Android开发技术周报,纯属个人收集。 Issue Name Description 121 Ratifier Andorid的表单验证库 121 FancyShowCaseView 一个易于使用的可定制的展示盒视图与圆形显示动画 121 Robust 美团-点评开源的新一代热更新系统 Robust,对 Android 版本无差别兼容 121 native-navigation Recative-Native的导航库 121 AutoDispose 自动绑定+处理RxJava 2 121 atlas 强大的Android动态组件框架,阿里的 122 BubbleSeekBar 自定义SeekBar,进度变化由可视化气泡样式呈现 122 android-tips-tricks Android开发的提示和技巧 122 FutureK 基于协同程序的Kotlin monadic未来实现 122 AdapterDelegates RecyclerView适配器 122 android-PictureInPicture Android 画中画的 Demo 122

Android 7.0 Camera架构源码分析1 - CameraService启动

假如想象 提交于 2019-11-26 08:27:52
本系列教程主要讲解Camera从APP层到HAL层的整个流程,第一篇先讲解CameraService的启动,后面会讲解open、preview、takepicture的流程。 Android 7.0之前CameraService是在mediaserver进程中注册的,看下Android 6.0的代码: //path: frameworks\av\media\mediaserver\main_mediaserver.cpp int main() { sp < ProcessState > proc(ProcessState ::self ()); sp < IServiceManager > sm = defaultServiceManager(); ALOGI( "ServiceManager: %p" , sm . get()); AudioFlinger ::instantiate (); MediaPlayerService ::instantiate (); ResourceManagerService ::instantiate (); //初始化相机服务 CameraService ::instantiate (); AudioPolicyService ::instantiate (); SoundTriggerHwService ::instantiate ();

Android 8.0 Camera架构源码分析 - CameraProvider And CameraService启动

佐手、 提交于 2019-11-26 08:27:17
前一篇文章主要是android 7之前的流程,这篇看看android 8之后有哪里变化,对比会更能理解代码流程: Camera 服务启动流程概览 在 Android O 中,系统启动时,就会启动 CameraProvider 服务。它将 Camera HAL 从 cameraserver 进程中分离出来,作为一个独立进程 android.hardware.camera.provider@2.4-service 来控制 HAL。 这两个进程之间通过 HIDL 机制进行通信。 这样的改动源自于 Android O 版本加入的 Treble 机制,它的主要功能(如下图所示)是将 service 与 HAL 隔离,以方便 HAL 部分进行独立升级。这其实和 APP 与 Framework 之间的 Binder 机制类似,通过引入一个进程间通信机制而针对不同层级进行解耦(从 Local call 变成了 Remote call)。 如此一来 Camera 服务的启动流程就变得有些复杂了,但是最核心的部分其实没变,最终都要从动态库中获取连接 HAL 的结构,并保存下来以备未来对 Camera 设备进行操作。 这几天跟了一下代码流程,大概总结了一下 cameraserver 与 provider 这两个进程启动、初始化的调用逻辑,如下图。 总体逻辑顺序: provider 进程启动,注册;

了解一下Android调试

我的未来我决定 提交于 2019-11-26 04:46:25
今天我要分享的是Framework的学习和调试的方法。 首先,Android是一种基于Linux的开放源代码软件栈,为广泛的设备和机型而创建。下图是Android平台的主要组件。 从图中你可以看到主要有以下几部分组成: Linux内核 Android Runtime 原生C/C++库 Java API框架(后面我称之为Framework框架层) 系统应用     在各个应用市场看到的,大多是第三方应用,也就是安装在data区域的应用,它们可以卸载,并且权限也受到一些限制,比如不能直接设置时间日期,需要调用到系统应用设置里面再进行操作。     在应用开发过程中使用的四大组件,便是在Framework框架层进行实现,应用通过约定俗成的规则,在AndroidMainfest.xml中进行配置,然后继承对应的基类进行复写。系统在启动过程中解析AndroidMainfest.xml,将应用的信息存储下来,随后根据用户的操作,或者系统的广播触发,启动对应的应用。   framwork 到底又那些东西?   Framework框架层是应用开发过程中,调用的系统方法的内部实现,比如我们使用的TextView、Button控件,都是在这里实现的。再举几个例子,我们调用ActivityManager的getRunningAppProcesses方法查看当前运行的进程列表