自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (5)
  • 收藏
  • 关注

原创 Android中使用AndroidX出现 but the ‘android.useAndroidX‘ property is not enabled的问题解决办法

当更新了Android Studio之后编译出现了这样的问题:This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled. Set this property to true in the gradle.properties file and retry.Th...

2020-04-13 14:44:07 38956 7

原创 Android 系统的启动流程

Android启动流程

2023-02-28 17:09:27 1562 1

原创 Android 系统框架结构

大部分开发的同学是不太清楚Android的系统的基本架构的,特别是应用层开发的同学,故经过该文章的介绍,希望同学们对Android的架构有基本的认识。类似于网络的五层结构,Android系统结构也有着其五层结构,从底层到上层是一个把硬件抽象化,然后再接口化以及应用调用接口的过程。

2023-01-11 09:21:14 2575

原创 logcat: Unexpected EOF!的解决方法

logcat: Unexpected EOF!的解决方法!

2022-08-05 17:43:21 5216 1

原创 fragment如何获取activity的点击事件

fragment中有一个弹框,需要在整个activity被触摸时将该弹框进行隐藏,但是在fragment中的view只能获取到fragment被触摸的事件,而不能直接获取activity的触摸事件,如果想要获取activity的触摸事件,我们可以怎么做呢?...

2022-08-05 15:38:03 1354

原创 This version of the Android Support plugin for IntelliJ IDEA (or Android Studio) cannot open 问题解决方法

以上意思是当前的IntelliJ IDEA 或者Android studio所支持的Android插件不能打开该项目,请更新到2021.1.1版本或者更新的版本,故我们将相关的Android插件检查更新一下即可。

2022-08-03 09:18:49 11036 1

原创 gerrit中如何切换远程服务器

当你使用的远程服务器要更换的时候,即代码转移到新的gerrit服务器上了,是否一定需要重新配密钥,且需要重新拉代码呢。其实大可不必,重新拉一份代码太大费周章了,使用命令切换远程服务器即可。以下是一个从192.168.8.67切换到192.168.1.80远程服务器的例子。...

2022-07-30 14:34:16 573

原创 编译Android项目的时候提示非法字符:“\ufeff”的解决方法

当编译一个新导入进Android studio的项目编译后提示非法字符:“\ufeff”的错误提示时,只需要将将字符改为GBK,然后再转化为UTF-8即可解决。

2022-06-07 09:58:08 1270 3

原创 使用sqlite3语句后出现省略号 ... 的解决方法

当在linux系统中打开数据库,然后使用sql语句,然后如下图遇到出现省略号...>问题如何解决?

2022-06-06 16:08:39 880

原创 git 中stash的实用方法

git stash : 存储所有改动;git stash pop : 释放第一次改动相关文件;git stash push /.../... : 存取指定的文件;git stash -m "存储的信息" : 给当前压栈存储的修改添加说明信息(如果没有指定信息,则说明信息为最新的commit信息)git stash list : 查看所有的压栈修改;git stash show stash@{0} : 查看某一个压栈修改了哪几个文件;git stash show -p stash@{0

2022-05-12 15:12:48 58897 5

原创 打开Source Insight 出现闪退的问题解决

打开 Source Insight 出现闪退情况,具体情况如下:出现以上画面之后立即闪退。解决方法:右键点击 Source Insight 图标--->属性---->兼容性--->以兼容模式运行这个程序:如下图:点击应用和确定,即可解决问题。...

2022-03-03 09:58:27 1346

原创 使用AlarmManager不准时的解决方法

最近我们公司的产品被客户投诉定时关机偶现不准时和偶现不起作用的问题。具体复现操作是定时一段比较长的时间进行自动关机就很容易出现该概率问题。 由于这个定时关机功能是前同事实现的,所以我得查看代码,查看跟踪代码发现该定时方式使用的是使用了AlarmManager里的set()方法:AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);alarm...

2022-02-24 11:40:55 3784 3

原创 如何获取未安装apk应用的包名、应用名以及版本信息等

