android
文章平均质量分 69
a2923790861
这个作者很懒,什么都没留下…
展开
-
Android aab转换为通用的apk
admobileSdkTest/universal.apks 是输出的apks文件的位置,也是一样,默认mac会加 /Users/mckj 前缀,加一起就是 /Users/mckj/admobileSdkTest/universal.apks 位置。可以把文件拖到Android Studio 中,就可以打开 resources.arsc 文件,查看到资源信息。再双击 universal.rar,解压缩,其中的 universal.apk 文件就是我们想要的文件。mac文件夹如图所示,window同理。原创 2022-10-11 14:46:40 · 1766 阅读 · 1 评论 -
将 Google 登录集成到您的 Android 应用中
以集成了第三方谷歌、facebook SDK的依赖库所写的接入流程需要用到的地址:首先需要先登录谷歌账号,然后打开这个地址。原创 2022-08-29 17:13:42 · 1465 阅读 · 0 评论 -
算法(第四版)-算法练习(1)-(1.1.1-1.1.7)-kotlin
算法(第四版)-算法练习原创 2022-05-12 19:15:00 · 431 阅读 · 0 评论 -
Android 出海 Admob 踩坑
1. 集成 Admob 后, 使用测试的 Key,可以正常看到广告,切换回自己的正式key, 发现一直无法展示Ad,提示错误:{ "Code": 3, "Message": "Publisher data not found. <https:\/\/support.google.com\/admob\/answer\/9905175#9>", "Domain": "com.google.android.gms.ads", "Cause": "null", "Respon原创 2022-04-06 11:39:52 · 3107 阅读 · 1 评论 -
AsyncListDiffer、DiffUtil.DiffResult 流程源码解析
使用RecyclerView时,如果使用 AsyncListDiffer 用于分页加载的话,是合适的,因为在你通过 addAll的方式添加分页数据后,根据 DiffUtil.DiffResult 的差异算法,之前的数据如果没有发生变化,areContentsTheSame 方法如果返回true,则不会调用 Adapter. notifyItemRangeChanged 方法去重新绑定数据。但是当你不用于分页数据,而仅仅用于正常的列表数据,并且你希望可以根据 DiffUtil.Diff...原创 2022-01-10 16:23:54 · 1902 阅读 · 0 评论 -
Android Gradle Plugin插件开发----介绍
以下内容基于本人所学而编写的,如与网上相关介绍内容不相同,概不负责android 插件化开发,这个词我们在网上经常可以看到,同时看到的还有组件化开发。在这里我们只讨论插件化开发的相关内容。1.插件的作用以我所学的插件知识,我简单概括下插件的作用,即插件可以用于哪些地方。1.接入第三方SDK时进行统一配置参数。场景:有多个APP,都接入了友盟推送SDK 不使用插件时:如果友盟推送SDK进行了升级,此时需...原创 2021-09-29 17:07:28 · 765 阅读 · 0 评论 -
Android Studio断点调试时行号对应不上问题解决
有时候我们debug 的时候会发现程序真正断点的位置和我们打断点的位置不对应,例如:工程compileSdkVersion为28,但程序运行在29的设备上时。 但是当你把compileSdkVersion 修改为29以后,运行在29的设备上时,还是会发现真正断点的位置和我们打断点的位置不对应。 问题产生的原因是因为我们使用了真机调试,国内的手机android系统基本上都是定制过了,源码很可能被改过了所以行号发生了变化。...原创 2021-08-20 10:29:07 · 880 阅读 · 0 评论 -
ASM7 使用指南------第1章引言
(如有侵权请联系作者删除)1.1动机程序分析、程序生成和程序转换都是非常有用的技术,可在许多应用环境下使用:□程序分析,既可能只是简单的语法分析(syntaxic parsing),也可能是完整的语义分析(sematic analysis),可用于查找应用程序中的潜在bug、检测未被用到的代码、对代码实施逆向工程,等等。□程序生成,在编译器中使用。这些编译器不仅包括传统编译器,还包括用于分布式程序设计的stub编译器或s...原创 2021-07-26 18:04:04 · 593 阅读 · 0 评论 -
git : 记录一次fork远程分支并且merge合并冲突黄色警告问题
问题描述我们在用git开发是经常遇到冲突的情况,一般发生在协同开发时,一个文件被两个人同时改掉了,这是我们在pull代码时要解决冲突,并重新add然后commit最后push.这个博客记录的是另一种发生冲突的情况如何解决问题起因是在github上fork了别人的库,有一段时间没有fork更新了,算起来差不多1年时间。昨天用android studio添加了别人的库的远程仓库,准备直接fetch别人的库,然后merge到自己fork的库的分支上。之所以不用github提供的更新fork代码的.原创 2021-02-03 09:58:04 · 2037 阅读 · 0 评论 -
RecyclerView源码分析(四)--动画流程
看完本文你大概需要 8.3分 的毅力相关系列文章RecyclerView源码分析(一)--整体设计RecyclerView源码分析(二)--测量流程RecyclerView源码分析(三)--布局流程上一篇文章讲了RecyclerView的布局流程,发现里面大多数内容都是和动画相关的。那么这边文章就先讲RecyclerView中,数据改变发出通知到播放动画的一系列流程。RecyclerView的动画流程对于RecyclerView的动画流程,是一个非常的长的流程,那么我们先把大的东西分转载 2020-11-30 09:16:23 · 220 阅读 · 0 评论 -
RecyclerView源码分析(三)--布局流程
在上一篇文章中分析了RecyclerView的Measure过程。在Measure过程中的自动化Measure中,应用过布局流程的,得到Child的边界值,但是当时我们略过了,那么今天接着分析RecyclerView的布局过程。PS:源码版本为androidx1.0.0版本,如果下面与你的源码有出入,请核实版本是否相同。RecyclerView的Layout过程首先贴一下源码,不同版本的RecyclerView源码会不同,如果你也打开了源码,请确定源码版本是否一致。 protec转载 2020-11-23 17:44:21 · 202 阅读 · 0 评论 -
RecyclerView源码分析(二)--测量流程
RecyclerView是一个ViewGroup,那么也就是一个View。那么View的绘制过程是measure到layout到draw的一个顺序。然而一个ViewGroup的目的是盛放其它View的,那么最主要的还是其measure和layout过程。那么我们今天就来看看RecyclerView的measure过程。PS:源码版本为androidx1.0.0版本,如果下面与你的源码有出入,请核实版本是否相同。RecyclerView的Measure过程如果你这个时候也打开了源码,你应该会发转载 2020-11-23 17:07:27 · 315 阅读 · 0 评论 -
RecyclerView源码分析(一)--整体设计
扯淡的导语好像自从RecyclerView这个控件一出现,对这个控件使用方法的文章就层出不穷。我是一只都在使用这个控件,但是从来没有过深入的研究它。对于这样一个人人吹捧的控件,怎能不去研究一下。本想找找现成的分析源码的文章,结果并没有如愿。以前都是指望老罗,现在要亲自动手了。我是一个坚持写干货的人,这一段你就当没看到。RecyclerView这个控件出来已经有一段时间了,如果看这篇文章的你,还没有使用过这个控件。那请先去学习怎样使用。不然看也白看。这里奉上一些关于介绍RecyclerView使用.转载 2020-11-23 16:42:59 · 176 阅读 · 0 评论 -
ViewPager源码解析
想要成为一名优秀的Android开发,你需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~。PagerAdapter 介绍 ViwePager 缓存策略 ViewPager 布局处理 ViewPager 事件处理 相关内容PagerAdapter 介绍ViewPager使用非常简单,看下面代码片段viewPager.setAdapter(new Adapter());private class Adapter extends PagerAdapter {.原创 2020-11-23 16:37:57 · 985 阅读 · 0 评论 -
Android系统源码分析--Activity的finish过程
上一篇我们分析了Activity的启动流程,由于代码量很大,还是没有分析的很详细,但是基本流程都出来了,更详细的东西还是要去看源码。这一章来分析Activity的finish过程,分析一下finish的过程到底做了哪些处理,最后对Activity的整个启动过程以及finish过程绘制流程图,以方便我们记忆。finish代码分析// /frameworks/base/core/java/android/app/Activity.java /** * Call this .原创 2020-10-10 14:15:06 · 1877 阅读 · 1 评论 -
ViewRootImpl与View和WindowManager
在https://blog.csdn.net/a2923790861/article/details/108400833中,我们讲到了无论是Activity、PopupWindow、Dialog,它们最后都是调用windowManager.addView(decorView),进而调用了ViewRootImpl.setView方法来完成布局展示,那么这个ViewRootImpl到底是什么。ViewRootImpl看到ViewRootImpl想到可能会有ViewRoot类,但是看了源码才知道,Vi..原创 2020-09-27 16:49:27 · 312 阅读 · 0 评论 -
Android Touch事件派发过程详解
Android事件投递(主要以触摸事件为主)的工作流程分为4个部分,如图所示:(1) 采集即对“硬件源”所产生的原始信息进行收集的过程。它需要Linux内核驱动的支持,Android系统则是通过/dev/input/下的节点来访问当前发生的事件。(2) 前期处理上一步采集到的信息为“原始数据”,这其中一部分内容对应程序而言并不是“必须”的,而且格式上也相对烦琐,所以需要先经过前期的提炼和转化。(3)WMS分配WindowManagerService是窗口的大主管,同时也是Inpu...原创 2020-09-04 18:28:37 · 943 阅读 · 0 评论 -
Activity、PopupWindow、Dialog布局加载屏幕源码分析
Activity的setContentView首先查看Activity的setContentView的方法: public void setContentView(@LayoutRes int layoutResID) { //getWindow()获取activity内部对象mWindow(PhoneWindow类型)并调用它的setContentView方法 getWindow().setContentView(layoutResID); .原创 2020-09-25 15:02:26 · 260 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (10) ——OpenGL ES 详解IV(纹理优化)
出处:电子设备中的画家|王烁 于 2017 年 7 月 19 日发表,原文链接(http://geekfaner.com/shineengine/blog11_OpenGLESv2_10.html)上节回顾上一节学习了如何从一张原始图片中,获取生成纹理所需要的信息,然后根据这些信息,通过OpenGL ES API在GPU内存中生成了一张纹理,并且还介绍了纹理属性,知道了如何通过纹理坐...转载 2020-01-16 17:26:48 · 702 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (9) ——OpenGL ES 详解III(纹理)
出处:电子设备中的画家|王烁 于 2017 年 7 月 16 日发表,原文链接(http://geekfaner.com/shineengine/blog10_OpenGLESv2_9.html)上节回顾上面一节课,我们学习了一个OpenGL ES程序必须具备的一些API,从准备shader,到传入绘制信息,到最后的执行绘制命令。然而在上节课结束的时候,我们也提到了OpenGL ES...转载 2020-01-16 17:25:59 · 776 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (8) ——OpenGL ES 详解II(传入绘制信息)
出处:电子设备中的画家|王烁 于 2017 年 7 月 13 日发表,原文链接(http://geekfaner.com/shineengine/blog9_OpenGLESv2_8.html)上节回顾上一节讲述了如何通过 OpenGL ES 给 GPU 关联一套可以使用的 shader,这 一套 shader 是被放在一个 program 中当作一个整体供 GPU 使用的。那么 G...转载 2020-01-15 11:52:52 · 828 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (7) ——OpenGL ES 详解I(绑定 Shader)
出处:电子设备中的画家|王烁 于 2017 年 7 月 12 日发表,原文链接(http://geekfaner.com/shineengine/blog8_OpenGLESv2_7.html)上节回顾在之前的六节中,讲解了 EGL、GLSL 与 OpenGL ES 三个专业术语的概念以及它们的关系,串讲了整个绘制流程;之后分别讲解了 EGL 主要 API 的用处,以及 GLSL 的...转载 2020-01-15 11:51:51 · 608 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (6)——GLSL 语法(IV)
出处:电子设备中的画家|王烁 于 2017 年 7 月 11 日发表,原文链接(http://geekfaner.com/shineengine/blog7_OpenGLESv2_6.html)上节回顾上面两节,主要讲解了 GLSL 中变量和函数的定义语法和使用语法,现在我们可以在 shader 中自定义一些我们所需要用到的变量和函数。但是在 shader 中, 还存在着一些内置的变...转载 2020-01-11 17:07:21 · 1110 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (5)——GLSL 语法(III)
出处:电子设备中的画家|王烁 于 2017 年 7 月 11 日发表,原文链接(http://geekfaner.com/shineengine/blog6_OpenGLESv2_5.html)上节回顾上一节了解了 GLSL 中的变量类型,有一些类型是原本所熟知的,而有些类型是 GLSL 特有的。在上一节结尾的时候也提到了变量的范围,其中讲到两个 shader 所在的空间是独立的,但...转载 2020-01-11 15:12:04 · 637 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (4)——GLSL 语法(II)
出处:电子设备中的画家|王烁 于 2017 年 7 月 10 日发表,原文链接(http://geekfaner.com/shineengine/blog5_OpenGLESv2_4.html)上节回顾上一节,我们讲解了 Shader 的功能,并从预处理和注释开始,讲解 GLSL 的语法知识。想要学习和使用一门语言,必须先学习这门语言的语法,语法中除了上一节说到的预处理、注释,还有更...转载 2020-01-11 15:11:13 · 674 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲 (3)——Shader的功能&GLSL语法(I)
出处:电子设备中的画家|王烁 于 2017 年 7 月 10 日发表,原文链接(http://geekfaner.com/shineengine/blog4_OpenGLESv2_3.html)上节回顾在第一节中,我们介绍过 OpenGL ES 与 GLSL 的主要功能,就是往绘制 buffer 上绘制图片。其中虽然 GLSL 制作的 shader 是穿插在 OpenGL ES 中使...转载 2020-01-11 15:08:19 · 635 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲(2)――EGL详解
出处:电子设备中的画家|王烁 于 2017 年 7 月 9 日发表,原文链接(http://geekfaner.com/shineengine/blog3_OpenGLESv2_2.html)上节回顾上一节我们初步学习了 OpenGL ES、EGL、GLSL 的相关概念,了解了它们的功能,以及它们之间的关联。我们知道了 EGL 是绘制 API(比如 OpenGL ES)与 底层平台窗...转载 2020-01-11 15:07:15 · 965 阅读 · 0 评论 -
OpenGL ES 2.0 知识串讲(1)――OpenGL ES 2.0 概括
出处:电子设备中的画家|王烁 于 2017 年 7 月 9 日发表,原文链接(http://geekfaner.com/shineengine/blog2_OpenGLESv2_1.html)写在前面的话电脑是做什么用的?电脑又被称为计算机,那么最重要的工作就是计算。看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的操作。是什么使...转载 2020-01-11 15:05:40 · 955 阅读 · 0 评论