自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (8)
  • 收藏
  • 关注

原创 手写路由框架,了解ARouter框架核心原理

前言路由框架是干什么的:首先看百度百科,路由_百度百科,“路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。” 在Android程序里,相当于有一个可以帮用户转发两个客户的通信信息。比如页面路由转发,即Activity跳转,但这里的框架不限于此。我需要么?一般android开发中,进行页面跳转时,一般写法如下:Intent intent = new Intent(mContext, XXActivity.class);intent.putExtra(“key”,“va

2020-06-28 23:27:07 805

原创 手写简化EventBus之注解处理器方式,理解框架核心原理

前言自前一篇文章:手写简化EventBus,理解框架核心原理(反射实现方式)写完后,一直在研究注解处理器实现方式,中间又有其他事情耽搁了,所以到今天才补上这篇文章。此篇文章是在上篇反射方式实现的源码的基础上进行更改实现的,所以如果还没看上篇文章的可以先浏览下,能够更快的了解脉络和源码结构,能够更快的进入主题,更快理解。注解处理器(APT)顾名思义,APT就是注解处理器,其是Annotation Processing Tool的简称。它是javac的一个工具,用来在编译期扫描和处理注解,通过注解来生成

2020-05-09 16:58:05 404

原创 Android注解-看这篇文章就够了

前言注解,也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。(Java编程思想)很多文章都是讲述java注解的,而且很多例子虽然有和Android互通的部分,但是Android开发中也扩展了很多单纯Java中没有的注解应用。所以这里主要介绍Android开发中的注解,当然包括Java注解。目前很多框架开发或者Android开发中都用...

2020-03-21 17:14:39 11238 3

原创 深入浅出AsyncTask的工作原理

前言AsyncTask类一般是android开发人员接触的最早的异步处理方法,虽然现在流行的有很多新的异步任务类,如RxJava等,但是对于AsyncTask的底层实现原理还是有必要了解学习的,对于我们自己理解其他框架或者自己设计框架都有很大的帮助。它使用handler和线程池的方式打到异步操作,将结果返回到主线程处理。数据结构在讲解AsyncTask的原理前,我们需要先来复习或者学习下其用...

2020-03-07 14:46:17 3406

原创 五分钟读懂Android中的Binder跨进程机制和AIDL工具

做Android开发,迈入高级必须会的技术很多,而且肯定包括Binder技术,关于Binder的了解,笔者最开始只是使用AIDL工具开发接口,生成Service的服务方法,对于其内部的实现细节不太了解。从书本上或者搜索看了好几遍,每次都是似懂非懂,然后日子久了,连那点印象也不见了。所以最近的这次综合了解了这个技术后,决定将自己的理解记录下来,一方面巩固理解,一方面分享给需要的朋友。Binder ...

2020-02-07 12:10:56 3595 1

原创 android系统tts TextToSpeech源码原理解析及定制tts引擎

TextToSpeech 即文字转语音服务,是Android系统提供的原生接口服务,原生的tts引擎应用通过检测系统语言,用户可以下载对应语言的资源文件,达到播报指定语音的文字的能力。但是一切都是在google service的环境下的,在国内使用的Android设备中谷歌服务都是禁用的,而国内最主要的也是需要中文的文字播报能力,那如何实现呢。TextToSpeech源码解析首先,我习惯读一下...

2020-01-11 13:06:36 4034 1

原创 Handler通信机制源码解读

工作中,我们可能直接使用我们需要的工具方法,但是不曾了解其中的原理内涵,这样并不能很好的让我们理解其运行机制,在复杂项目和疑难问题时无从入手。作为开发想要提高并设计架构,一是要先学习优秀的设计理念,再就是了解其内部原理,为自己在复杂使用场景和发生疑难问题时能够透过表象看到本质。Handler,Message,looper 和 MessageQueue 构成了安卓的消息机制,handler创建后...

2020-01-03 14:41:37 389

原创 ParameterizedType类型设置默认值

java.lang.ClassCastException: com.google.gson.internal.$Gson$Types$ParameterizedTypeI cannot be cast to java.lang.Class。gson默认值

2022-09-30 15:18:04 709 1

原创 Gradle之属性Properties

每个Project和Task实例都提供了setter和getter方法来访问属性,属性可以是任务的描述或者项目的版本号。properties其实是Java项目中的配置文件,不是Gradle独创的。又因为Gradle语法可以和Java进行混合使用,所以在Java项目上面使用properties文件的方式,在Gradle上面也可以使用。Gradle借用了这一点,所以内置了对gradle.properties的使用方式。...

2022-08-08 08:00:00 1351

转载 Gradle 学习 - task基础及其依赖定义

task基础及其依赖定义

2022-07-30 11:40:42 810

原创 Android开发必知的maven-publish插件知识

作为Android开发,在我们开发到一定阶段总会接触SDK开发、组件化开发,这样就会有组件发布Aar的需求。Gradle提供了maven-publish插件供我们完成组件发布需求,但是大多数人可能只是简单的使用,见葫芦画瓢,并没有完整的了解插件的作用。这里本着复习完善的想法,带大家一起好好学习下。...

2022-07-26 08:00:00 3449

原创 Android 12兼容性适配指南

Android 12 来了,从今年年初开始到如今正式发布前夜,Google已经释放了Beta 5版本,可以在官网下载预览版本进行测试。测试应用的兼容性十分重要。在每个系统版本中,我们都会对平台进行整体的改进,强化隐私和安全性,并优化整个操作系统的用户体验。这些都可能会影响您的应用,所以请务必查看 行为变更 清单并进行针对性的测试,然后向用户发布兼容性更新。兼容性测试是确保应用品质的基础但十分核心的环节,可以确保您的用户拥有良好的应用体验。当用户将自己的设备更新到 Android 12 后,他们会希望..

2021-09-25 17:16:13 9678

原创 PowerMockito的PrePareForTest什么时候用

昨天写单测,怎么写怎么不对,whennew 总是会抛出异常,各种方法都避免不了,原来:当使用PowerMockito.whenNew方法时,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是需要mock的new对象代码所在的类。当需要mock final方法的时候,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是final方法所在的类。当需要mock静态方法的时候,必须加注解@PrepareF

2021-09-24 10:07:17 1005

原创 tar.gz压缩与解压命令

解压命令: tar zxvf 文件名.tar.gz压缩命令: tar zcvf 文件名.tar.gz 待压缩的文件名z:通过gzip支持压缩或解压缩。还有其他的压缩或解压缩方式,比如j表示bzip2的方式。x:解压缩。c:是压缩,compressv:在压缩或解压缩过程中显示正在处理的文件名f:f后面必须跟上要处理的文件名。...

2021-09-22 17:36:15 16547

原创 Android动态权限最强整理

前言:在Android系统不断的升级过程中,Android应用的开发也有不同的变化,对于权限,Android6.0以上的系统中,引入了运行时权限检查,运行时权限分为正常权限和危险权限,当我们的App调用了需要危险权限的api时,需要向系统申请权限,系统会弹出一个对话框让用户感知,只有当用户授权以后,App才能正常调用api。目前所有的权限类别可参考https://developer.android.google.cn/reference/android/Manifest.permission?hl=zh

2021-08-14 11:52:39 3031 1

转载 扒一扒安卓渲染原理

导语:在测试流畅度的过程中,必不可免的要与FPS,Jank等指标接触,但为了加深理解,今天来简单扒一扒安卓的渲染原理;PerfDog使用Jank作为来代表游戏流畅度的指标,详情可以看APP&游戏需要关注Jank卡顿吗?一.CPU与GPU结构现在大部分移动端都会配有CPU(中央处理器)和GPU(图形处理器),有的现在还有一块NPU用于处理智能运算。来简单看一下他们的结构;绿色的是计算单元(ALU),橙红色的是存储单元,橙黄色的是控制单元。CPU需要很强的通用性来处理各种不同的数据类型,

2021-04-09 14:15:08 124

转载 Android性能优化-渲染篇

前言 本篇文章是udacity上的Android Performace系列视频-Render篇的课程纪要。 这个系列是视频是G...

2021-04-08 13:41:12 279

转载 那些年我们用过的显示性能指标

前言注:Google 在自己文章中用了 Display Performance 来描述我们常说的流畅度,为了显得有文化,本文主要用“显示性能”一词来代指“流畅度”(虽然两者在概念上有细微差别)。从 Android 诞生的那一刻起,流畅度就为众人所关注。一时之间,似乎所有人都在讨论 Android 和 iOS 谁的流畅度更好。但是,毫不夸张的说,流畅度绝对是 Android 众多性能维度中最为奇葩的一个。因为,为了刻画这一性能维度,业界设计了各式各样的指标来对其进行衡量。可以说弄清了这些指标我们就明白了.

2021-03-30 16:26:10 847

转载 Android界面性能调优手册

界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。我司这类做 ROM 的公司更不一样,预装的应用一定要非常流畅,这样给客户或用户的第一感觉就是快。又卡又慢的应用体验,会影响客户或用户对产品的信心和评价,所以不可忽视。目录一. Android渲染知识 1.1 绘制原理 1.2 掉帧 1.3 为什么是60Fps? 1.4 垃圾回收 1.5 UI 线程 1.6 垂直同步

2021-03-30 10:16:53 253

转载 Android硬件加速原理与实现简介-美团技术团队 ​

在手机客户端尤其是Android应用的开发过程中,我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善,上层软件开发者往往对硬件加速的底层原理了解很少,也不清楚了解底层原理的意义,因此常会有一些误解,如硬件加速是不是通过特殊算法实现页面渲染加速,或是通过硬件提高CPU/GPU运算速率实现渲染加速。本文尝试从底层硬件原理,一直到上层代码实现,对硬件加速技术进行简单介绍,其中上层实现基于Android 6.0。了解硬件加速对App开发的意义对于App开发者,简单了解硬件加速原理及上层API实

2021-03-30 10:11:31 452

转载 jvm之java类加载机制和类加载器(ClassLoader)的详解

      当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。                                     .

2021-03-23 20:02:17 160

转载 阿里巴巴淘宝全链路性能优化(上)

作者|手淘用户体验提升项目组出品|阿里巴巴新零售淘系技术部导读:自阿里在11年提出 All in 无线之后,手淘慢慢成长为承载业务最多,体量巨大的航母级移动端应用。与之相应的,手淘离轻量,快速,敏捷这些关键词却越来越远,启动慢,使用卡逐步成为用户使用过程中的主要体验问题。为此,手淘的技术团队启动了极速版项目,其目标是还给用户一个更加流畅的淘宝。整个项目历时近1年,横跨几十个团队,经历了数百次的数据实验,涉及代码上百万行,最终使得手淘的性能有一个质的飞跃。下面,我们一起来看手淘团队在性能优化过程中...

2021-03-23 18:57:17 573

转载 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」

前言《支付宝客户端架构解析》系列将从支付宝客户端的架构设计方案入手,细分拆解客户端在“容器化框架设计”、“网络优化”、“性能启动优化”、“自动化日志收集”、“RPC 组件设计”、“移动应用监控、诊断、定位”等具体实现,带领大家进一步了解支付宝在客户端架构上的迭代与优化历程。本节将介绍支付宝 Android 客户端启动速度优化下的「垃圾回收」具体思路。应用启动时间是移动 App 一个重要的用户体验环节,相对于普通的移动 App,支付宝过于庞大,必然会影响启动速度,一些常规的优化手段在支付宝中已经做得比较

2021-03-23 18:36:50 1140

原创 注解之@link与@see的使用与区别

为了让代码更清晰,我们经常使用注解。但是有些注解需要依赖其他字段或类来继续说明。这样,有个链接的话就非常方便,比如参数另一个类中的有相同前缀名的字段。这种注释有两种, @see和{@link}经常我会写了@×××但是无作用,其实这两个都有自己的使用场景, 比如@see必须顶头写,前边有任何文字,链接就失效@link需要{}包围,否则也无效。see使用语法格式: @see 全路径包名#方法名(参数类型列表)@see 标签允许用户引用其他类的文档。具体使用方式如下:@see classname

2021-03-16 15:51:12 5381

原创 Android可信执行环境TEE最全介绍

TEE简介TEE的全称trusted execution environment,它是移动设备(智能手机、平板电脑、智能电视)CPU上的一块区域。这块区域的作用是给数据和代码的执行提供一个更安全的空间,并保证它们的机密性和完整性。TEE发展历程TEE的前身。Open Mobile Terminal Platform (OMTP)于2006年提出一种双系统解决方案:即在同一个智能终端下,除了多媒体操作系统外再提供一个隔离的安全操作系统,这一运行在隔离的硬件之上的隔离安全操作系统用来专门处理敏感信息以保

2021-03-10 16:41:40 18766 4

转载 Android安全编码规范

1.目的为使系统开发人员能够编写符合安全要求的代码,以降低代码安全漏洞,减少代码被利用的可能性,从而提升各系统安全水平,符合国家安全合规性要求,保障产品安全稳定运营以及信息安全,特制定本规范。2.引用规范《信息安全技术移动智能终端个人信息保护技术要求》 《YD/T 1438-2006 数字移动台应用层软件功能要求和测试方法》 《YD/T 2307-2011 数字移动通信终端通用功能技术要求和测试方法》 《中国金融移动支付客户端技术规范》 《中国金融移动支付应用安全规范》 《移动互联网应

2021-03-08 11:42:37 1361

转载 AOP 的利器:ASM 3.0 介绍

李夷磊, 邱小侠, 蔡一超 发布: 2007-07-25 引言什么是 ASM ?ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Jav...

2021-03-05 15:34:52 220

原创 SDK开发技术规范总结

SDK是Software Development Kit的缩写,译为“软件开发工具包”,通常是为辅助开发某类软件而编写的特定软件包,框架集合等,SDK一般包含相关文档,范例和工具。SDK可以分为系统SDK和应用SDK.所谓的系统SDK是为特定的软件包,软件框架,硬件平台,操作系统等应用时所使用的开发工具集合.而应用SDK则是基于系统SDK开发的独立于具体业务而具有特定功能的集合.1.设计原则优秀设计SDK 必须要遵从原生、简短、执行迅速、代码干净、易读、可测试的原则。一个接口尽量只做一件事

2021-02-03 12:36:39 5353 1

转载 so链接及动态加载原理分析

http://www.ibm.com/developerworks/cn/linux/l-dynlink/程序的链接和装入及Linux下动态链接的实现程序的链接和装入存在着多种方法,而如今最为流行的当属动态链接、动态装入方法。本文首先回顾了链接器和装入器的基本工作原理及这一技术的发展历史,然后通过实际的例子剖析了Linux系统下动态链接的实现。了解底层关键技术的实现细节对系统分析和设计人员无疑是必须的,尤其当我们在面对实时系统,需要对程序执行时的时空效率有着精确的度量和把握时,这种知识更显重要...

2021-02-01 17:53:46 2783

转载 LLVM编译原理和使用

LLVM简介:LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。 LLVM最早的时候是Illinois的一个研究项目,主要负责人是Chris Lattner,他现在就职于Apple. Apple 目前也是llvm项目的主要赞助者之一。     &nbsp

2021-01-27 16:13:27 797

转载 Android App加固原理与技术历程

随着黑客技术的普及化平民化,App,这个承载我们移动数字工作和生活的重要工具,不仅是黑客眼中的肥肉,也获得更多网友的关注。百度一下“App破解”就有5290万条结果。 一旦App被破解,不仅使用者的照片、身份证、手机号、联系住址、邮箱和支付密码等敏感信息会泄露,还可能感染手机的操作系统,进而导致手机被入侵篡改,乃至成为攻击者操控的“僵尸网络”中的一部分。 安卓App的开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java源码最终编译成smali字符码,以classe

2021-01-11 14:45:02 1010

转载 一篇文章彻底弄懂Base64编码原理

在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇博文带领大家了解一下Base64的底层实现。 Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后...

2021-01-11 13:55:15 142

原创 Android开发中的Https安全规范

前言:越来越多的Android应用为了android通信安全,将http通信改为Https通信连接,或单向验证或双向验证。 但是如果不按规范将TLS连接中对证书等进行安全校验,实际上和http通信没有任何差别,还是有很多的安全风险,如中间人攻击等。一方面TLS版本要高,如TLS1.2、TLS1.3,因为旧版本的都已发现安全漏洞。另外,就是一些通用部分,如下为阿里Android开发手册部分提到的规范,可以进行参考。从 2017 年 3 月 1 日起,只要新应用或应用更新采用的 HostnameVerif

2021-01-11 11:49:48 1142

转载 Android系统安全概览

Android 采用了业界领先的安全功能,并与开发者和设备实现人员密切合作,以确保 Android 平台和生态系统的安全。要打造一个由基于 Android 平台以及围绕 Android 平台开发且由云服务提供支持的应用和设备组成的强大生态系统,稳定可靠的安全模型至关重要。为此,在整个开发生命周期内,Android 都遵循了严格的安全计划。Android平台包含的主要组成部分包括:设备硬件:Android 能够在多种硬件配置中运行,其中包括智能手机、平板电脑、手表、汽车、智能电视、OTT 游戏盒和机顶盒。

2021-01-04 20:13:16 1211

原创 Android 9 startActivity时序图

Android 9 startActivity的时序图,不同系统版本会有差别。

2020-12-12 16:39:04 180

原创 ServiceLoader问题Thread.getContextClassLoader() may fail for processes that host multiple applications

最近使用AutoService库,做组件化的接口时,一直找不到接口的实现类,多次测试无果,但是每次发现log中都有如下log,W/ActivityThread: ClassLoader.getResources: The class loader returned by Thread.getContextClassLoader() may fail for processes that host multiple applications. You should explicitly specify a

2020-11-22 10:22:59 967

原创 Android线程池ThreadPoolExecutor最全解读

0引言在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制的产生,并且线程的创建和销毁都有一定的开销。系统中的大量线程是通过时间片轮转的方式调度的,所以如果一个进程里有过多的线程,为了所有线程都得到执行,需要不断的创建、销毁、保存现场、恢复现场等操作,会提高cpu和内存消耗,并且低效能。所以通过线程池的使用,可以缓存一定数量的线程,减少频繁创建、销毁线程带来的系统开销。1.线程池ThreadPoolExecutor简介线程池是JDK中提供的方法,包路径为ja

2020-09-20 12:02:32 620

原创 Android BLE程序在Android 10手机搜不到设备问题分析

前言前一阵帮别人做个蓝牙的Android程序,调试的好好的, 用的自己的老手机,android 5.1、8.0的都是好好的能够搜索,但是交付过去,对方的华为p30 Android 10手机就是不行,这是什么原因呢,一阵挠头。。分析如要查找 BLE 设备,请使用 startLeScan() 方法。此方法将 BluetoothAdapter.LeScanCallback 作为参数。您必须实现此回调,因为这是返回扫描结果的方式。代码示例如下为扫描代码。/** * Activity for scan

2020-08-08 10:43:36 4687 1

转载 浅谈android hook技术

前言xposed框架xposed,主页:http://repo.xposed.info/module/de.robv.android.xposed.installer是个开源的框架,在github上有源码的,直接下载apk后安装激活就可以使用,很多地方有这方面的教程,针对不同的手机架构,有大牛做了针对性的修改。可以在论坛中进行搜索通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从

2020-07-23 10:57:32 1212

转载 Android安全加密:数字签名和数字证书

一、数字签名1. 概述数字签名是非对称加密与数字摘要的组合应用2. 应用场景校验用户身份(使用私钥签名,公钥校验,只要用公钥能校验通过,则该信息一定是私钥持有者发布的)校验数据的完整性(用解密后的消息摘要跟原文的消息摘要进行对比)3. 签名过程“发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用

2020-07-20 19:37:58 1361

MIUI12安全白皮书

MIUI隐私安全白皮书

2021-03-10

EMUI10.1安全技术白皮书V1.0.pdf

华为EMUI安全白皮书

2021-03-10

GPD_TMF_OTrPMapping_v1.0_PublicRelease.pdf

TEE otrp协议

2021-03-10

GPD_TEE_Trusted_User_Interface_Low-level_API_v1.0.1_PublicRelease_CC.pdf

TEE可信UI

2021-03-10

GPD_TEE_SystemArch_1.2.zip

TEE系统架构GP规范文档

2021-03-10

GPD_TEE_Client_API_v1.0_EP_v2.0.pdf

TEE GP规范文档

2021-03-10

百度地图安卓客户端helloworld程序工程

百度地图安卓客户端helloworld程序工程,百度地图api主页有说明,但是也经历了很困难的改错历程,看了源码后一下就解决了,奉送给有缘人

2012-10-18

android移动警务厅源码

安卓开发中使用的书上的示例源码,分客户端和服务端,可以试试

2012-10-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除