自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 资源 (4)
  • 收藏
  • 关注

原创 23种设计模式思想

变化当中有稳定的部分才会引入设计模式0.简单工厂模式:这其实不算是设计模式,只是一种编码习惯。相当于if..else.. switch..case..比如做一个计算器时,type == “+”那么执行两个变量相加。type == “-”执行两个变量相减意图:通过一个方法,一个参数,执行不同的逻辑1.工厂方法模式:比如:公司新来俩程序员一个搞android的,一个搞ios的,第一天。老板叫你俩赶紧把环境配好。所有程序员都有(都实现了)配环境的这个技能(这个就可以抽象出来一个接口

2022-05-08 23:00:10 576

转载 Android 10 11 分区存储适配

Android10是分区存储的过度版本,不建议开启分区存储。我们可以android:requestLegacyExternalStorage="true"来关闭Andorid10的分区存储。<application android:requestLegacyExternalStorage="true"></application>ANDROID11适配Android11分区存储强制开启,分区存储开启后,存在两个问题 一个是比如文件管理器咋搞,二是应用的原来的文

2022-01-08 18:04:03 1082

原创 Android 5 - 9主要更新

Android5.0(ART虚拟机)不需要适配Android6.0(动态权限)1.动态权限适配:对于危险权限,需要在使用之前,弹窗获取权限,(xxpermisiton,rxpermission等)权限适配三连问Q: 是否 Android 6.0 所有权限都需要动态申请?A: 不是。只有属于危险权限的才需要申请。Q: 危险权限有哪些?A: 见下面“危险权限分组说明”Q: 危险权限是否需要一个一个申请?A: 在 Android 6.0 ~ Android 8.0,不需要。如果

2022-01-08 16:16:16 1462 1

原创 Android内存优化

内存优化就是从下面几点入手一、解决内存泄漏0.内存泄漏主要是activity,等context泄漏,再销毁后依然有其他对象持有context的引用,导致无法回收1.内存泄漏检测工具LeakCanary(原理是hook activity声明周期,在ondestroy后开启线程检测引用,过一段时间gc,gc后如果还存在引用就说明内存泄漏了)2.单例导致内存泄漏(尽量使用context.getApplicationContext 或者适当时候回收context)...

2022-01-08 14:44:36 1028

原创 Kotlin Mvp 协程 Retrofit整合

附MVP模板生成器1.BaseModuleActivity处理loading相关逻辑2.BaseModuleModel提供mRepositoryManager处理网络请求3.BaseMoulePresenter提供一个绑定当前界面生命周期的CoroutineScope保证在当前界面安全的使用协程生成代码步骤:1.选择包名目录2.右键New->Activity->Arms 全家桶 插件版 - 原始版Kotlin一键生成MVP模板...

2021-12-21 17:30:58 1225

原创 android 让你爱上写dialog

感觉每次写dialog都很痛苦,虽然能写出来,但每次都要新建一个dialog类,写里面的布局,写里面的逻辑,总感觉很麻烦。方案核心就是让你只关注布局和以及各种界面上的操作,dialog本身不处理任何view和数据更多关于dialog的设置,可以自行扩展Java和Kotlin版本功能一样Java版本:使用: EasyDialog dialog; private void useDialog() { dialog = new Easy.

2021-12-07 13:42:04 1716

原创 Android 获取其他APK 的jar包

不是所有的jar包都是开源的,有时候遇到商业版就可以试试。获取dex之后1.获取dex文件,获取之后可以根据需要修改dex文件2.dex2jar3.解开jar jar xf old.jar4.确定jar包需要的全部的类 并复制另一个同名文件夹,5.再编译需要的文件夹 为 jar jar cf newJar.jarsourceDir6.添加使用jar,复制需要的so库其实难点只在于获取dex,这个该花钱花钱,市面脱修都挺贵1000以上了。有低价的下面留言。。...

2021-11-18 01:03:52 1798

原创 Android应用的PathClassLoader起源API 29

1.classloader基本概念1.所有Android系统自身的类都是由BootClassLoader加载的2.自己写的apk是由PathClassLoader来加载的3.常说的插件化,热修复 都是基于dexclassloader或者pathclassloader实现的2.PathClassLoaderAndroid系统启动流程一篇里说过启动过程中会创建第一个PathClassLoader那个classloader与这篇文章讨论的不一样ClassLoader解析(二):Andr

2021-11-16 22:06:15 2738

原创 Android js交互这一篇就够

完整代码:TestJs: android js交互sample1.Android调用JSa.不需要获取返回值java:webView.loadUrl("javascript:add(1 , 3)");js: function add(p1 , p2) { var r = p1 + p2; alert(r); }webView.setWebChromeClient(new WebChromeClie

2021-11-01 14:40:21 1866

转载 springBoot中对于model层、dao层、service层、controller层的理解

springBoot作为一个轻量级的java开发框架,在许多的方面提出了相应的解决方案。一般来说基于springBoot的项目基本分为以下几个层次(在项目文件夹中体现为一个层次对应一个package)Dao层(mapper层) service层(业务层) model层(entity层) controller层(控制层)各层的作用Dao 层即数据持久层,对数据做持久化操作。也被称为mapper层。dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。Ser

2021-10-11 23:31:58 1543

原创 分析APP的安装流程 API29

先总结一下安装流程,以及比较重要的类PackageInstallerActivity.java:在文件管理器里点击apk后就会调用该类,主要用于显示要安装的apk的一些权限信息。InstallAppProgress.java:当看完所有权限后,点安装后就会调用该类,用于显示安装进度,这时候PackageManagerService就在默默的安装应用。ApplicationPackageManager.java:这是类是PackageMa...

2021-09-28 23:46:23 964

原创 分析 Android 系统启动流程

1.启动电源以及系统启动当电源按下时引导芯片代码开始从预定义的地方(固化在ROM)开始执行。加载引导程序Bootloader到RAM,然后执行。2.引导程序BootLoader引导程序BootLoader是在Android操作系统开始运行前的一个小程序,它的主要作用是把系统OS拉起来并运行。3.Linux内核启动内核启动时,设置缓存、被保护存储器、计划列表、加载驱动。当内核完成系统设置,它首先在系统文件中寻找init.rc文件,并启动ini...

2021-09-26 21:49:26 81

原创 热修复比较

热修复框架种类和对比1.资源修复有2种方案a.instantRun方案丶通过反射创建一个新的assetManager丶通过反射调用addAssetPath方法加载外部的资源丶通过反射修复每一个activity的Resource中的mAssets字段(所有引用到地方都改)b.SoPhix方案这个是 Sophix 采用的方案,原理是构造一个 package id 为 0x66 的资源包,只含有改变的资源,将其直接添加到原有的 AssetManager 中,这样不会与原来的

2021-04-14 14:30:26 179

转载 Android 热修复原理

转https://zhuanlan.zhihu.com/p/75465215预备知识了解 android 基本开发 了解 ClassLoader 相关知识看完本文可以达到什么程度了解插件化常见的实现原理阅读前准备工作cloneCommonTec项目,其中 hotfix 和 patch 是热修复代码 示例代码基于 AndFix,NuWa,Robust 进行了调整,抽取主要部分用来讲解原理。文章概览一、热修复和插件化插件化和热修复的原理,都是动态加载 dex/apk 中...

2021-04-13 21:47:42 147

原创 Android的classloader

先做一个demo,代码如下public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.v("wanbai"

2021-04-13 00:03:33 1719

原创 Android安全防护实用办法

最近一直做安全方面的业务,有一些理解总结一下安全防护的有效方式1.混淆 ★★★★★最有用的方式之一,必须要做,a.注意配置字典,最好不要用特殊字符,jadx反混淆之后,特殊字符会很被改写,最好是oO0这个字典,github有很多,b.形参混淆,局部变量混淆,这些东西默认是不会被混淆的,需要人工来做2.加固 ★★★免费的加固,基本上不管您是哪一家,都是白给,脱壳和加壳的技术一直是在对抗发展,但是免费的壳,用处十分有限,现在的youpk方案脱壳机,对于免费壳都是一键...

2021-01-11 18:30:00 1074

原创 学习一下Context

这个图镇的住吧Context是抽象类,2个子类,ContextImp和ContextWrapper。具体干活的流程是,ContextWrapper指派ContextImp去干,直接mBase.xxx();Context里面的mBase就是ComtexImpl的实例化对象。所以在Activity中,或者application,service中调用getBaseContext都是获取的是他们的ContextImpl对象。1.以appilication为例子a.ActivityTh..

2021-01-11 14:20:50 431 6

原创 Android 录制以及播放wav

不好找,我总结了一下代码如下录制类:开始AudioRecordManager.getInstance().startRecord(wavFilePath , pcmFilePath);停止AudioRecordManager.getInstance().stopRecord();package cn.amao.cleanhome.mvp.ui.activity;import android.media.AudioAttributes;import android.medi

2020-05-21 16:33:45 4129

原创 百度高德地图比较

很久之前一直用的百度地图,那个时候百度地图还可以。高德也还没咋流行起来。前两天有个app有需要地图的东西,百度地图研究了半天,api,开发包乱的一笔。顺手打开高德api一看,所有api清清楚楚。就一个jar包2个so解决常规的应用的地图需求百度地图gun犊子吧高德他不香么...

2020-05-03 13:07:36 463

原创 Android 如何保证token安全性

1.首先显示的‘token’最好设计成一直变化的,2.防止token被盗后改参数3.https加密链接防止直接抓包1.2总结为下图:实际上token一直没有变,只是显示的‘token’在变化a.首先对参数加密b.参数加密的结果对token加密...

2020-04-16 02:26:27 1191 2

原创 d2j-dex2jar classes.dex报错

执行上述操作时报Detail Error Information in File .\classes-error.zipPlease report this file to http://code.google.com/p/dex2jar/issues/entry if possible.打开error.zip发现都报这个错误:java.lang.RuntimeException: can...

2019-07-02 17:18:49 6639 7

原创 greendao使用详解

1.首先学简单的配置https://www.jianshu.com/p/ec37ea99ef69,https://www.jianshu.com/p/53083f782ea22.简单的增删改查https://www.jianshu.com/p/53083f782ea23.稍复杂的查QueryBuilder很重要1.且查询(下面例子查username == xxx且use...

2019-03-27 18:07:24 1224

原创 Android Studio 项目External Libraries的jar包丢失导致的编译出错问题

主要是针对 support v7 或者v4版本如果你曾经在产生冲突的时候手动删除过v7,v4下的jar包现在想依赖某个版本的v7,或者v4.老是依赖不上去。重装studio!删除所有的缓存文件,除了sdk文件经验:不要手动删除exteneal libraries中的jar包,手动调整gradle中的依赖文件,手动调整正确了,就不会冲突了。...

2019-03-27 17:54:36 991

原创 android打开library或aar中activity的问题

打开library或者aar中的activity时可能会遇到各种问题。先科普一下。1.一般情况下,library或者aar中的Mainifest会自动合并到app的manifest中所以一般不用自己去app的manifest中注册。2.启动activity的方式也不用去用什么隐式启动,setclassName().setConpentXXX等等这些,就普通的startActiv...

2019-03-06 14:16:28 6289

原创 Dex分包Android-Easy-MultiDex、规则

Android-Easy-MultiDex是基于DexKnifePlugin建议先熟悉一下这2个东西分包总共有2个地方,可以配置一个app的build.gradle、一个是dexknife.txt一、在build.gradle的android{}插入这段代码,表示计算这几个activity的依赖,并加入maindexlist中/需要加入主dex的Activity列表 de...

2019-03-06 11:22:16 393

原创 Android自动化测试Appium

框架选择主流的自动化测试框架官方的是Instrumentation,主流的是appium、Robotium(阿里移动测试是需要这2种脚本)环境搭建需要以下几个东西1.jre1.8(配置环境变量)2.android SDK 8.0以下(配置环境变量tools,platform-tools)3.node.js(环境变量)4.appiumForWindows (环境变量-...

2019-02-15 15:30:48 274 1

原创 App在后台被杀死后重启-重进首页方法

感谢这位哥的思路。这个问题很常见,基本所有app都会遇到这个问题。但是很多开发者都没有处理。问题的起因:我的app在进入后台后一段时间,可能被系统干掉了,然后通过多任务键,或者图标再点进去操作,出现xxId为null经过一番探索发现:app在被系统干掉后,重新进入,是会实例出所有的界面(因为他们都重写了onsaveInstance方法),但是这个界面所有的变量都变为null了(如果...

2018-12-26 17:26:00 7914

原创 判断2个list中是否有相同的数据(相交)Collections.disjoint

群里一个老哥的问题:请教一个问题,两个List,一个是服务端数据,一个是本地数据,如何判断本地数据中没有包含服务端的数据,因为每次请求服务器,服务端返回的List是一个新的内存地址,所以本地List.contains()方法无效,我应该怎么比对----这是很常见的问题有人回答重写实体类,equals方法,有人回答挨个取出来对比。有人提到 Collections.disjoint方法,...

2018-12-19 11:54:36 27141 7

转载 Android技能树 — LayoutInflater Factory小结

原文前言很久没写文章了,所以打算水一篇文章,毕竟这方面知识的文章有很多很多。前段时间流行起来了突然不愿意写Shape,Selector文件的文章,然后各种方案,编写自定义View等。那时候大家应该都看到了一篇:无需自定义View,彻底解放shape,selector吧。我发现这个想法挺好的,所以今天就一步步来讲解下跟这个方案有关的相关基础知识点,看完后大家基本就会懂了,然后可以自己编写...

2018-11-21 10:23:07 185 1

转载 Android 刘海屏适配

转载:原文链接一、简介随着 Apple 发布 iPhone X 之后,各大手机厂商也开始模仿这种刘海屏的设计,而且刘海屏手机的用户也是越来越大,前段时间将项目进行了所有主流厂商的刘海屏手机的适配,以便让刘海屏手机的用户也能有更好的体验。二、刘海屏造成的 UI 显示问题刘海屏手机因为比平常的手机多了一块顶部的遮挡性刘海,所以会造成顶部 Toolbar 以及搜索框的遮挡,而且有些厂商的...

2018-10-09 10:04:11 658

原创 Android全面屏适配(非刘海适配)

全面屏的意思是纵横比大于16:9的手机,不适配的话上下会留有空间,显示黑条。影响视觉体验。适配全面屏需改3个地方1.声明屏幕最大纵横比:# 设置最大高宽比为 2.1&lt;application ...&gt; &lt;meta-data android:name="android.max_aspect" ...

2018-10-08 15:06:51 429

原创 Android 8.0 适配

Android 8.0  Android O Api 26感谢这几位大佬:考拉8.0适配、皮球二二、8.0广播解决方案、8.0后台执行限制、8.0适配指北8.0适配主要是以下7个方面:1.自适应启动图标,让app支持圆形图标参考这里就够了郭霖的专栏2.动态权限申请例子:比如你申请了读sd卡权限,在8.0以前,你还可以写sd卡。            但是在8.0之后,你...

2018-10-08 14:13:54 295

原创 Android 7.0 适配

首先android 7.0  Android N Api241.最重要的,文件访问权限的更改,要求我们在应用间共享文件这一块,必须做适配。否则会异常适配办法就是使用FileProvider:第一步:在mainifest清单文件中注册provider&lt;provider android:name="android.support.v4.content.FileProvi...

2018-10-08 10:28:25 123

原创 Android 6.0 适配

首先知道 android6.0 、Marshmallow 、Api23需要适配以下几个地方。1.最重要的,肯定是动态权限的申请(可以用框架嘛)2.不重要的,sdk中移除了httpclient,推荐HttpUrlConnection(用xutils,okhttp不受影响)3.通知部分,移除了Notification.setLatestEventInfo()方法。用Notificati...

2018-10-08 09:57:41 188

原创 Android根据经纬度获取位置信息

Android内部是支持这个操作的,不需要借助任何的第三方工具主要就是Geocoder这个类。 下面是工具类全部代码。import android.content.Context;import android.location.Address;import android.location.Geocoder;import android.util.Log;import a...

2018-09-07 17:04:50 6928 7

转载 关于Binder,作为应用开发者你需要知道的全部

转自https://www.jianshu.com/p/062a6e4f5cbe结合自身本身对Binder的理解,可以总结为2.4Binder的理解其实就是理解Client、server、Binder、ServiceManager之间的关系 为什么要理解Binder?一般Android应用开发很少直接用到跨进程信通信(IPC),但如果你想知道:App是如何启动并初始化的...

2018-08-09 10:56:36 319

转载 android开发必备-Android学习网站

原文http://www.qdaily.com/articles/35398.html上不去的网址:http://developer.android.com/reference替换成这样子:http://developer.android.google.cn/reference12 月 8 日,Google 在北京举办了一场规模空前的开发者活动,推出了三个不需科学上网就能访问的子站点。develo...

2018-07-06 17:23:12 3300

原创 Dagger2和MVParms的学习

代码地址:稍后Dagger2学习笔记一:/** * dagger2理解: * 1.@Inject标记的属性,表示这个属性将会被注入到当前类中---提供注入数据 * 2.@Inject标记的构造方法,表示在注入过程中将会调用这个方法来实例化 * 3.@Module标记的是类 * 4.@Module也表示---提供注入数据的模块 * 5.@Module的一般作用是提供一个 无法直接使用@I...

2018-06-15 11:07:01 1310

原创 Android热修复,热更新 ,增量更新,插件化之间的区别

感谢这位老哥:https://www.jianshu.com/p/704cac3eb13d热修复:强调的是修改线上版本的bug,用技术去实现不更新整个apk的条件下,修改掉bug。涉及到类的加载。比如可以new 一个BaseDexClassLoader动态的去加载修复apk的dex文件,再合并到正在运行PathClassLoader中(这只是其中一种思路)目前主流的热修复框架阿里And...

2018-05-29 23:05:41 8590

原创 android插件化准备,启动一个没有在Mainifest中配置的Activity

首先是跟这大哥学的https://www.jianshu.com/p/e359fafe5c29牛逼呀。这里我们先做启动当前应用里面没有在Mainifest中配置的activity。首先你需要对动态代理和activity启动流程有点了解。请看前2篇播控总结就在这里:代码:https://gitee.com/u2b/NDKTEST/tree/master/hooklaunchtt...

2018-05-29 17:45:00 379

dex-tools-2.1-SNAPSHOT.zip

基于dex2jar 2.0版本解决 can not merge I and Z

2019-07-02

系统引导工具

系统引导神器,亲测可用。装双系统启动不了其中一个?傻瓜式一件引导。一切都解决。神一样的工具。

2018-12-17

tcp、udp、socket测试

windows系统下的socket测试工具,包含tcp,udp连接方式。亲测可用。棒棒的!

2018-12-17

retrofit学习、retrofit rxjava封装、retrofit mvp rxjava

retrofit学习、retrofit rxjava封装、retrofit mvp rxjava

2016-11-15

空空如也

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

TA关注的人

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