在Android开发过程中,在做是否可安装第三方应用的功能的时候可能需要先判断应用的信息,比如包名,当通过apk的包名判断到该apk不能够被安装的时候,我们将不允许安装。那么对于未安装的应用,我们如何获取其应用相关信息呢,其实知道了该第三方apk的路径我们就可以获取其应用信息了。 public String getPackageName(Context context, String apkPath) { PackageManager pm = context.getPackag

2022-02-17 09:56:17 2283 2

原创 如何使用signapk.jar给APK签名

  当应用的UID为system时,是不能直接在Android机器上安装的,会提示"安装失败"或者提示"应用未安装";如图:问题原因:因为系统签名不一致,需要拿到系统签名,然后给应用重新签名.问题解决:(1) 准备好签名工具signapk.jar (工具链接:)(2)拿到机器系统应用需要的签名文件.pem和.pk8.(如platform.pk8和platform.x509.pem)(3)把将要签名的应用(如 text.apk),signapk.jar,.pem和.

2022-02-15 15:57:41 3976

原创 如何修改commit中的提交人信息

如图,在Gerrit中push代码的时候,提示失败,原因是在提交的这些commit修改中,包含了作者不是自己的commit,以至于其他是自己的修改commit也不能提交。 因为我们的commit信息有可能是通过导入补丁而来的,如果生成该对策的补丁的修改对策是其他人的修改,那么commit信息中的作者就是他的,如果你直接push将会报错,那么这个时候就需要找到那条作者不是自己的commit信息。步骤:1.查询之前的commit提交记录:git rebase ...

2021-08-19 11:46:30 4476 1

原创 Android中设置color透明度百分比的参考表

在Android设置color时,可通过以下方式设置(RGB值及透明度):#1A56c8a9 解释:以上为16进制,前面两位1A为透明度,56为R值,c8为G值,a9为B值,1A换算为十进制则为1*16+10=26(A为10,B为11,C为12,D为13,E为14,F为15),最大值为FF,换为十进制则为15*16+15=255,对于RGB值,数值越大,颜色越浅;对于透明度,数值越大,透明度越小。例如透明度为1A,即为十进制的26,则透明度为26/255约=0.1019...

2021-07-29 20:11:41 1263 1

原创 Android如何实现全局的护眼模式

最近接到一个需求,是 一个做护眼模式的需求,且要求是在Android全局,即在任何场景都可使用,思考了会和查阅资料,考虑到其实可以用一个淡黄色的透明遮罩盖在上面的方法。要求这个遮罩不影响其下面的应用等正常的使用。 如果直接在应用中开启一个蒙层activity,那么退出这个activity或者关闭应用,护眼模式就会被关闭,显然这是不符合我们的要求的,所以我们可以开启一个服务,然后在这个服务中添加这个遮罩。即可实现我们的所有全局操作都在护眼模式之下了。以下是开启...

2021-07-27 11:47:56 1965 2

原创 Android中如何判断是否正在播放视频

在AudioManager中有一个isMusicActive()方法,该方法可用来判断当前是否在播放音乐或者视频。/** * 判断是否在播放音乐或者视频 * @param context * @return */private boolean isMusicOrVideoPlay(Context context){ AudioManager audioManager = (AudioManager) context.getSystemService(AUDIO_SER...

2021-07-19 19:06:20 3531 4

原创 Android编译出现FAILED: setup-jack-server问题的解决办法

在编译Android的时候出现了如下错误:[ 28% 1127/3932] Ensuring Jack server is installed and startedFAILED: setup-jack-server图:原因:jack在编译的时候,可能出现多个人在同时编译的情况,这个时候就有可能出现两个人用同一个端口,发生端口冲突以至于超时。解决办法:修改端口号(修改 .jack-settings和.jack-server/config.properties文件)...

2021-07-09 14:39:33 2939 4

原创 将drawable对象转为json遇到的坑

如图 要持久化存储一个对象,需要先将对象转化为字节流,我使用的是谷歌的gson,如图对含有Drawable的实体对象转string时,会,在转化的时候报了转化异常,需要先将drawable转化为string类型,然后在main方法中使用gson转化第17行报错:实际上是...

2021-07-07 10:12:17 445 2

原创 如何在源码编译中给应用添加第三方jar包

如果我们在Androidstudio中使用第三方jar包,只需要在gradle文件中添加依赖,例如:implementation 'com.github.ybq:Android-SpinKit:1.2.0' 但是我们有很多在系统中的应用,用到了很多系统库,不能够直接在Androidstudio中编译,需要在系统环境中编译,这些应用从源码中导出来的也是没有gradle文件的,所以不能直接添加依赖,需要配置应用的Android.mk文件。操作步骤: ...

2021-06-29 11:38:55 515

原创 “Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:”的解决方法

Android studio升级到最新版本之后出现 “Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:”的报错提示:如下图:解决方法: 将 “File – Project Structure – Project”路径下的Gradle version改为最新版本:步骤如下:1)点击左上角的File-->Proje...

2021-04-21 10:45:28 52711 6

原创 java中==和equals区别

java中的 “==” 、“equals” 以及 hashCode都能起到比较的作用,那么它们的区别又是什么呢?一、操作符 == 如果是比较基本类型,如int,long等,它们的比较就是“值”的比较;如果是比较对象实例,那么比较的是它们两个所指向的对象在内存中的存储地址是否是一致的。而不是比较它们的内容。、1.对基本类型使用操作符 ==int类型的比较例子如下: int x = 1; int y = 1; Sy...

2021-04-08 09:28:10 126

原创 JAVA中所指的三大特性,原子性、可见性、重排序到底指的是什么?

一、原子性 所谓原子性既是指操作是单一不可分割的。举个例子:(1)int i = 0;(2)i = i + 1; 对语句(2)," i = i + 1" 就不是原子性操作。因为" i = i + 1" 实际上可以分解为3个操作:(1)读取变量 i 的当前值;(2)使当前值 i 和1做加法运算;(3)将加完后的值赋给 i 变量。 在多线程环境中,非原子操作可能会受其他线程的干扰。比如,上述例子如果没有对语句(2)的代码进行同步(Synchr...

2021-03-07 17:45:06 546 1

原创 Java中单例模式不同写法详解(包含懒汉式、饿汉模式、双重检查模式、静态内部类)

前言: 在Java,单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在全局某个类只有一个实例存在。它适用于一个类的实例需要重复被利用,使用单例即可避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间。一些管理器和控制器常被设计成单例模式。常用的单例模式写法有以下几种:饿汉模式、懒汉式、双重检查模式、静态内部类等。一、 饿汉模式public class SingletonA{ private sta...

2021-02-25 10:48:54 218 1

原创 ArrayList、LinkedList、CopyOnWriteArrayList和Vector的区别详解

一. ArrayArray(数组)是基于索引(index)的数据结构,且它占用的内存空间是连续的,所以搜索和读取数据时使用索引在数组中是很快的。 Array获取数据的时候非常快,直接通过索引找到数据,时间复杂度是O(1);但是要删除数据却是开销很大,因为删除数据后需要把后面剩下的所有数据前移。注意:数组初始化必须指定初始化的长度, 否则报错。eg: int[] x = new int[];//报错,没有初始化长度 int[] x = new int[5];/...

2021-02-23 15:02:46 695

原创 调试应用时提示错误,你的主机中止了一个已建立的连接的解决方法

使用adb调试应用的时候,有时会出现 “ 你的主机中止了一个已建立的连接 ”的问题。问题截图如下:原因: 可能是连接的网络有所干扰。解决方法: 1.如果是用的手提电脑且连接了wifi热点,则将WiFi断开,可暂时调至飞行模式。如图: 此时的wifi是断开的,这个时候可以尝试继续调试安装应用。2.如果连接的是有线网络,即是插了网线,那么可以将网线拔了,断开网络后重新尝试调试安装应用...

2021-02-22 14:46:00 1624

原创 通用adb的默认路径在哪里?

安装了Android 的SDK后,会带有默认的adb工具,可用于普通的Android真机调试,那么这个adb的默认路径一般是:C:\Users\你的电脑用户名\AppData\Local\Android\Sdk\platform-tools 如图显示位置: 使用通用adb进行调试的步骤:一、全选路径如图:二、输入cmd如图:三、点击回车键如图,会弹出命令窗口,此时即可输入adb命令了...

2021-02-22 09:34:44 27023

原创 HashMap 及 ConcurrentHashMap原理详解

一.HashMap 的工作原理1.hashing的概念 Hashing(散列法)是一种将字符组成的字符串转换为固定长度的数值的方法,称为散列法,也叫哈希法。2.HashMap 内部结构 代码结构: 由上图可以看出,HashMap是数组和链表结合组成的复合结构,数组被分为一个个桶(bucket),每个桶可存储一个或多个Entry对象,在HashMap 中Node实现了Entry接口方法,每个Node对象包含四部分,分...

2021-02-20 17:55:52 1810 1

原创 理解java的异常分类及其处理,看这一篇文章就够了

前言: 异常是指程序的指令没有被正常执行的情况,这些情况会让程序异常退出,在Java中有两种类别的异常:Error和Exception。Error和Exception都是继承于Throwable类。一.Error Error 类对象由 Java 虚拟机生成并抛出,不可捕捉,程序本身不能处理。这种情况下会导致程序异常崩溃,如下图的Error继承结构可看出,Error下会有许多子类。例如较常见的Error异常StackOverflowError(某个线...

2021-02-08 11:41:59 438 3

原创 String、StringBuffer以及StringBuilder的区别。

在java中,我们经常使用字符串类型,那么我们所见到的String、StringBuffer、StringBuilder的区别到底是什么呢?先看以下整理的区别表格: String StringBuffer StringBuilder 是否可变 不可变,String 是 final 类,不能被继承。对于已经存在的 Stirng 对象,修改它的值,就是重新创建一个对象。 可变,使用 append() 方法修改 Stringbuffer 的值,修改...

2021-02-04 16:20:31 178 1

原创 java中的静态方法的讲解

静态方法定义: 在类中使用static修饰的方法。 说明: 使用static修饰的静态方法会在类定义的时候被装载到内存中;而非静态方法是属于具体实例化的对象的,只有当持有该方法的类的对象被创建的时候,该方法就会被加载到该对象所在内存。 注意: 非静态方法既可以访问静态数据成员和方法又可以访问非静态数据成员和方法; 而静态方法只能访问静态数据成员和方法。原因: 静态方法和静态数据成员会随着类的定义而被分配和...

2021-02-03 10:23:27 2065

原创 java中的垃圾回收(GC)机制

前言: 垃圾回收机制是Java语言中一个非常重要的机制,在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这些由JVM来处理。那么在java中什么是垃圾?什么是垃圾回收?如何回收?接下来我们一一探讨。一.什么是垃圾 在Java中,如果一个对象没有被其他对象所引用,那么该对象就会被认为是无用的,就被称为 “ 垃圾 ”。二.什么是垃圾回收 在以上提到“垃圾”的概念,回收其所占用的内存空间,就叫做 “ 垃圾回收 ”。三.如...

2021-02-02 17:36:42 254 1

原创 用Android studio 开发flutter项目时用夜神模拟器发现无法连接的解决办法

使用Android Studio开发Flutter项目,虚拟机使用的第三发的Android虚拟机,我这里使用的是夜神模拟器:但是Android studio如下不能自动查找到这个虚拟机。如图所示 : 一直在显示Loading的状态。原因: 可能是因为Android studio中的adb工具和夜神模拟器中的adb版本不一致解决方法:1. cmd进入到adb工具目录下输入adb version 查看adb版本2. cmd进...

2021-01-29 18:05:24 636 1

原创 testview使用setText的时候出现android.content.res.Resources$NotFoundException: String resource ID #0x3c报错

Android 开发时使用testview的setText时候出现了以下报错:Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x3c原因: setText()中传入的参数为int类型。解决办法: 使用String.valueOf ( )将int类型的参数转化为String类型。...

2021-01-28 16:48:29 457 1

原创 Android Studio中gradle一栏中出现nothing to show 提示的解决方法

今天在准备构建应用版本的时候,点击gradle,但在这一栏中没有编译选项,而是如下图,显示 “ nothing to show ”的提示:使用了几个方法都不奏效,最后直接关掉项目然后重新打开,gradle就正常显示了...

2021-01-25 15:03:04 1394 1

原创 android 开发注册蓝牙广播BluetoothDevice.ACTION_FOUND查找周围设备,没有接收到发现广播的解决方法

我需要开发一个发现附近蓝牙设备的需求,然而注册了BluetoothDevice.ACTION_FIND广播之后且开启了一个蓝牙设备,但却接收不到这个广播,经过查询和搜索了资料发现,在Android 6之后需要在配置文件添加两个新的权限,且在代码里需要动态请求权限: 步骤如下:1.在Manifest配置文件中添加以下两个权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>...

2021-01-11 16:07:49 2543 4

原创 adb命令发送广播的方法

在Android开发的时候,广播组件是经常被我们使用到的,当我们自定义一个广播接收者,或者注册好了一个系统广播,是需要测试是否能正常接收到广播的。例如有这么一个需求: 设备在完成开机之后,需要弹出一个开机完成的小提示。那么我们就需要监听开机广播,在收到 " android.intent.action.BOOT_COMPLETED "开机广播之后,在开机广播接收方法里完成弹窗操作。 如果没有使用adb广播发送广播测试,以前我们可能会手动去开关机,这样费时又费力。其实...

2021-01-11 14:45:43 15551

原创 Android 使用AudioRecord时出现java.lang.UnsupportedOperationException: Cannot create AudioRecord问题解决方法

使用AudioRecord创建对象的时候出现了以下报错: java.lang.UnsupportedOperationException: Cannot create AudioRecord原因:可能是Android设备录音权限没有开放所导致。解决方法:1.在AndroidManifest.xml文件中添加以下录音权限<uses-permission android:name="android.permission.RECORD_AUDIO" />...

2020-12-24 15:07:47 1085

原创 Android使用ListView中给控件设置了“android:clickable=“false“属性,Item点击依然没有回调

使用ListView开发列表的时候,使用mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {}方法后点击没有回调点击事件;原因:Item列表项中有可点击控件获取了焦点,优先获取了点击处理权;解决方法:1.给列表项里面的控件添加以下属性android:focusableInTouchMode="false"android:clickable="false"an...

2020-12-06 21:50:50 1400 3

Android应用系统签名工具

Android应用系统签名工具

2022-03-03

签名工具signapk.jar

签名工具signapk.jar

2022-02-15

MD5Utils.java

Java中的MD5加密工具类

2021-02-22

通用adb调试工具下载

通用adb调试工具

2021-02-22

FileUtils.java

Android读文件和写文件的工具类

2021-02-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除