android技术
文章平均质量分 77
Zephyr Cai
这个作者很懒,什么都没留下…
展开
-
Android 12兼容性适配指南
Android 12 来了,从今年年初开始到如今正式发布前夜,Google已经释放了Beta 5版本,可以在官网下载预览版本进行测试。测试应用的兼容性十分重要。在每个系统版本中,我们都会对平台进行整体的改进,强化隐私和安全性,并优化整个操作系统的用户体验。这些都可能会影响您的应用,所以请务必查看 行为变更 清单并进行针对性的测试,然后向用户发布兼容性更新。兼容性测试是确保应用品质的基础但十分核心的环节,可以确保您的用户拥有良好的应用体验。当用户将自己的设备更新到 Android 12 后,他们会希望..原创 2021-09-25 17:16:13 · 9859 阅读 · 0 评论 -
PowerMockito的PrePareForTest什么时候用
昨天写单测,怎么写怎么不对,whennew 总是会抛出异常,各种方法都避免不了,原来:当使用PowerMockito.whenNew方法时,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是需要mock的new对象代码所在的类。当需要mock final方法的时候,必须加注解@PrepareForTest和@RunWith。注解@PrepareForTest里写的类是final方法所在的类。当需要mock静态方法的时候,必须加注解@PrepareF原创 2021-09-24 10:07:17 · 1124 阅读 · 0 评论 -
注解之@link与@see的使用与区别
为了让代码更清晰,我们经常使用注解。但是有些注解需要依赖其他字段或类来继续说明。这样,有个链接的话就非常方便,比如参数另一个类中的有相同前缀名的字段。这种注释有两种, @see和{@link}经常我会写了@×××但是无作用,其实这两个都有自己的使用场景, 比如@see必须顶头写,前边有任何文字,链接就失效@link需要{}包围,否则也无效。see使用语法格式: @see 全路径包名#方法名(参数类型列表)@see 标签允许用户引用其他类的文档。具体使用方式如下:@see classname原创 2021-03-16 15:51:12 · 5863 阅读 · 0 评论 -
Android安全编码规范
1.目的为使系统开发人员能够编写符合安全要求的代码,以降低代码安全漏洞,减少代码被利用的可能性,从而提升各系统安全水平,符合国家安全合规性要求,保障产品安全稳定运营以及信息安全,特制定本规范。2.引用规范《信息安全技术移动智能终端个人信息保护技术要求》 《YD/T 1438-2006 数字移动台应用层软件功能要求和测试方法》 《YD/T 2307-2011 数字移动通信终端通用功能技术要求和测试方法》 《中国金融移动支付客户端技术规范》 《中国金融移动支付应用安全规范》 《移动互联网应转载 2021-03-08 11:42:37 · 1410 阅读 · 0 评论 -
AOP 的利器:ASM 3.0 介绍
李夷磊, 邱小侠, 蔡一超 发布: 2007-07-25 引言什么是 ASM ?ASM 是一个 Java 字节码操控框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Jav...转载 2021-03-05 15:34:52 · 235 阅读 · 0 评论 -
SDK开发技术规范总结
SDK是Software Development Kit的缩写,译为“软件开发工具包”,通常是为辅助开发某类软件而编写的特定软件包,框架集合等,SDK一般包含相关文档,范例和工具。SDK可以分为系统SDK和应用SDK.所谓的系统SDK是为特定的软件包,软件框架,硬件平台,操作系统等应用时所使用的开发工具集合.而应用SDK则是基于系统SDK开发的独立于具体业务而具有特定功能的集合.1.设计原则优秀设计SDK 必须要遵从原生、简短、执行迅速、代码干净、易读、可测试的原则。一个接口尽量只做一件事原创 2021-02-03 12:36:39 · 5614 阅读 · 1 评论 -
Android App加固原理与技术历程
随着黑客技术的普及化平民化,App,这个承载我们移动数字工作和生活的重要工具,不仅是黑客眼中的肥肉,也获得更多网友的关注。百度一下“App破解”就有5290万条结果。 一旦App被破解,不仅使用者的照片、身份证、手机号、联系住址、邮箱和支付密码等敏感信息会泄露,还可能感染手机的操作系统,进而导致手机被入侵篡改,乃至成为攻击者操控的“僵尸网络”中的一部分。 安卓App的开发除了部分功能采用C/C++编码外,其余主要都是采用Java进行编码开发功能。Java源码最终编译成smali字符码,以classe转载 2021-01-11 14:45:02 · 1027 阅读 · 0 评论 -
一篇文章彻底弄懂Base64编码原理
在互联网中的每一刻,你可能都在享受着Base64带来的便捷,但对于Base64的基础原理又了解多少?今天这篇博文带领大家了解一下Base64的底层实现。 Base64的由来 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后...转载 2021-01-11 13:55:15 · 158 阅读 · 0 评论 -
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 · 4764 阅读 · 1 评论 -
Android安全加密:数字签名和数字证书
一、数字签名1. 概述数字签名是非对称加密与数字摘要的组合应用2. 应用场景校验用户身份(使用私钥签名,公钥校验,只要用公钥能校验通过,则该信息一定是私钥持有者发布的)校验数据的完整性(用解密后的消息摘要跟原文的消息摘要进行对比)3. 签名过程“发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私人密钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公用转载 2020-07-20 19:37:58 · 1428 阅读 · 0 评论 -
手写路由框架,了解ARouter框架核心原理
前言路由框架是干什么的:首先看百度百科,路由_百度百科,“路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。” 在Android程序里,相当于有一个可以帮用户转发两个客户的通信信息。比如页面路由转发,即Activity跳转,但这里的框架不限于此。我需要么?一般android开发中,进行页面跳转时,一般写法如下:Intent intent = new Intent(mContext, XXActivity.class);intent.putExtra(“key”,“va原创 2020-06-28 23:27:07 · 830 阅读 · 0 评论 -
Android 性能优化最佳实践
本文由玉刚说写作平台提供写作赞助原作者:Mr.S版权声明:本文版权归微信公众号玉刚说所有,未经许可,不得以任何形式转载什么是性能快,稳,省,小,这四点很形象的代表了性能的四个方面,同时也让我们知道我们App现在是否是款性能良好的APP,如果有一项不达标,那么说明我们的应用有待优化。很多时候我们注重功能实现,保证能用,但是我们会发现,这样的应用很难拿的出手,里面的槽点太多了,性能很差,但是又不知道从哪里下手进行优化,那么我们就一步一步来,看看我们到底应该怎么优化我们的APP。1 、布局优转载 2020-06-01 15:39:03 · 564 阅读 · 0 评论 -
5分钟让你知道什么是PKI 密钥
译者博客 原文出处前言Public Key Infrastructure(PKI),中文叫做公开密钥基础设施,也就是利用公开密钥机制建立起来的基础设施。但是如果这么解释起来,到底是个什么东西,大家想必是没办法理解的。现在大家的很多重要活动都是通过网络进行的,那么与之俱来的安全问题就显得非常重要。同时很多安全保障机制都是基于PKI的,如果你因为各种原因(考试?提案?好奇?)想知道各种PKI是什么。那么通过这篇文章,绝对让你5分钟知道什么是PKI。PKI不好理解的原因是,这个概念包括了很多不同...转载 2020-05-28 19:01:17 · 2130 阅读 · 0 评论 -
Android获取外网和内网的IP
/** * 获取外网的IP(要访问Url,要放到后台线程里处理) * * @Title: GetNetIp * @Description: * @param @return * @return String * @throws */转载 2015-06-23 14:01:05 · 630 阅读 · 0 评论 -
手写简化EventBus之注解处理器方式,理解框架核心原理
前言自前一篇文章:手写简化EventBus,理解框架核心原理(反射实现方式)写完后,一直在研究注解处理器实现方式,中间又有其他事情耽搁了,所以到今天才补上这篇文章。此篇文章是在上篇反射方式实现的源码的基础上进行更改实现的,所以如果还没看上篇文章的可以先浏览下,能够更快的了解脉络和源码结构,能够更快的进入主题,更快理解。注解处理器(APT)顾名思义,APT就是注解处理器,其是Annotation Processing Tool的简称。它是javac的一个工具,用来在编译期扫描和处理注解,通过注解来生成原创 2020-05-09 16:58:05 · 426 阅读 · 0 评论 -
什么?你还不知道Android studio里有个Live Template?
前言作为Android程序员,之前IDE从Eclipse转移到Android Studio,开始很多快捷键等可能还是沿用之前的Eclipse方式,但是当使用时间经过很久以后,并且随着Android Studio的版本不断升级,相信很多人都认识到了AS的强大。 但是仍然还是有部分童鞋没有完全认识到AS真正的强大。电影对白:AS:你懂我?我:我当然懂你啊。AS:你真以为你懂我?那我创建代码模...原创 2020-04-05 20:23:39 · 766 阅读 · 0 评论 -
从源码分析Service和IntentService的区别
Service:概念:Service是一个在后台执行长时间运行操作而不用提供用户界面的应用组件,可由其他组件启动,即使用户切换到其他应用程序,Service 仍然在后台继续运行。特征:Service分为两种工作状态,一种是启动状态,由startService方式启动。一旦服务启动,它就会在后台无限期的运行,生命周期独立于启动它的组件,即使启动它的组件已经销毁了也不受任何影响。任务执行完成之...原创 2020-03-22 17:39:45 · 382 阅读 · 0 评论 -
Android注解-看这篇文章就够了
前言注解,也被称为元数据,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据。(Java编程思想)很多文章都是讲述java注解的,而且很多例子虽然有和Android互通的部分,但是Android开发中也扩展了很多单纯Java中没有的注解应用。所以这里主要介绍Android开发中的注解,当然包括Java注解。目前很多框架开发或者Android开发中都用...原创 2020-03-21 17:14:39 · 11433 阅读 · 3 评论 -
深入浅出AsyncTask的工作原理
前言AsyncTask类一般是android开发人员接触的最早的异步处理方法,虽然现在流行的有很多新的异步任务类,如RxJava等,但是对于AsyncTask的底层实现原理还是有必要了解学习的,对于我们自己理解其他框架或者自己设计框架都有很大的帮助。它使用handler和线程池的方式打到异步操作,将结果返回到主线程处理。数据结构在讲解AsyncTask的原理前,我们需要先来复习或者学习下其用...原创 2020-03-07 14:46:17 · 3443 阅读 · 0 评论 -
BlockingQueue阻塞队列原理解析
BlockingQueue,什么鬼,刚开始接触到这个数据结构的时候,从字面意义上根本没看出这个的意思,怎么会有个block冠在前边,感觉是个不太好的词。但是又发现其在某些服务任务框架上经常使用。今天我们来探秘下这个数据结构的用法。BlockingQueue源码分析首先,打开JDK的源码,找到BlockingQueue这个数据结构。(android开发要安装的jdk 1.8,在其安装目录即有源码...原创 2020-02-29 13:10:02 · 875 阅读 · 0 评论 -
五分钟读懂Android中的Binder跨进程机制和AIDL工具
做Android开发,迈入高级必须会的技术很多,而且肯定包括Binder技术,关于Binder的了解,笔者最开始只是使用AIDL工具开发接口,生成Service的服务方法,对于其内部的实现细节不太了解。从书本上或者搜索看了好几遍,每次都是似懂非懂,然后日子久了,连那点印象也不见了。所以最近的这次综合了解了这个技术后,决定将自己的理解记录下来,一方面巩固理解,一方面分享给需要的朋友。Binder ...原创 2020-02-07 12:10:56 · 3613 阅读 · 1 评论 -
CopyOnWriteArrayList的原理及使用
程序语言中,容器是所有编程中的基础工具。这里当然也包括并发编程。我们熟知的容器包括arraylist,map,set等。既然有了arraylist,那为何还要设计个copyonwriteArraylist。原理从字面意思,这个自注释的数据结构,Copy-On-Write容器即写时复制的容器。是为了并发操作避免发生同步问题而设计的。同城我们为了保证数据同步,会增加锁来保证。而CopyOnWri...原创 2020-02-05 12:42:35 · 1028 阅读 · 1 评论 -
Activity的启动模式和常见Flag组合
众所周知,Activity是Android四大组件之一,且应是初级程序员最先接触使用的Android技术,当然也会较早知道Activity有四种启动模式,但是可能对其了解不深,即使部分几年工作经验的开发由于业务方向等也不一定清楚其原理。首先,要明确,Android为何要给Acitivity设计这个东西呢。我们程序开发在学习数据结构时都学过形形色色的数据结构,不同的数据结构都有不同的优缺点,和适用...原创 2020-02-05 10:34:54 · 756 阅读 · 0 评论 -
设计模式之面向对象六大原则---读书笔记
编写代码,在工作了一段时间后,在不断的面对需求变化更改,堆砌代码之后。为了之后的代码编写效率,设计和旧代码的优化设计,我们需要考虑优化和设计代码需要考虑的几大原则,以指导我们的开发和优化工作。有经验的工程师可能记得程序员常说的SOLID原则,或者曾经学习时听过,日复一日工作加班,又不记得之前曾经学习过的理论知识,这里总结学习下,希望对看过这篇文章的人有所帮助。单一职责原则(Single Res...原创 2020-01-23 11:54:05 · 324 阅读 · 0 评论 -
一文看懂Android中的序列化
序列化,刚入门的开发者可能从字面上看不出这个到底是啥意思,这比较妨碍我们的理解。所以我们需要铭记其定义和作用。定义:Java序列化就是指把Java对象转换为字节序列的过程Java反序列化就是指把字节序列恢复为Java对象的过程。作用:对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。通过序列化可以在进程间传递对象。从序列化的作用中我们可以看到字节流有利于网络传输或者存...原创 2020-01-18 23:17:16 · 525 阅读 · 0 评论 -
你必须知道的linux开发快捷键,熟知工具快速开发
前言节省时间就是提高效率,时间就是金钱,时间就是生命。鲁迅名言:时间就是生命,无端地空耗别人的时间,其实是无异于谋财害命的。那如果你看到这篇文章不学习不点赞,无异于自杀。 你看了又不转发分享,无异于谋财害命啊同志。正文作为开发人员,最重要的就是效率。功能开发我们站在巨人的肩膀上,用着别人的轮子,高级语言,生成我们的功能。但是我们在开发或者调试时有很多的操作也是重复的,可提高效率的。大部分...原创 2020-01-15 11:00:37 · 305 阅读 · 0 评论 -
android系统tts TextToSpeech源码原理解析及定制tts引擎
TextToSpeech 即文字转语音服务,是Android系统提供的原生接口服务,原生的tts引擎应用通过检测系统语言,用户可以下载对应语言的资源文件,达到播报指定语音的文字的能力。但是一切都是在google service的环境下的,在国内使用的Android设备中谷歌服务都是禁用的,而国内最主要的也是需要中文的文字播报能力,那如何实现呢。TextToSpeech源码解析首先,我习惯读一下...原创 2020-01-11 13:06:36 · 4131 阅读 · 1 评论 -
java.util.ConcurrentModificationException问题原因
今天收到一个bug,查了好久,才找到java.util.ConcurrentModificationException这个异常。归根结底就是多线程问题, 多线程使用时不允许修改,解决方案就是对象加锁。报错的地方显示01-07 11:13:15.590 3526 3539 E JavaBinder: at java.util.HashMap$HashIterator.next...原创 2020-01-08 10:32:48 · 428 阅读 · 0 评论 -
如何查看Android系统源码
Android系统源码是很好的学习系统架构设计,查找问题的最佳工具。 网上流传的talk is cheap, show me the code, 或者Show me the fucking code.说明了源码的重要性,而作为Android系统基础的系统源码则是最值得看的源码了,对我们学习谷歌开发大牛的架构设计,提高我们的开发水平也有很多帮助。目前我经历过的几种查看源码的方式:Androi...原创 2020-01-03 17:14:11 · 4081 阅读 · 1 评论 -
linux合并7z的分卷文件
使用cat命令合并7z的多个分卷文件为7z文件。比如,分卷文件有:img_celeba.7z.001,img_celeba.7z.002…到img_celeba.7z.014。切换到分卷文件目录下,然后:cat img_celeba.7z.0** > new.7z这样就会得到一个名为new的总压缩文件...转载 2020-01-03 16:38:30 · 1291 阅读 · 1 评论 -
多个jar包合并成一个jar包的办法
有时候我们提供SDK给第三方开发,但是我们的接口设计按模块来的,为了不想把不需要的接口提供出去,可能需要将多个单独的jar包打成一个jar包,这样释放的版本简单效率,使用者也不用挨个更换。首先将其帮助文档附在这里用法: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...选项:...原创 2020-01-03 16:35:58 · 3156 阅读 · 0 评论 -
Handler通信机制源码解读
工作中,我们可能直接使用我们需要的工具方法,但是不曾了解其中的原理内涵,这样并不能很好的让我们理解其运行机制,在复杂项目和疑难问题时无从入手。作为开发想要提高并设计架构,一是要先学习优秀的设计理念,再就是了解其内部原理,为自己在复杂使用场景和发生疑难问题时能够透过表象看到本质。Handler,Message,looper 和 MessageQueue 构成了安卓的消息机制,handler创建后...原创 2020-01-03 14:41:37 · 398 阅读 · 0 评论 -
为什么要写博客--我又回来了
五年前,刚开始工作的时候,我就打算写博客的,不过开始由于公司是内网环境,保密工作等,上网计算机等U口都是封住的。刚开始做的决定就又没动力做下去了。之后换了一家公司也由于惯性,没激情再想起这个事,偶尔的几篇文章。在之后就是加班解决问题,博客成了消费品,只是用来查询问题的工具而已,找别人的博客相同的问题,看下,学习下,然后问题解决了,就去做别的事情了。 今天,为什么我又回来...原创 2019-12-29 15:13:02 · 286 阅读 · 2 评论 -
BaseActivity的重要性
我们一般的情况下要建立一个基类Activity然后让别的Activity来继承于它,但是我们可以使用一些小技巧来简便我们对这个BaseActivity的使用,如下:public abstract class BaseActivity extends Activity { @Override public void onCreate(Bundle savedInsta转载 2015-07-29 15:44:15 · 2444 阅读 · 0 评论 -
Android onClick和滑动事件冲突解决
在Android开发中,如果一个Activity里面同时继承实现了 onClickListener、onLongClickListener、onGestureListener, 此时手指在点击、滑动、长按屏幕是各个事件处理的顺序是如何的呢,通过实际项目中写日志得到如下的结果:点击松开: onDown / onShowPress(稍长会有) / onSingleTapUp /onClic转载 2015-07-14 17:41:01 · 4138 阅读 · 0 评论