android架构

Android性能优化--启动优化

自闭症网瘾萝莉.ら 提交于 2019-12-10 18:01:50
1. 前言 一个应用App的启动速度能够影响用户的首次体验,启动速度较慢(感官上)的应用可能导致用户再次开启App的意图下降,或者卸载放弃该应用程序。本文会通过以下几个方面来介绍应用启动的相关指标和优化,提供应用的启动速度。 整体文章思路如下: 2. 冷启动&热启动 通常来说,启动方式分为两种:冷启动和热启动。 **冷启动:**当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。 **热启动:**当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程是依然会保留在后台,可进入任务列表查看),所以在已有进程的情况下,这种启动会从已有的进程中来启动应用,这个方式叫热启动。 两者之间的特点如下: 冷启动:系统会重新创建一个新的进程分配给该应用,从Application创建到UI绘制等相关流程都会执行一次。 热启动:应用还在后台,因此该启动方式不会重建Application,只会重新绘制UI等相关流程。 冷热启动时间的计算命令: adb shell am start -W [packageName]/[packageName.XxxActivity] 参数说明: 1、ThisTime:一般和TotalTime时间一样

android编译ijkplayer生成so

▼魔方 西西 提交于 2019-12-10 13:32:15
ijkplayer官方github开源地址 https://github.com/Bilibili/ijkplayer 根据ijkplayer指导说明 第一步:安装git 第二步: 安装 yasm或者nasm (这两个都是汇编器) 在ubuntu系统上: 执行 cd ~ (~ 在linux中,代表当前用户主目录),切换到root用户,执行su命令,即管理员权限,下载安装yasm,执行命令 sudo apt-get install yasm 第三步:将android sdk 拷贝到ubuntu图对应盘符下,同时将android ndk 下载并拷贝到对应盘符,注意安卓NDK需要使用r10e的版本,要不会出现版本不兼容,导致编译失败 第四步:配置android sdk 和 android ndk到系统环境变量,执行cd ~ 命令, vi ~/.bashrc 在文件末尾添加以下内容: export ANDROID_SDK=/home/user-002/jiangdesheng/android_sdk/android-sdk ANDROID_NDK=/home/user-002/jiangdesheng/ndk/android-ndk-r10e export PATH=$ANDROID_NDK:$PATH 第五步:刷新对 bashrc 的修改,输入命令source ~/.bashrc

adb常用命令

落花浮王杯 提交于 2019-12-10 11:54:03
Android Debug Bridge(Android 调试桥) 针对移动端 Android 的测试, adb 命令是很重要的一个点,必须将常用的 adb 命令熟记于心, 将会为 Android 测试带来很大的方便,其中很多命令将会用于自动化测试的脚本当中。 adb 是一个 C/S 架构的命令行工具,用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统,adb就派上用场了,主要由 3 部分组成: · 运行在 PC 端的 Client : 可以通过它对 Android 应用进行安装、卸载及调试 · 运行在 PC 端的 Service : 其管理客户端到 Android 设备上 adb 后台进程的连接 · 运行在 Android 设备上的 adb 后台进程 adb 服务启动后,Windows 可以在任务管理器中找到 adb.exe 这个进程 通过adb操作android设备 连接上数据线,然后把手机开发者模式打开,打开usb调试。 在配好环境变量的前提下,在命令窗口当中输入 adb help 或者直接输入 adb ,将会列出所有的选项说明及子命令。 在开发或者测试的过程中,我们可以通过 adb 来管理多台设备,其一般的格式为: adb [-e | -d | -s <设备序列号>] <子命令> adb devices 获取设备列表及设备状态 adb get-state

Appium移动端测试--基础预热

元气小坏坏 提交于 2019-12-09 22:42:43
目录 Android自动化环境准备 需要安装的软件: Appium多端架构与自动化 Android自动化前提依赖: 获取App的信息: Android常用命令 adb shell 常用命令列表: Android性能统计dumpsys uiautomator 简单的自动化工具input命令 Appium生态工具 Appium desktop主要功能 录制用例并执行 近日开始了移动端自动化测试的学习之路,决定在学习的过程中进行笔记,总结学习,印象或许会深刻一些。 Android自动化环境准备 1、 Android SDK:- 下载 Android SDK(可以先使用Android Studio辅助安装),并设置 PATH 变量加入 SDK 的工具目录; 2、模拟器: Android Studio 自带 Emulator [推荐] Genymotion、网易 MuMu、BlueStacks 3、真机 需要安装的软件: 1、安装Android Studio(包含了SDK和Emulator) 2、安装Node.js和npm 3、安装Appium() 4、安装脚本IDE Pycharm 接下来大概的看一下与Appium相关的知识点。 Appium多端架构与自动化 Android自动化前提依赖: 获取App的信息: 获取App信息 获取当前界面元素:adb shell dunpsys

