hauler~
码龄14年
关注
提问 私信
  • 博客:107,789
    社区:1
    107,790
    总访问量
  • 25
    原创
  • 2,147,316
    排名
  • 25
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2010-07-30
博客简介:

gjd1988的专栏

查看详细资料
  • 原力等级
    成就
    当前等级
    2
    当前总分
    100
    当月
    1
个人成就
  • 获得47次点赞
  • 内容获得45次评论
  • 获得170次收藏
  • 代码片获得104次分享
创作历程
  • 2篇
    2023年
  • 1篇
    2021年
  • 1篇
    2020年
  • 11篇
    2019年
  • 11篇
    2018年
成就勋章
TA的专栏
  • 踩坑记录
    1篇
  • 隐私权限
    1篇
  • xposed
    1篇
  • APM
  • Glide
    4篇
  • Android
    17篇
  • 笔记
    11篇
  • 工具
    1篇
  • Http
    3篇
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 移动开发
    kotlinflutterandroid studio
  • 软件工程
    性能优化
  • 学习和成长
    面试
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

174人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Android APK未签名提醒

最近新建了一个项目,在build.gradle中配置好了签名,在执行打包的时候打出的包显示已签名,但是在上传市场的时候提示未签名。于是排查了好久,发现在build.gradle中配置的minsdk =24,会导致不使用V1签名,于是我使用apksigner验证了一下,确实是没有使用V1签名。按道理apk设置了minsdk>=24应用市场就不需要校验V1签名,只需要校验V2即可,因为该APK根本不可能安装到仅支持V1签名的设备上。因此怀疑是应用市场在检测APK是否签名时仍然使用的是V1签名校验的方式。
原创
发布博客 2023.12.29 ·
875 阅读 ·
5 点赞 ·
0 评论 ·
10 收藏

解决Chrome 浏览器ERR_INSUFFICIENT_RESOURCES过程

Chrome 浏览器ERR_INSUFFICIENT_RESOURCES分析解决过程
原创
发布博客 2023.01.03 ·
33669 阅读 ·
14 点赞 ·
12 评论 ·
22 收藏

Android隐私合规检测方法

背景:公司的APP被工信部通报:1.在用户确认隐私权限以前会获取用户的mac地址。2.在app内频繁的获取定位,超过了场景也必须的频次。排查过程收到通报我们一脸懵逼,我们排查业务代码中没有获取mac地址,并且我们的定位sdk只定位一次,于是想到了可能是三方sdk在获取mac地址。于是我们电话工信部下的全国APP技术检测平台咨询到他们是通过getHardwareAddress方法的调用来检测MAC地址的获取。至于第2条没有给出确切的回复,他们说可能是接口里频繁的带有用户位置信息,超出了..
原创
发布博客 2021.02.02 ·
14832 阅读 ·
7 点赞 ·
28 评论 ·
48 收藏

java.lang.SecurityException: Failed to find provider null for user 0

当我们在 8.0以上 系统调用 ContentResolver 的 notifyChange 方法通知数据更新,或者调用 ContentResolver 的 registerContentObserver 方法监听数据变化时,会出现异常:java.lang.SecurityException: Failed to find provider null for user 0; expected to...
原创
发布博客 2020.02.10 ·
2248 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Glide原理之Engine#load

Engine类是Glide框架加载图片的入口。接下来我们分析load的过程。1. Engine#loadpublic <R> LoadStatus load( GlideContext glideContext, Object model, Key signature, int width, int height,...
原创
发布博客 2019.09.03 ·
1099 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Glide原理之into过程

由于into过程篇幅过长,不利于阅读,因此把Engine#load过程单独拆出来分析。1.RequestBuilder#into /** * Sets the {@link ImageView} the resource will be loaded into, cancels any existing loads into * the view, and frees an...
原创
发布博客 2019.08.27 ·
1567 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Glide原理之load过程

上文我们了解到Glide#with方法返回的是RequstManager对象,因此,load方法调用的是RequstManager.load方法。1. RequstManager#load /** * 先调用asDrawable然后调用RequestBuilder#load(String) * @return A new request builder for loadin...
原创
发布博客 2019.08.27 ·
844 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Glide原理之with过程

