- 博客(17)
- 收藏
- 关注
原创 Could not create an instance of type com.android.build.api.variant.impl.ApplicationVariantImpl报错处理
因为某些原因,想把gradle版本从7.5.0升级到8.4.0。直接修改之后进行gradle,结果报错:Could not create an instance of type com.android.build.api.variant.impl.ApplicationVariantImpl。在各个module的.gradle文件的android闭包下面添加namesapce。就是每个模块都需要定义一个命名空间,设置之后重新gradle,成功了!gradle的各种版本、各种插件升级起来问题真的是蛋疼...
2024-09-11 15:24:32
2597
1
原创 记一次打包报错Execution failed for task ‘:duophone:mergeExtDexGoogleplayRelease‘
将minifyEnabled设置为true时,本地打出来的包是正常的,可以运行的。但是jenkins打出来的包有些设置了不被混淆,但是还是混淆了。为了测试想把混淆关了打包看看效果,于是将minifyEnabled设置为false进行打包。最终将知道可能和compileSdkVersion以及minSdkVersion有关系。尝试将minSdkVersion设置为24,打包成功。其中jdk版本为17,问题分析了好久...
2024-09-10 09:51:30
1218
2
原创 左侧TextView自适应,右侧内容紧跟左侧 布局效果
简单描述就是,如果一行能显示下时,左中右紧密排列;如果一行显示不下时,中间的标签和右侧内容全部显示,左侧内容自适应。
2024-06-28 17:46:33
262
原创 AndroidX App Startup助力Android利用ContentProvider初始化组件
由此可知:APP启动的整体顺序是获取Application->初始化ContentProvider->调用Application#onCreate。也就是说ContentProvider的初始化是要在Application之前的。其中ContentProvider的初始化就是循环便利储存ContentProvider的集合调用它的onCreate方法。
2024-05-09 11:33:36
351
2
原创 context.dependOnInheritedWidgetOfExactType返回null的问题
context.dependOnInheritedWidgetOfExactType返回null的问题
2022-09-28 18:04:33
858
原创 ROOM数据库的使用与升级
项目中使用了GreenDao创建数据库,建立了一个库并在其中生成了2个表,现在做整体优化,想使用Room创建数据库,必经Room是google官方产品,还是值得尝试一波的。一:对于Room的使用,关注三个点:1.创建Entity:直接上代码(部分代码省略)第一个Entity@Entity(tableName = "login_history_table")public class LoginHistory { @PrimaryKey(autoGenerate = true)
2022-03-08 08:52:47
1987
原创 Android开发写main函数调试数据
为更快调试,在项目的某个类中增加main函数,结果运行main函数报错:解决方法:添加:<option name="delegatedBuild" value="false" /> 就可以正常使用main方法了。
2022-01-19 16:56:13
1859
原创 Android窗口机制及WindowManager Window,Activity,ViewRootImpl的关系以及activity中布局的加载流程
在安卓中,我们都是用Activity来显示一个界面,在Activity中我们设置了一个布局layout,然后 整个手机的窗口就会按照我们所设置的这个布局来展示整个界面,那么整个界面是怎么展示出来的?这个中间有哪些操作?在其中Window,Activity,View之间是一个怎样的关系存在?以下展开简要的分析:Activity的启动创建关于Activity的创建这里仅做一个简单的说明,更详细的...
2019-04-30 15:19:20
580
原创 Activity的启动解析,launcher点击启动应用
关于framework中的某些源码的分析,只记录下结论,以及主要的一些地方,具体的代码逻辑就不一一分析了,平时也不一定能用得上,需要用到的时候在根据记录的一些标记去寻找。这样方便记录与查看,没那么费脑。本文所提到的Activity的启动包括两种情况,第一种是在不同的进程中启动Activity,主要包括点击桌面的应用图标,启动新的应用,第二种情况是在同一个进程中启动一个Activity,主要包括...
2019-04-25 15:26:18
671
原创 SystemServer的启动 SystemServer SystemServiceManager SystemService ServiceManager的介绍
关于framework中的某些源码的分析,只记录下结论,以及主要的一些地方,具体的代码逻辑就不一一分析了,平时也不一定能用得上,需要用到的时候在根据记录的一些标记去寻找。这样方便记录与查看,没那么费脑。SystemServer:SystemServer是一个由zygote孵化出来的进程,在ZygoteInit的startSystemServer方法中被启动并初始化,进程id和组id均为100...
2019-04-18 16:54:59
1054
原创 Zygote简要分析
关于framework中的某些源码的分析,只记录下结论,以及主要的一些地方,具体的代码逻辑就不一一分析了,平时也不一定能用得上,需要用到的时候在根据记录的一些标记去寻找。这样方便记录与查看,没那么费脑。zygotezygote(受精卵)进程类似于Android的母进程,起始进程,Android系统的一些系统进程和应用程序进程都是通过Zygote进程fork出来的。流程:Linux系统的...
2019-04-18 15:57:14
241
原创 Android事件分发源码分析
网上关于事件分发的博文很多,每一篇都具有一定的特色,但并不是适合每个人看,本篇博文主要包含ViewGroup中事件分发方法的源码分析,附上流程图,伪代码说明,逻辑文字说明,可以主要看文字说明就能理解整个流程,加上自己稍微的思考,就能准确分辨事件分发过程中,每一个环节的改变所带来的走向变化。ViewGroup中的事件分发的主要方法为 dispatchTouchEvent方法,dispatch...
2019-04-04 16:27:44
186
原创 常用的排序算法解析
概述对某些数据进行排序是程序员不得不面对的一些需求,排序算法也是面试过程中老生常谈的一些问题,下面来总结一下常用到的一些排序算法,常用到的排序算法包括:冒泡排序,选择排序,插入排序,希尔排序,快速排序。冒泡排序冒泡排序是指在排序时从最开始或者从最末尾开始,依次比较相邻两个数据项,遵循更大(小)往前(后)移动的规矩,从而依次将最值放到了开始或者末尾处,循环下来,最终完成排序功能。效率分析...
2019-03-22 15:28:42
198
原创 常用的数据结构解析
程序中常用到的数据结构有数组、链表、树、堆、哈希表等等,而每一种数据结构都有各自的优缺点,了解各种数据结构以及其优缺点,在使用的时候才能不方。数组:通过创建对象直接使用。 优点:插入快(直接插在后面),在知道下标的情况下可以快速存取。 缺点:查找慢(要从头到尾一个个的找),删除慢(查找到删除的时候还要把后面的数据往前面...
2019-03-14 17:03:26
295
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人