Qt 5.13 自学(1)- Qt Modules

ぃ、小莉子 提交于 2019-12-09 14:53:26
Qt 5.13 自学(1)- Qt Modules 本文链接 https://doc.qt.io/qt-5/reference-overview.html 今天开始自学Qt , 但是现在书店里面出版的书大部分是Qt4 , 只能慢慢的自己开始摸索学习。 英文水平不好, 如有有错误的地方,请各位大神指教。 (一)基本模块 (我是这么理解,不知道对不对) 在Qt5 官方给出的list 的基本模块共有13个。 模块名称 说明 Qt Core 核心模块。所有其他Qt模块都依赖于这个模块 Qt GUI 图形用户界面(GUI)组件的基类(包括OpenGL) Qt Widgets 扩展带C++组件的Qt GUI的类 Qt Multimedia 多媒体功能的类。 Qt Multimedia Widgets 实现多媒体功能的基于widget类 Qt QML QML 和 JavaScript 的类 Qt Quick 可以用自定义用户界面实现动态的应用程序的声明性框架。 Qt Quick Controls 轻量级QML类型。用于为台式机,嵌入式和移动设备创建高性能的用户界面。这些类型采用简单的样式架构 Qt Quick Dialogs 用于来自Qt Quick应用系统对话框的创建和交互的类型。 Qt Quick Layouts 布局是道具组件,用于在用户接口中的排列基于组件的Qt Quick2。 Qt

Android热更新

爷,独闯天下 提交于 2019-12-09 11:29:33
Android热更新 一.什么是热更新 二.工作原理 1.Android中如何动态修复bug 2.Android中的类加载器 3.热修复的实现原理 三.热更新优点 为什么要做热更新 四.热更新使用 1.添加插件依赖 2.集成SDK 3.初始化SDK 4.Androidmanifest.xml配置 5.混淆配置 6.常见错误 一.什么是热更新 热更新是一种各大手游等众多App常用的更新方式。简单来说,就是在用户通下载安装APP之后,打开App时遇到的即时更新。 二.工作原理 热更新就是动态下发代码,它可以使开发者在不发布新版本的情况下,修复 BUG 和发布功能,让开发者得以绕开苹果的审核机制,避免长时间的审核等待以及多次被拒造成的成本。 1.Android中如何动态修复bug bug一般是一个或多个class出现了问题,在一个理想的状态下,我们只需将修复好的这些个class更新到用户手机上的app中就可以修复这些bug了。但说着简单,要怎么才能动态更新这些class呢?其实,不管是哪种热修复方案,肯定是如下几个步骤: 下发补丁(内含修复好的class)到用户手机,即让app从服务器上下载(网络传输) app通过"某种方式",使补丁中的class被app调用(本地更新) 这里的"某种方式",对本篇而言,就是使用Android的类加载器,通过类加载器加载这些修复好的class

android手机卫士、3D指南针、动画精选、仿bilibli客户端、身份证银行卡识别等源码

荒凉一梦 提交于 2019-12-07 17:16:01
Android精选源码 android身份证、银行卡号扫描源码 android仿bilibili客户端 android一款3D 指南针 源码 android手机卫士app源码 android提醒应用,Material 风格,可以设置重复提醒 android带箭头指示选中位置 RecyclerView实现的广告图轮播,消息轮播,简单易用 android商品条形码、二维码搜索源码 android全局调整字号源码 android全球动画精选源码 Android优质博客 基于RecyclerView addView时思想改变子View宽高时局部刷新界面 忽然发现很多新技术都没弄过,RecyclerView居然也没用过,于是乎就学习了一下RecyclerView的用法顺带大概看了一下RecyclerView源码,在看到RecyclerView 滑动时调用LayoutManager类的layoutChunk函数addView的时候,我好奇的看了一下,这货为什么滑动中add... 阅读原文 Android性能优化 应用层的性能优化通常可以从以下几个方面考虑1.界面布局优化(merge ,include ,ViewStub,减少布局嵌套层次);merge可进行多余嵌套层次的移除处理,include复用同一布局在多个界面中 ,ViewStub可进行隐藏布局的不加载。2

