<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[caizehui的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/caizehui</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; caizehui]]></copyright><item><title><![CDATA[ParameterizedType类型设置默认值]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/127123440</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/127123440</guid><author>caizehui</author><pubDate>Fri, 30 Sep 2022 15:18:04 +0800</pubDate><description><![CDATA[java.lang.ClassCastException: com.google.gson.internal.$Gson$Types$ParameterizedTypeI  cannot be cast to java.lang.Class。gson默认值]]></description><category></category></item><item><title><![CDATA[Gradle之属性Properties]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/126214350</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/126214350</guid><author>caizehui</author><pubDate>Mon, 08 Aug 2022 08:00:00 +0800</pubDate><description><![CDATA[每个Project和Task实例都提供了setter和getter方法来访问属性，属性可以是任务的描述或者项目的版本号。properties其实是Java项目中的配置文件，不是Gradle独创的。又因为Gradle语法可以和Java进行混合使用，所以在Java项目上面使用properties文件的方式，在Gradle上面也可以使用。Gradle借用了这一点，所以内置了对gradle.properties的使用方式。...]]></description><category></category></item><item><title><![CDATA[Gradle 学习 - task基础及其依赖定义]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/126069836</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/126069836</guid><author>caizehui</author><pubDate>Sat, 30 Jul 2022 11:40:42 +0800</pubDate><description><![CDATA[task基础及其依赖定义]]></description><category></category></item><item><title><![CDATA[Android开发必知的maven-publish插件知识]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/125956142</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/125956142</guid><author>caizehui</author><pubDate>Tue, 26 Jul 2022 08:00:00 +0800</pubDate><description><![CDATA[作为Android开发，在我们开发到一定阶段总会接触SDK开发、组件化开发，这样就会有组件发布Aar的需求。Gradle提供了maven-publish插件供我们完成组件发布需求，但是大多数人可能只是简单的使用，见葫芦画瓢，并没有完整的了解插件的作用。这里本着复习完善的想法，带大家一起好好学习下。...]]></description><category></category></item><item><title><![CDATA[Android 12兼容性适配指南]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/120473373</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/120473373</guid><author>caizehui</author><pubDate>Sat, 25 Sep 2021 17:16:13 +0800</pubDate><description><![CDATA[Android 12 来了，从今年年初开始到如今正式发布前夜，Google已经释放了Beta 5版本，可以在官网下载预览版本进行测试。
测试应用的兼容性十分重要。在每个系统版本中，我们都会对平台进行整体的改进，强化隐私和安全性，并优化整个操作系统的用户体验。这些都可能会影响您的应用，所以请务必查看 行为变更 清单并进行针对性的测试，然后向用户发布兼容性更新。兼容性测试是确保应用品质的基础但十分核心的环节，可以确保您的用户拥有良好的应用体验。
当用户将自己的设备更新到 Android 12 后，他们会希望..]]></description><category></category></item><item><title><![CDATA[PowerMockito的PrePareForTest什么时候用]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/120449382</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/120449382</guid><author>caizehui</author><pubDate>Fri, 24 Sep 2021 10:07:17 +0800</pubDate><description><![CDATA[昨天写单测，怎么写怎么不对，whennew 总是会抛出异常，各种方法都避免不了，原来：
当使用PowerMockito.whenNew方法时，必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是需要mock的new对象代码所在的类。
当需要mock final方法的时候，必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是final方法所在的类。
当需要mock静态方法的时候，必须加注解@PrepareF]]></description><category></category></item><item><title><![CDATA[tar.gz压缩与解压命令]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/120419402</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/120419402</guid><author>caizehui</author><pubDate>Wed, 22 Sep 2021 17:36:15 +0800</pubDate><description><![CDATA[解压命令： tar zxvf 文件名.tar.gz
压缩命令： tar zcvf 文件名.tar.gz 待压缩的文件名
z：通过gzip支持压缩或解压缩。还有其他的压缩或解压缩方式，比如j表示bzip2的方式。
x：解压缩。
c：是压缩，compress
v：在压缩或解压缩过程中显示正在处理的文件名
f：f后面必须跟上要处理的文件名。

...]]></description><category></category></item><item><title><![CDATA[Android动态权限最强整理]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/119697471</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/119697471</guid><author>caizehui</author><pubDate>Sat, 14 Aug 2021 11:52:39 +0800</pubDate><description><![CDATA[前言：
在Android系统不断的升级过程中，Android应用的开发也有不同的变化，对于权限，Android6.0以上的系统中，引入了运行时权限检查，运行时权限分为正常权限和危险权限，当我们的App调用了需要危险权限的api时，需要向系统申请权限，系统会弹出一个对话框让用户感知，只有当用户授权以后，App才能正常调用api。
目前所有的权限类别可参考https://developer.android.google.cn/reference/android/Manifest.permission?hl=zh]]></description><category></category></item><item><title><![CDATA[扒一扒安卓渲染原理]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115549514</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115549514</guid><author>caizehui</author><pubDate>Fri, 09 Apr 2021 14:15:08 +0800</pubDate><description><![CDATA[导语：
在测试流畅度的过程中，必不可免的要与FPS，Jank等指标接触，但为了加深理解，今天来简单扒一扒安卓的渲染原理；
PerfDog使用Jank作为来代表游戏流畅度的指标，详情可以看
APP&amp;游戏需要关注Jank卡顿吗？一.CPU与GPU结构现在大部分移动端都会配有CPU（中央处理器）和GPU（图形处理器），有的现在还有一块NPU用于处理智能运算。来简单看一下他们的结构；

绿色的是计算单元(ALU)，
橙红色的是存储单元，
橙黄色的是控制单元。
CPU需要很强的通用性来处理各种不同的数据类型，]]></description><category></category></item><item><title><![CDATA[Android性能优化-渲染篇]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115518293</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115518293</guid><author>caizehui</author><pubDate>Thu, 08 Apr 2021 13:41:12 +0800</pubDate><description><![CDATA[前言 
 
 本篇文章是udacity上的Android Performace系列视频-Render篇的课程纪要。 
 这个系列是视频是G...]]></description><category></category></item><item><title><![CDATA[那些年我们用过的显示性能指标]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115329152</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115329152</guid><author>caizehui</author><pubDate>Tue, 30 Mar 2021 16:26:10 +0800</pubDate><description><![CDATA[前言
注：Google 在自己文章中用了 Display Performance 来描述我们常说的流畅度，为了显得有文化，本文主要用“显示性能”一词来代指“流畅度”（虽然两者在概念上有细微差别）。
从 Android 诞生的那一刻起，流畅度就为众人所关注。一时之间，似乎所有人都在讨论 Android 和 iOS 谁的流畅度更好。但是，毫不夸张的说，流畅度绝对是 Android 众多性能维度中最为奇葩的一个。因为，为了刻画这一性能维度，业界设计了各式各样的指标来对其进行衡量。可以说弄清了这些指标我们就明白了.]]></description><category></category></item><item><title><![CDATA[Android界面性能调优手册]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115318771</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115318771</guid><author>caizehui</author><pubDate>Tue, 30 Mar 2021 10:16:53 +0800</pubDate><description><![CDATA[界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好，界面容易发生卡顿且导致应用占用大量内存。
我司这类做 ROM 的公司更不一样，预装的应用一定要非常流畅，这样给客户或用户的第一感觉就是快。又卡又慢的应用体验，会影响客户或用户对产品的信心和评价，所以不可忽视。
目录
一. Android渲染知识

    1.1 绘制原理

    1.2 掉帧

    1.3 为什么是60Fps？

    1.4 垃圾回收

    1.5 UI 线程

    1.6 垂直同步

   ]]></description><category></category></item><item><title><![CDATA[Android硬件加速原理与实现简介-美团技术团队 ​]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115318710</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115318710</guid><author>caizehui</author><pubDate>Tue, 30 Mar 2021 10:11:31 +0800</pubDate><description><![CDATA[在手机客户端尤其是Android应用的开发过程中，我们经常会接触到“硬件加速”这个词。由于操作系统对底层软硬件封装非常完善，上层软件开发者往往对硬件加速的底层原理了解很少，也不清楚了解底层原理的意义，因此常会有一些误解，如硬件加速是不是通过特殊算法实现页面渲染加速，或是通过硬件提高CPU/GPU运算速率实现渲染加速。本文尝试从底层硬件原理，一直到上层代码实现，对硬件加速技术进行简单介绍，其中上层实现基于Android 6.0。了解硬件加速对App开发的意义对于App开发者，简单了解硬件加速原理及上层API实]]></description><category></category></item><item><title><![CDATA[jvm之java类加载机制和类加载器(ClassLoader)的详解]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115140622</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115140622</guid><author>caizehui</author><pubDate>Tue, 23 Mar 2021 20:02:17 +0800</pubDate><description><![CDATA[&nbsp; &nbsp; &nbsp; 当程序主动使用某个类时，如果该类还未被加载到内存中，则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外，JVM将会连续完成3个步骤，所以有时也把这个3个步骤统称为类加载或类初始化。 
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.]]></description><category></category></item><item><title><![CDATA[阿里巴巴淘宝全链路性能优化（上）]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115137000</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115137000</guid><author>caizehui</author><pubDate>Tue, 23 Mar 2021 18:57:17 +0800</pubDate><description><![CDATA[作者|手淘用户体验提升项目组
出品|阿里巴巴新零售淘系技术部
导读：自阿里在11年提出 All in 无线之后，手淘慢慢成长为承载业务最多，体量巨大的航母级移动端应用。与之相应的，手淘离轻量，快速，敏捷这些关键词却越来越远，启动慢，使用卡逐步成为用户使用过程中的主要体验问题。为此，手淘的技术团队启动了极速版项目，其目标是还给用户一个更加流畅的淘宝。整个项目历时近1年，横跨几十个团队，经历了数百次的数据实验，涉及代码上百万行，最终使得手淘的性能有一个质的飞跃。
下面，我们一起来看手淘团队在性能优化过程中...]]></description><category></category></item><item><title><![CDATA[支付宝客户端架构解析：Android 客户端启动速度优化之「垃圾回收」]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/115136025</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/115136025</guid><author>caizehui</author><pubDate>Tue, 23 Mar 2021 18:36:50 +0800</pubDate><description><![CDATA[前言
《支付宝客户端架构解析》系列将从支付宝客户端的架构设计方案入手，细分拆解客户端在“容器化框架设计”、“网络优化”、“性能启动优化”、“自动化日志收集”、“RPC 组件设计”、“移动应用监控、诊断、定位”等具体实现，带领大家进一步了解支付宝在客户端架构上的迭代与优化历程。
本节将介绍支付宝 Android 客户端启动速度优化下的「垃圾回收」具体思路。
应用启动时间是移动 App 一个重要的用户体验环节，相对于普通的移动 App，支付宝过于庞大，必然会影响启动速度，一些常规的优化手段在支付宝中已经做得比较]]></description><category></category></item><item><title><![CDATA[注解之@link与@see的使用与区别]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/114884407</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/114884407</guid><author>caizehui</author><pubDate>Tue, 16 Mar 2021 15:51:12 +0800</pubDate><description><![CDATA[为了让代码更清晰，我们经常使用注解。但是有些注解需要依赖其他字段或类来继续说明。这样，有个链接的话就非常方便，比如参数另一个类中的有相同前缀名的字段。
这种注释有两种，  @see和{@link}
经常我会写了@×××但是无作用，其实这两个都有自己的使用场景， 比如@see必须顶头写，前边有任何文字，链接就失效
@link需要{}包围，否则也无效。
see使用
语法格式： @see 全路径包名#方法名(参数类型列表)
@see 标签允许用户引用其他类的文档。具体使用方式如下：
@see classname
]]></description><category></category></item><item><title><![CDATA[Android可信执行环境TEE最全介绍]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/114638207</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/114638207</guid><author>caizehui</author><pubDate>Wed, 10 Mar 2021 16:41:40 +0800</pubDate><description><![CDATA[TEE简介
TEE的全称trusted execution environment，它是移动设备（智能手机、平板电脑、智能电视）CPU上的一块区域。这块区域的作用是给数据和代码的执行提供一个更安全的空间，并保证它们的机密性和完整性。

TEE发展历程
TEE的前身。Open Mobile Terminal Platform (OMTP)于2006年提出一种双系统解决方案：即在同一个智能终端下，除了多媒体操作系统外再提供一个隔离的安全操作系统，这一运行在隔离的硬件之上的隔离安全操作系统用来专门处理敏感信息以保]]></description><category></category></item><item><title><![CDATA[Android安全编码规范]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/114526508</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/114526508</guid><author>caizehui</author><pubDate>Mon, 08 Mar 2021 11:42:37 +0800</pubDate><description><![CDATA[1.目的

为使系统开发人员能够编写符合安全要求的代码，以降低代码安全漏洞，减少代码被利用的可能性，从而提升各系统安全水平，符合国家安全合规性要求，保障产品安全稳定运营以及信息安全，特制定本规范。

2.引用规范

《信息安全技术移动智能终端个人信息保护技术要求》
	《YD/T 1438-2006 数字移动台应用层软件功能要求和测试方法》
	《YD/T 2307-2011 数字移动通信终端通用功能技术要求和测试方法》
	《中国金融移动支付客户端技术规范》
	《中国金融移动支付应用安全规范》
	《移动互联网应]]></description><category></category></item><item><title><![CDATA[AOP 的利器：ASM 3.0 介绍]]></title><link>https://blog.youkuaiyun.com/caizehui/article/details/114398488</link><guid>https://blog.youkuaiyun.com/caizehui/article/details/114398488</guid><author>caizehui</author><pubDate>Fri, 05 Mar 2021 15:34:52 +0800</pubDate><description><![CDATA[李夷磊,  邱小侠,  蔡一超  发布: 2007-07-25
              
            
          
          
            
            引言
什么是 ASM ？
ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件，也可以在类被加载入 Java 虚拟机之前动态改变类行为。Jav...]]></description><category></category></item></channel></rss>