本文基于Glide4.9.0版本讲解。Glide目前是Android开发中主流的图片加载框架。有必要花时间研究一下它的实现原理。因此,从本文开始将对Glide主要流程进行分析,由于Glide的加载链条比较长,便于理解我们分开分析,先分析Glide.with过程。1.Glide.with(FragmentActivity)/** * 根据FragmentActivity获...
原创
发布博客 2019.08.26 ·
2065 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Activity.onWindowFocusChanged首次执行过程源码分析

触发onWindowFocusChanged的情况有多种,比如应用前后台来回切换、软键盘弹出或者隐藏、首次进入一个Activity后会在onResume方法之后调用等,我们以最后一种场景,分析它的执行过程。我们以ActivityThread.handleResumeActivity()方法作为切入点开始分析。public final class ActivityThread extend...
原创
发布博客 2019.08.13 ·
3094 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

Okhttp3源码分析

目录一.Interceptors1.RetryAndFollowUpInterceptor2.BridgeInterceptor3.CacheInterceptor4.ConnectInterceptor5.CallServerInterceptor二.StreamAllocation1.newStream()2.findHealthyConnection...
原创
发布博客 2019.05.15 ·
2331 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux常用命令

目录1、ls命令2、cd命令3、pwd命令4、mkdir命令5、rm命令6、rmdir命令7、mv命令8、cp命令9、cat命令10、more命令11、less命令12、head命令13、tail命令14、which命令15、whereis命令16、locate命令17、find命令18、chmod命令19、tar命...
原创
发布博客 2019.04.12 ·
494 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

TCP报文格式

TCP虽然是面向字节流的,但TCP传送的数据大暖却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中个字段的作用。TCP报文首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数)。因此报文首部的最小长度是20字节。源端口和目的端口,各占2个字节,分别写入源端口号和目的端口号。 序号,占4个字节,本段报文所发送的数据的第一个字节的序...
原创
发布博客 2019.04.03 ·
884 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

TCP连接和释放过程

TCP报文格式参考这篇博客一、TCP连接TCP建立连接的过程叫做握手,握手需要在客户端和服务器之间交换三个TCP报文段来完成,这就是TCP三次握手。1.A主机向B发送连接请求报文段,这是首部中的同部位SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但是需要消耗掉一个序号。A主机进入SYN-SENT(同步已发送)状态。...
原创
发布博客 2019.04.03 ·
19960 阅读 ·
13 点赞 ·
0 评论 ·
73 收藏

Bitmap.Compress的变化

android 8.0以上,Bitmap中的方法添加了StrictMode.noteSlowCall方法, public boolean compress(CompressFormat format, int quality, OutputStream stream) { checkRecycled("Can't compress a recycled bitmap")...
原创
发布博客 2019.02.13 ·
1131 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Android P org.apache.http.legacy.jar 找不到

从Android P开始,org.apache.http.legacy 库将从 bootclasspath 中删除。Remove org.apache.http.legacy from bootclasspath也就是进程启动时压根不会去加载这个jar,当你代码中使用到这个库中的类会抛出java.lang.ClassNotFoundException: Didn't find class ...
原创
发布博客 2019.01.14 ·
5261 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

Android权限

Android 中有上百种权限,现在将所有的权限归为两类:普通权限和危险权限。普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统会自动帮我们进行授权不需要手动操作。危险权限则表示那些可能会触及到用户安全隐私或者对设备安全造成影响的权限,如获取手机联系人信息等权限,权限必须有用户授权才可以,否则程序无法使用相应的功能。下面列出 Android 中所有的危险权限,一共是9组24...
原创
发布博客 2018.12.13 ·
439 阅读 ·
0 点赞 ·
3 评论 ·
0 收藏

解决ViewPager FragmentPagerAdapter不刷新问题

ViewPager+FragmentPagerAdapter使用时发现notifyDataSetChanged()方法不起作用,查看FragmentPagerAdapter源码发现中FragmentPagerAdapter中的Fragment是从FragmentManager中根据tag取的。如果FragmentManager中有相应的Fragment就会复用。也就导致了ViewPager不刷...
原创
发布博客 2018.11.12 ·
2241 阅读 ·
2 点赞 ·
0 评论 ·
1 收藏

强制清除 gradle 依赖缓存

Windows: gradlew build --refresh-dependencies  Mac: ./gradlew build --refresh-dependencies 
原创
发布博客 2018.09.22 ·
2295 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

解决支持库版本兼容问题:all com.android.support libraries must use the exact same version specification

如果引用的第三方库的支持库版本低于(或者不一致)app build.gradle中的支持库版本,可能会出现如下问题:all com.android.support libraries must use the exact same version specification(mixing versions can lead to runtime crashes)如下图所示:去...
转载
发布博客 2018.04.18 ·
713 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Charles高级用法

一、网速模拟点击菜单“Proxy→ Throtte Setting”打开网速模拟配置窗口。配置含义:Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(字节)二、Map功能Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Ma...
原创
发布博客 2018.03.06 ·
2461 阅读 ·
1 点赞 ·
0 评论 ·
7 收藏
加载更多