搞懂Android内Binder的前因后果

感情迁移 提交于 2019-12-07 16:28:06
瞻仰了前辈们的研究成果, 并掺入了自己的理解, 如有不对, 敬请批评. 为什么Android要使用Binder Binder 作为一种 IPC 机制, 在 Linux 内有很多的前辈, 为什么 google 会创建这么一种新的方式呢? Linux 现有 IPC 方式有这几类: 管道:在创建时分配一个page大小的内存,缓存区大小比较有限; 消息队列:信息复制两次,额外的CPU消耗;不合适频繁或信息量大的通信; 共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决; 套接字:作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信; 信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 信号: 不适用于信息交换,更适用于进程中断控制,比如非法内存访问,杀死某个进程等; 与以上方式相比较, Binder 有以下特点: 性能较好: 数据拷贝 Binder 只需要一次, 管道/消息队列/socket 都需要两次, Binder 仅次于共享内存(一次都不需要); 稳定性较好: 基于C/S架构的Binder在逻辑上更加解耦, 架构清晰, 而共享内存容易出现各种并发同步死锁问题; 安全性好: Android每个App都有自己的UID

Android消息机制1-Handler(Java层)

橙三吉。 提交于 2019-12-07 12:10:25
相关源码 framework/base/core/java/andorid/os/Handler.java framework/base/core/java/andorid/os/Looper.java framework/base/core/java/andorid/os/Message.java framework/base/core/java/andorid/os/MessageQueue.java libcore/luni/src/main/java/java/lang/ThreadLocal.java 一、概述 在整个Android的源码世界里,有两大利剑,其一是Binder IPC机制,,另一个便是消息机制(由Handler/Looper/MessageQueue等构成的)。关于Binder在 Binder系列 中详细讲解过,有兴趣看看。 Android有大量的消息驱动方式来进行交互,比如Android的四剑客 Activity , Service , Broadcast , ContentProvider 的启动过程的交互,都离不开消息机制,Android某种意义上也可以说成是一个以消息驱动的系统。消息机制涉及MessageQueue/Message/Looper/Handler这4个类。 1.1 模型 消息机制主要包含: Message:消息分为硬件产生的消息

Android NFC基础

限于喜欢 提交于 2019-12-07 11:33:12
文章目录 基础知识 NFC协议 NFC规范 NFC操作模式 NFC频率和数据速率 NFC应用 NFC标签类型 NFC信令类型 测试 框架 基础知识 NFC协议 近场通信称为NFC。该技术类似于RFID标准。我们知道RF天线周围有两种类型的场。近场和远场。近场指的是靠近天线的电磁辐射(即达到2D 2 /λ的区域),远场指的是远离天线的EM辐射。NFC已经变得非常流行,因为短距离通信(几毫米)具有非常低的数据速率(几千比特/秒)。NFC协议基于ISO / IEC 18092中公布和概述的RFID标准。 NFC用于各种非接触式应用,包括铁路和办公室的访问控制,医疗保健,信息交换,支付以及消费电子产品。NFC基本上是一种点对点的通信方式。它总是需要发起者和目标。基于功率有两种类型的通信。在主动通信中,发起者和目标将交替生成d电磁场并相互通信。在被动模式下,目标将从NFC读取器获取电力。在被动模式下,使用贴纸很容易制作NFC目标,并且不需要电池。 NFC设备基于电感耦合工作。感应是通过使导线穿过磁场(H)产生电流。据我们所知,NFC设备内置了线圈。来自NFC设备的磁场在这些线圈中产生电力,这启动通过无线电波的数据传输。两个设备(目标和发起者)共享这种能力。 近场通信(NFC)是一种基于标准的短距离无线连接技术,它使用磁场感应来实现电子设备之间的通信。 NFC技术短距离是其运营和成功的关键