- 博客(26)
- 资源 (19)
- 收藏
- 关注
原创 Android APK未签名提醒
最近新建了一个项目,在build.gradle中配置好了签名,在执行打包的时候打出的包显示已签名,但是在上传市场的时候提示未签名。于是排查了好久,发现在build.gradle中配置的minsdk =24,会导致不使用V1签名,于是我使用apksigner验证了一下,确实是没有使用V1签名。按道理apk设置了minsdk>=24应用市场就不需要校验V1签名,只需要校验V2即可,因为该APK根本不可能安装到仅支持V1签名的设备上。因此怀疑是应用市场在检测APK是否签名时仍然使用的是V1签名校验的方式。
2023-12-29 00:35:48
1066
原创 解决Chrome 浏览器ERR_INSUFFICIENT_RESOURCES过程
Chrome 浏览器ERR_INSUFFICIENT_RESOURCES分析解决过程
2023-01-03 18:17:12
35477
12
原创 Android隐私合规检测方法
背景:公司的APP被工信部通报:1.在用户确认隐私权限以前会获取用户的mac地址。2.在app内频繁的获取定位,超过了场景也必须的频次。排查过程收到通报我们一脸懵逼,我们排查业务代码中没有获取mac地址,并且我们的定位sdk只定位一次,于是想到了可能是三方sdk在获取mac地址。于是我们电话工信部下的全国APP技术检测平台咨询到他们是通过getHardwareAddress方法的调用来检测MAC地址的获取。至于第2条没有给出确切的回复,他们说可能是接口里频繁的带有用户位置信息,超出了..
2021-02-02 19:04:27
15271
28
原创 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 18:25:44
2363
原创 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 19:01:40
1152
原创 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 19:37:52
1642
原创 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 14:58:54
889
原创 Glide原理之with过程
本文基于Glide4.9.0版本讲解。Glide目前是Android开发中主流的图片加载框架。有必要花时间研究一下它的实现原理。因此,从本文开始将对Glide主要流程进行分析,由于Glide的加载链条比较长,便于理解我们分开分析,先分析Glide.with过程。1.Glide.with(FragmentActivity)/** * 根据FragmentActivity获...
2019-08-26 19:31:01
2155
1
原创 Activity.onWindowFocusChanged首次执行过程源码分析
触发onWindowFocusChanged的情况有多种,比如应用前后台来回切换、软键盘弹出或者隐藏、首次进入一个Activity后会在onResume方法之后调用等,我们以最后一种场景,分析它的执行过程。我们以ActivityThread.handleResumeActivity()方法作为切入点开始分析。public final class ActivityThread extend...
2019-08-13 19:45:33
3276
原创 Okhttp3源码分析
目录一.Interceptors1.RetryAndFollowUpInterceptor2.BridgeInterceptor3.CacheInterceptor4.ConnectInterceptor5.CallServerInterceptor二.StreamAllocation1.newStream()2.findHealthyConnection...
2019-05-15 18:04:17
2379
原创 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 14:52:33
552
原创 TCP报文格式
TCP虽然是面向字节流的,但TCP传送的数据大暖却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中个字段的作用。TCP报文首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数)。因此报文首部的最小长度是20字节。源端口和目的端口,各占2个字节,分别写入源端口号和目的端口号。 序号,占4个字节,本段报文所发送的数据的第一个字节的序...
2019-04-03 19:35:25
922
原创 TCP连接和释放过程
TCP报文格式参考这篇博客一、TCP连接TCP建立连接的过程叫做握手,握手需要在客户端和服务器之间交换三个TCP报文段来完成,这就是TCP三次握手。1.A主机向B发送连接请求报文段,这是首部中的同部位SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但是需要消耗掉一个序号。A主机进入SYN-SENT(同步已发送)状态。...
2019-04-03 15:59:06
20248
1
原创 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 11:53:12
1194
原创 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 21:23:31
5342
1
原创 Android权限
Android 中有上百种权限,现在将所有的权限归为两类:普通权限和危险权限。普通权限是指那些不会威胁到用户安全和隐私的权限,这部分权限系统会自动帮我们进行授权不需要手动操作。危险权限则表示那些可能会触及到用户安全隐私或者对设备安全造成影响的权限,如获取手机联系人信息等权限,权限必须有用户授权才可以,否则程序无法使用相应的功能。下面列出 Android 中所有的危险权限,一共是9组24...
2018-12-13 17:23:36
534
3
原创 解决ViewPager FragmentPagerAdapter不刷新问题
ViewPager+FragmentPagerAdapter使用时发现notifyDataSetChanged()方法不起作用,查看FragmentPagerAdapter源码发现中FragmentPagerAdapter中的Fragment是从FragmentManager中根据tag取的。如果FragmentManager中有相应的Fragment就会复用。也就导致了ViewPager不刷...
2018-11-12 14:10:08
2302
原创 强制清除 gradle 依赖缓存
Windows: gradlew build --refresh-dependencies Mac: ./gradlew build --refresh-dependencies
2018-09-22 15:48:04
2422
转载 解决支持库版本兼容问题: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 23:01:58
750
原创 Charles高级用法
一、网速模拟点击菜单“Proxy→ Throtte Setting”打开网速模拟配置窗口。配置含义:Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(字节)二、Map功能Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Ma...
2018-03-06 11:16:20
2523
原创 DNS域名解析过程
以下是DNS解析的全过程:假定域名为m.xyz.com的主机想知道另一台主机(域名 y.abc.com)的IP地址。例如,主机m.xyz.com打算发送邮件给主机y.abc.com。这时就必须知道主机y.abc.com的IP地址。下面是图a的查询步骤:主机m.xyz.com先向其本地域名服务器dns.xyz.com进行递归查询。 本地域名服务器蔡勇迭代查询。它先向一...
2018-02-27 14:49:55
1644
原创 android RelativeLayout中android:layout_marginBottom的不起作用问题
RelativeLayout布局中:1、当设置为android:layout_height="wrap_content"时,最下面的控件layout_marginBottom属性无效,如果其他控件使用layout_above让自己处于最下面的控件之上,那么layout_marginBottom属性有效。2、当设置为android:layout_height="match
2018-02-07 16:45:03
1466
原创 setBackground()版本兼容问题
在android 4.0系统中没有setBackground() 方法,所以在4.0系统手机上使用会出现异常:java.lang.NoSuchMethodError: x.x.x.setBackground所以低版本需要用setBackgroundDrawable来代替Drawable draeable = new BitmapDrawable(bitmap);
2018-02-05 11:51:58
1176
原创 Arrays.asList 转换数组后add或remove出现java.lang.UnsupportedOperationException异常
String[] array = {"a","b","c"};List<String> list = Arrays.asList(array);list.add("d");list.remove(0);add或remove时抛出java.lang.UnsupportedOperationException异常的原因是因为,Arrays.asList()方法返回的...
2018-01-31 10:44:42
1019
原创 Android Library 上传到JCenter仓库
如何创建android lib就不做描述了,废话不多说直接开始上传步骤:一、注册google邮箱,在申请个人账号的时候只有gmail邮箱才能申请成功。二、注册Bintray账号通过这个账号发布到JCenter上。注册地址官网:https://bintray.com/,但是现在这个地址默认是注册组织的,注册后会有一个月试用期。我们一般需要的是个人类型,正确的注册地址为:https://bintray...
2018-01-25 16:07:19
563
Android开发Google_map资料
2011-12-19
android 10个经典案例
2011-11-21
Android平台的相册管家
2013-03-15
自定义dialog
2012-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人