
Android
文章平均质量分 90
紫雾凌寒
公众号:紫雾凌寒。8年互联网大厂研发经验,关于软件开发探讨可联系我,专注分享人工智能、移动开发、学习成长。
路漫漫其修远兮,吾将上下而求索。
展开
-
java.lang.SecurityException: getImeiForSlot: The user 10282 does not meet the requirement
项目场景:这两天项目升级Android 编译版本,将build.gradle 中的 compileSdkVersion 升级到 29后,发现APP在Android 10 及Android 11设备上在调用获取设备信息的时候崩溃了。问题描述:Android 编译版本升级为29后,在Android 10 和Android 11 手机上获取设备信息崩溃,报错java.lang.SecurityException: getImeiForSlot: The user 10282 does not meet原创 2020-12-17 20:36:51 · 13090 阅读 · 3 评论 -
Android实现模拟登陆教务系统并解析网页数据
前言 时光飞逝,日月如梭,转眼间四年的大学生活已经结束啦!开始了程序员的加班生活。我的第二学位的毕业设计是实现一个学习小助手。这其中最重要的环节就是模拟登录学校的教务系统,获取到教务系统的数据并解析,用自己的数据库存储,展示在自己设计的界面上。例如课程表我是仿照超级课程表的界面来设计的。废话不多说下面先看看效果。 抓取教务系统登录时需要传递的参数 模拟登录之前我...原创 2017-07-09 14:22:05 · 5413 阅读 · 9 评论 -
AndroidStudio 快速集成 秒级编译工具Freeline
Freeline (Android平台上的秒级编译平台)快速集成原创 2016-12-01 15:09:36 · 2501 阅读 · 0 评论 -
【Android 开发】SufaceView自定义相机拍照
前段时间写了关于一篇关于调用系统相机的博客,最近发现不同手机,调用系统相机效果不太好,所以学习Android 的相机原理,自定义了一个Android相机。看了这篇博客,相信大家都会写一个自己的相机。原创 2016-04-22 18:34:56 · 5068 阅读 · 3 评论 -
gradle 详解——你真的了解Gradle吗?
前段时间忽然发现自己对于Android studio的Gradle打包并不了解,这篇博客参考网上众多教程,为大家详细介绍Gradle。Gradle简介We would like to introduce Gradle to you, a build system that we think is a quantum leap for build technology in the Java...原创 2016-08-30 19:48:48 · 11782 阅读 · 3 评论 -
解析ViewPager(二)——ViewPager源码解析
前言前一篇博客介绍了ViewPager的简单使用,这篇博客主要从源码的角度来解析VIewPager。ViewPager的一些变量 ViewPager是一组视图,那么它的父类必然是ViewGroup,也就是说ViewPager继承了ViewGroup的所有属性。我们先看一下部分源码:public class ViewPager extends ViewGroup {原创 2016-12-03 16:22:08 · 2768 阅读 · 0 评论 -
Failed to establish session Error while Installing APKs
报错:Android Studio在小米手机安装应用报 “Failed to establish sessionError while Installing APKs ” 。原因 是因为MIUI开发者选项中开启了MIUI优化。解决 关闭MIUI开发者选项中的MIUI优化并重启!...原创 2016-12-23 10:17:53 · 10518 阅读 · 18 评论 -
Android 6.0动态权限适配
前言 最近项目发现比较多的问题是关于Android 6.0的问题,APP安装之后,在Android 6.0之后的系统,点击直接奔溃打不开,这是为什么昵?这就是Android 6.0以上的系统引入运行时权限--默认所有涉及用户隐私的权限都被关闭,我们在AndroidManifest.xml中申请了,之后我们还得动态申请权限,不然我们每次安装完APP后,就得在“设置=》应用=》安装的APP”原创 2016-12-31 14:44:16 · 1346 阅读 · 2 评论 -
Android学习之ViewPager(一)——ViewPager的简单使用
前言前段时间一直在加班比较忙,做项目中遇到了ViewPager,发现自己对ViewPager还只是会简单的使用,一些功能还是不太会使用,于是详细阅读了ViewPager的源码。 想要学的更加彻底点。下面我将通过三篇文章来主要介绍ViewPager。解析ViewPager(一)——ViewPager的简单使用解析ViewPager(二)——ViewPager的源码解析解析Vi原创 2016-11-16 17:58:04 · 1014 阅读 · 0 评论 -
Android学习之随笔(一)
前两天刚从亚马逊买了本书,今天看了第一章,虽说都是些基础性的东西,但是颇有所获,感觉自己以前真的不算是一个合格程序员,不知道项目的规划与优化,JAVA代码我一直是把所有的代码都放在一个package下,Adapter,activity都是混乱掺杂在一起的。好比一个房间中既有餐桌又有马桶,床上还放着一个酱油瓶。这在当时觉得没什么问题但是,如果需要优化和调试的时候,想找到问题的所在真的是犹如大海捞针。原创 2015-11-10 21:19:37 · 628 阅读 · 0 评论 -
万石谷,粒粒积累;千丈布,根根织成 ——随笔第二弹
前言最近两个月实在太忙了,被大资本家压榨,持续加班一个月了。刚刚有点空,忽然发现已经是双十一了,好长时间已经没有写博客了。觉得有必要写一篇来纪念一下,本来想在9月份写一篇关于这一年自己的学习Android和写博客的感受,但是太忙了,那就乘这个时间来写点东西。为什么学Android? 从3月份开始准备简历找实习,在面试的时候都会问到“你为什么学Android ?”。我最初接触软原创 2016-11-13 14:07:05 · 3235 阅读 · 2 评论 -
Android Studio五分钟带你从菜鸟到高级调试
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发。前段时间刚刚入职,还算比较幸运。进来就是让我做Android的。好多同学都去做其他没有接触过的东西了。刚开始一周肯定就是熟悉代码。但是我刚拿到代码我就呆了。做的是一个金融业务的APP。由于好多数据要加密所以,公司自己采用TCP层链接,用SSL加密协议。自己封装的网络框架和网络请求 。其中令我最头疼...原创 2016-07-15 15:13:21 · 17078 阅读 · 22 评论 -
【Android学习之】深入理解JNI
经过一周多的时间,这篇博客终于码完了。这篇博客主要是为了帮助大家深入理解JNI,写这篇博客主要是因为前段时间去面试,面试有道25分的简答题就是让我概述Android JNI 的调用过程,当时我就懵逼了,我除了知道JNI是“Java native interface”的缩写外,其他什么都不知道。好了,废话少说,下面为大家开始介绍JNI:1、JNI概述JNI 是 Java Native I原创 2016-06-16 12:55:06 · 2243 阅读 · 0 评论 -
View的工作原理(二)--从measure说View的测量流程
前言上篇博客主要介绍了我们了解View工作原理前应该掌握的三个基础概念:ViewRoot,DecorVIew,MeasureSpec。这之后几篇博客主要介绍View的三大流程(Measure ,layout,draw),这篇博客主要从源码的角度来解析View及ViewGroup的Measure(测量流程)。前面我们介绍过Measure过程的主要工作是确定View的测量宽/高。View的Me原创 2016-08-22 17:02:07 · 1397 阅读 · 0 评论 -
View的工作原理(一)——从ViewRoot和DecorView说起
前言本文参考《Android开发艺术与探索》第四章内容及网上几篇博客,里面融入笔者的个人理解。希望能对大家理解View有所帮助。基本概念介绍介绍View的工作原理之前我们首先要理解下面两个概念:1、DecorViewDecorView是Windows中的View的最顶层View。我们可以根据下面一副图来认识它:原创 2016-08-13 17:28:10 · 2695 阅读 · 0 评论 -
View的工作原理(三)--View的Layout和Draw过程
前言前面两篇博客介绍了View的工作原理的measure流程,这篇博客主要介绍View的layout流程。View的layout流程首先我们通过下面这幅图,来理一下View的layout流程的大致流程。通过这幅图我们知道:Layout的作用是ViewGroup用来确定子元素所在的位置,当ViewGroup确定后,它在onLayout方法中会遍历所有子元素并调用其layout原创 2016-08-31 13:38:12 · 842 阅读 · 0 评论 -
Android开发中的日常积累
欢迎Star,Forkhttps://github.com/lizhangqu/CoreLink里面记录了开发过程中有用的东西,欢迎补充,不定时更新。Android 性能优化Android内存优化之OOMAndroid最佳性能实践(1):合理管理内存Android最佳性能实践(2):分析内存的使用情况Android最佳性能实践(3):高性能编码优化Android最佳性能实践转载 2016-08-03 09:00:59 · 901 阅读 · 0 评论 -
一张图将Activity与Fragment生命周期展现的淋漓尽致
今天没事闲逛博客的时候,在国外网站上发现了这样一张图,这张图将Activity和Fragment的生命周期展现的淋漓尽致。原创 2016-07-22 10:46:52 · 601 阅读 · 0 评论 -
在Android中运用RxJava
1、RxJava 2.01.1、什么是RxJava和响应式编程(reactive programming) 在响应编程中,消费者对数据进行反应,这就是为什么异步编程也被称为响应式编程的原因。 响应式编程允许将事件更改传播到已注册的观察者。 RxJava是从Netflix的反向扩展(Rx)到Java的端口。 RxJava是2014年开源的,托管于http://reacti...翻译 2017-04-16 12:45:29 · 2871 阅读 · 0 评论 -
Android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )及屏幕适配注意事项
1 Android手机目前常见的分辨率1.1 手机常见分辨率:4:3VGA 640*480 (Video Graphics Array)QVGA 320*240 (Quarter VGA)HVGA 480*320 (Half-size VGA)SVGA 800*600 (Super VGA)5:3WVGA 800*480 (Wide VG转载 2017-04-20 17:02:51 · 1750 阅读 · 0 评论 -
Android热修复——深入剖析AndFix热修复及自己动手实现
前言去年写过一篇热修复的文章,那时候刚开始接触,照猫画虎画的还算比较成功。但是那种修复需要重新启动APP,也就是在JAVA层实现的热修复。我们知道目前Android主流的修复还有在Native层实现修复的,就是在Native层替换方法,不用重新启动APP。今天写了个Demo,下面主要分享一下它的主要原理。1、热修复目前,热修复的原理主要有两种技术,一是不需要启动APP就能实现修复,在Nati...原创 2019-07-20 23:07:00 · 6883 阅读 · 7 评论 -
静态库与动态库原理,编译流程详解
编译流程1、预处理(Preprocessing)完成宏替换、文件引入,以及去除空行、注释等,为下一步的编译做准备。 $ gcc -E test.c -o test.i -E让gcc在预处理结束后停止编译,test.i 为预处理后的输出文件。-o:指定输出文件。 也就是对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等2、编译(Compilation)将预处...原创 2019-06-30 20:23:04 · 3979 阅读 · 0 评论 -
NDK基础知识
前言学习NDK之前我们首先需要了解NDK是什么?Android NDK 是一套允许您使用 C 和 C++ 等语言,以原生代码实现部分应用的工具集。在开发某些类型的应用时,这有助于您重复使用以这些语言编写的代码库。——Android中文开发技术文档那么我们首先需要有C或C++的基础,下面介绍一些C/C++的基础知识。1、函数指针函数:返回值是一个指针的函数,即本质是一个函数...原创 2019-06-30 20:17:50 · 2727 阅读 · 0 评论 -
手撸一款Android屏幕适配SDK
1、屏幕适配的原因Android手机屏幕碎片化严重,导致界面元素在不同屏幕上的显示效果不一致。下面我们看下未对控件适配在不同屏幕上的截图。这是MI6,未适配。这是夜游模拟器为适配2、屏幕适配的目的让界面元素匹配不同屏幕的尺寸3、屏幕适配的方式布局适配避免写死布局控件,使用warp_content,match_parent。LinerLayout 使用layout_weigh...原创 2019-07-08 17:45:29 · 4379 阅读 · 3 评论 -
[Android设计模式之旅]——责任链模式
介绍责任链模式(Chain of Responsibility Pattern)就是当我们发送一个请求后,沿着一个任务链执行,任务链上每个对象都能处理该请求,如果一个对象不处理,就会传递给下一个对象。这原理好像跟事件分发机制有点像啊!意图职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。所以责任...原创 2019-03-23 15:05:22 · 2336 阅读 · 0 评论 -
Android 模块化、组件化、插件化以及热修复的比较
前言已经好久好久没有更新博客了,去年后半年太忙,没怎么抽出时间来写博客。以后给自己定个小目标,不管多忙,每周都要写一篇博客。闲话不多说,下面开始扯正题,最近有个同事问我“模块化、组件化,插件化还有热更新他们之间有什么关系和区别?“概述随着产品的业务不断的增加,我们的APP中代码就会越来越多,这时侯为了方便我们多个成员之间协同开发,所以就出现的根据业务,将我们代码分割为不同的模块(用户中心模块...原创 2019-03-05 22:21:40 · 3427 阅读 · 1 评论 -
Handler 源码解析——Handler的创建
前言Android 提供了Handler和Looper来来满足线程间的通信,而前面我们所说的IPC指的是进程间的通信。这是两个完全不同的概念。Handler先进先出原则,Looper类用来管理特定线程内消息的交换(MessageExchange);1、为什么会有Handler机制?我们刚说Handler机制的主要作用是将某一任务切换到特定的线程来执行,我们做项目可能都遇到过AN...原创 2018-08-18 16:07:15 · 3009 阅读 · 0 评论 -
Android学习--深入探索RemoteViews
什么是RemoteViewsRemoteViews表示的是一个View结构,它可以在其他进程中显示,由于它在其他进程中显示,为了能够及时更新它的界面,RemoteViews提供了一组基础的操作来跨进程更新它的界面。源码中对于它的解释如下:/** * A class that describes a view hierarchy that can be displayed in * ...原创 2018-08-05 21:15:19 · 2664 阅读 · 0 评论 -
Android学习——手把手教你实现Android热修复
前言最近一段时间看了一些关于Android热修复的知识,比如Andfix,Tinker,Sophix等,看了这些框架的原理,就想着自己能不能手撸一个简单的demo。下面我们就来自己动手实现Android热修复吧。热修复实现原理所谓热修复就是,在我们应用上线后出现小bug需要及时修复时,不用再发新的安装包,只需要发布补丁包,在客户不知不觉之间修复掉bug,JAVA虚拟机JVM在运行时...原创 2018-07-07 20:50:50 · 20013 阅读 · 24 评论 -
Android自定义无压缩加载超清大图
自定义无压缩加载超清大图前言 已经很久没有写博客了,前段时间做项目就遇到加载超大图时系统内存溢出,我们一般处理加载图片时OOM的方法都是对图片进行压缩。但是发现手机系统相册是可以打开大图的,今天就分享一波自定义无压缩加载超清大图。 BitmapRegionDecoder BitmapRegionDecoder用来解码一张图片的某个矩形区域,通常用于加载某个图片的指定区域。...原创 2018-07-01 22:24:17 · 6120 阅读 · 1 评论 -
Flutter从入门到实战
Flutter从入门到实战Flutter概述 Flutter是一款移动应用程序SDK,一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。 Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。 无需移动开发经验即可开始使用。应用程序是用Dart语言编写的,如果您使用过Java或...原创 2018-05-28 00:06:52 · 30880 阅读 · 10 评论 -
Okhttp 与 Retrofit的简单介绍及两者间的联系
前言 Android为我们提供了两种HTTP交互的方式:HttpURLConnection和Apache HTTP Client( Android 6.0——API 23已经不支持该方式了 ),虽然两者都支持HTTPS,流的上传和下载,配置超时IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP可以让我们的应用运行更快、更节省流量。这就诞生了Okhttp及Ret...原创 2018-03-25 21:28:26 · 8574 阅读 · 0 评论 -
Android学习之——Binder学习入门篇
前言 已经不知道多久没有学习,没有写博客了。昨天看到一句“一个好的程序员,还是一名作家。” 感觉自己不应该一天老给自己找借口说工作太忙,没时间学习。废话不多说,下面进入今天的正题那就是大多数Android程序员为之头疼的东西——Binder。但是,Binder又是面试时大多数面试官会问的问题。关于Binder的资料网上有很多很多,但是,由于Binder代码本身就比较枯燥,很多资料都是长篇...原创 2018-03-12 22:33:11 · 4901 阅读 · 0 评论 -
[Andriod设计模式之旅]——Builder模式
前言 具体介绍Builder设计模式之前,首先我们想一个问题。前段时间双十一室友组了台电脑,我们都知道电脑是一个非常复杂的组合体,里面有好多元件(CPU,硬盘,显示器,电源,显卡等等),不同的人对自己电脑的配置要求不同,但是得到的结果都是不同配置的一台电脑,那么这个过程怎么样封装使组件之间的耦合度降到最低,同时方便扩展。这时候就用到builder设计模式了。一、Builder设计原创 2017-12-10 15:02:46 · 3442 阅读 · 1 评论 -
Instant App 常见问题官方指南 | Android 开发者 FAQ Vol.6
我们被大家的热情惊到了 —— 事实上我们发出上一篇 Instant App 的文章没几天就收到了一大堆问题。由于涉及到的类目太多,我们这里简单归纳了一下,方便大家查看。如果还有更多问题也请随时通过留言的方式与我们取得联系。1. 基础类问题Q: 哪些设备兼容 Android Instant App?A: Android Instant Ap转载 2017-08-20 16:04:24 · 4746 阅读 · 0 评论 -
Android studio 预览报错解决
一言不和先上图,相信大家都遇到过上述问题,预览无法显示,报com.android.util.PropertiesMap究其原因是因为当前预览时SDK版本高啦。我们看看build.gradle文件中的sdk版本而我们预览界面选取的sdk是24我们把版本给一下即可。如下所示:原创 2016-07-28 15:52:54 · 1222 阅读 · 0 评论 -
一分钟帮你提升Android studio 编译速度
我们经常遇到AS运行时非常卡的问题,查找了好多资料,终于找到了解决办法。其实非常简单,一言不和就上图:首先,我们应该找到项目中的gradle.properties这个文件,打开后我们会看到如下所示的一些内容:我们要做的主要是修改红笔所示的内容:去掉注释,并在后面加上这么一句:org.gradle.daemon=true记得一定要加上这句。加完之后我们还得重新启动AS。...原创 2016-07-15 16:12:47 · 13853 阅读 · 5 评论 -
【Android 学习】之ListView使用大全
Android 学习之ListView使用大全ListView是列表组件,是android中常用的组件,列表显示信息由三个部分组成。ListView组件。适配器,用来将用来显示的数据映射到ListView组件中。列表中要显示的数据。Listview 的适配器有 ArrayAdapter SimpleAdapter SimpleCurdorAdapter。Array原创 2015-10-17 16:23:34 · 1038 阅读 · 0 评论 -
【Android 学习】AndroidMainfest.xml详解
一、关于AndroidManifest.xmlAndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Inte转载 2015-10-05 11:02:20 · 733 阅读 · 0 评论 -
【Android 学习】四大组件(三)——Content Provider
本文转载自:http://blog.youkuaiyun.com/conowen/article/details/72731421、Content Provider(内容提供者)简介 从字面上的意思来看,Content Providers是内容提供者,也就是数据的提供者,而数据的来源可以是SQLite数据库或者File存储等等方式。为了实现各个应用程序之间的数据共享,可转载 2015-10-15 22:29:58 · 554 阅读 · 0 评论