- 博客(67)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注

原创 android基于mvp的热修复方案构思,不使用第三方
本文为作者原创,转载请注明出处由来现在开发android项目大部分都已经由mvc转移到了mvp,关于mvp是什么大致也不必多说了,无非三个层: - m:model层,一般封装对数据的操作,增删改查,接口访问等等。 - v:view层,也就是视图层,视图层不主动做什么,只是根据某些事件作出对应的视图展示。 - p:Presenter层,也就是逻辑层。图解(之前在别的博文...
2018-08-01 18:16:19
467

原创 利用python分析2018智联招聘全国各个城市的职位数排名
新年快到了,工作了一年你,躺在床上,退下一身的疲怠,是否也曾向往去到一个新的城市工作和生活呢? 那中国除了公认的北上广深工作机会最多以外,还有那些城市也相对不错呢? 这时候我们可能会打开招聘网站开始选择城市然后来了解这个城市的职位情况. 那么一直秉持着人生苦短,我学python的我们,为什么不能用python来写一个分析2018全国各个城市的职位数排名的爬虫脚本呢? 这么一想十分可行
2018-01-17 14:20:03
6920

原创 Android 自定义感光器控件SolarProgressView,也可当做普通ProgressBar使用
Android 自定义感光器控件SolarProgressView,也可当做普通ProgressBar使用本文出处: 完整代码获取:https://github.com/miqt/SolarProgressView 实现效果: 实现思路:①光线强度数据的获取:Android光线传感器 ②光线强度的UI展示:自定义SolarProgressView ③光线数据源 –> UI展示需要数据的转化
2017-07-24 14:30:42
8743
3
原创 介绍一种Android 平台 不需要获取imei imsi 无权限就能获取手机运营商的方法
我们都知道 Android 会根据设备设置的不同,去加载不同的资源文件夹。最典型的,会根据系统的语言去加载不同语言的字符串资源。而 Android 也是可以根据 MCC 和 MNC 加载不同的资源的。而我们就可以利用这一点,通过创建 values-mcc460-mnc00 这种资源文件夹,然后在对应的文件夹,放置不同的运营商名称即可。
2022-10-27 16:59:39
1337
原创 这可能是最简单,精炼,有效的magisk 安装教程,附boot.img 提取方法
这可能是最简单,精炼,有效的magisk 安装教程,附boot.img 提取方法
2022-10-13 14:23:30
20149
1
原创 用控件当画笔获得bitmap代码记录
int width = 1000;int height = 1000;TextView textView = new TextView(context);Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);Canvas canvas = new Canvas(bitmap);textView.setText(“123”);textView.setBackgroundColor(Color.YELLOW
2022-06-30 18:35:19
213
原创 Android 自定义 plugin 获取依赖项
获取已解决的依赖项Collections.UnmodifiableSet set = (Collections.UnmodifiableSet) project .getConfigurations() .getByName("releaseRuntimeClasspath") .getIncoming() .getResolutionResult() .getRoot() .getDependencies()
2022-03-25 14:50:58
2968
1
原创 基于内存优化工具leakcanary结合字节码插桩技术进一步高效识别内存泄漏问题
LC是个防止内存泄漏非常好用的工具,但LC自带只支持Activity,Fragment,ViewModel,RootView,Service对象的监控,如果想监控更多的对象,我们只能调用他的接口手动添加监控,这对于使用起来还是不太方便,因此,我尝试使用字节码插桩的方式,来自动监控更多的对象。通过字节码的方式,支持以下:java.io.Closeable#close文件流SocketCursor其他继承Closeableandroid.graphics.Bitmap#recycle插桩工具
2022-02-16 10:59:56
1282
原创 支持单指滑动双指缩放的ImageView
支持单指滑动双指缩放的ImageViewimport android.content.Context;import android.graphics.Point;import android.os.Build;import android.support.annotation.Nullable;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.util.L
2021-11-17 16:47:18
533
原创 Xposed 绕过360加固获得真正的classloader
XposedHelpers.findAndHookMethod("com.stub.StubApp", loadPackageParam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() { @Override pr
2021-11-05 15:02:54
1780
原创 Android Apk 安装包 导出 神器 exe小工具分享,利用adb 命令一键导出当前前台应用
下载地址:https://github.com/miqt/PythonLearn/tree/master/apkdump/dist从手机利用adb命令导出apk的小工具 使用方法:手机打开目标应用双击exe文件,等待导出实现源码:import osimport redef run_silently(cmd: str) -> str: """返回系统命令的执行结果""" with os.popen(cmd) as fp: bf = fp._strea
2021-09-02 19:22:26
5975
原创 android 方法字节码插桩hook插件分享,全埋点,性能监控,线程,IO创建监控,一站式搞定,高可定制化,使用非常简单!
项目地址:https://github.com/miqt/android-plugin/blob/master/plugin/hook-method-plugin/readme.md这是一个 android 方法字节码插桩hook的插件,在方法进入和方法退出时,将当前运行的所有参数回调到固定的接口中,利用这一点,可以进行方法切片式开发,通过配置Hook点,达到Hook监控的目的。利用这个插件,可以实现:Android 全埋点,页面浏览,点击,等无痕埋点,按需配置Hook点即可,配置方法见下文And
2021-08-10 15:30:09
1327
6
转载 Git全局配置和单个仓库的用户名邮箱配置
Git全局配置和单个仓库的用户名邮箱配置学习git的时候, 大家刚开始使用之前都配置了一个全局的用户名和邮箱$ git config --global user.name “github’s Name”$ git config --global user.email “github@xx.com”$ git config --list如果你公司的项目是放在自建的gitlab上面, 如果你不进行配置用户名和邮箱的话, 则会使用全局的, 这个时候是错误的, 正确的做法是针对公司的项目, 在项目根目录下
2021-07-28 18:20:29
339
原创 Activity启动流程记录
android.app.Activity public void startActivityForResult(Intent intent,int requestCode,Bundle options)android.app.Instrumentation public Instrumentation.ActivityResult execStartActivity(Context who,IBinder contextThread,IBinder token,Activity target,
2021-05-13 15:25:42
192
原创 SQLite 一行SQL实现有则更新无则插入,多个条件,复杂条件
SQLite 一行SQL实现有则更新无则插入,多个条件,复杂条件例如想实现以下逻辑if (db has name ==小明 && 身高 == 170cm) update 。。。。else insert 。。。。可以参考以下SQL:CREATE TABLE [TABLE_NAME]( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [name] TEXT NOT NULL , [attr] TEXT NOT NULL ,
2020-12-14 10:58:00
4294
原创 位操作使用一个参数标记多个开关
例如一个手机,可能有以下标记位:flag = 手机属性屏幕是否破损 case1电池是否有电 case2是否有摄像头 case3是否能打电话 case4是否是苹果手机 case5是否在保修期内 case6正常大家可能使用bool类型来存储n多个参数,但也可以使用一个int或者是long来存储,在java中int占4字节每个字节占8位一共32位,也就是说能存储 32个标记为,省下32个bool值。使用位运算来操作一个int值的标记,int
2020-08-31 14:17:49
487
原创 分享一个RSA加解密工具类,公钥加密私钥解密、私钥加密公钥解密、私钥签名公钥验签、生成公钥私钥
测试: public static void main(String[] args) { try { //生成公钥私钥 Map<String, Object> map = RSAUtil.initKey(2048); String PrivateKey = RSAUtil.getPrivateKey(map); String PublicKey = RSAUtil.getPubli
2020-08-04 11:02:22
1469
1
转载 android免root运行adb高级权限命令,例如修改手机设置等(转)
免Root实现静默安装和点击任意位置0 前言最近有了个需求:免 root 实现任意位置点击和静默安装。这个做过的小伙伴应该都知道正常情况下是不可能实现的。无障碍只能实现对已知控件的点击,并不能指定坐标。但是确实有人另辟蹊径做出来了,譬如做游戏手柄的飞智,他们是用一个激活器,手机开 usb 调试,然后插在激活器上并授权,飞智游戏厅就被「激活」了,然后可以实现任意位置点击。如果不了解的可以去他们官网了解下,在这里不多赘述了。无独有偶,黑域也使用了类似的手段,也可以用电脑的usb调试激活。我们知道,任意位.
2020-07-28 15:32:03
14793
9
原创 Android-ASM字节码插桩技术跳坑指南
经验总是不停刨坑刨出来的,最近结合工作需要并熟悉学习android ASM 字节码插桩的环境下,开发了一个方法 hook 的插件,虽然在各方其他开源项目的参考下,还是刨了不少坑,下面就来记录下。gradle 知识点记录–dry-run 查看gradle task执行顺序,验证插件是否被执行时有用。–stacktrace 查看详细堆栈,报错时可以看到插件代码错误的位置。ASM开发相关注意基本类型中的long 类型 和double 类型,占8个字节,在方法堆栈中占两个slot,不可以用ALOAD
2020-07-21 19:21:03
2317
原创 Android 豁免所有hide灰名单调用警告,做到不弹窗,logcat不提示,隐藏代码能并反射
从 android 9.0 开始,当代码调用某些系统api的时候,会因为api的一些判定灰名单级别,不同程度的对app做出提醒,最严重的是直接弹窗提醒,次之是会在logcat打印出调用内容。具体api名单列表:https://developer.android.google.cn/about/versions/10/non-sdk-q但有些情况下我们确实要使用这些api,下面是我总结了以下几种...
2020-04-17 14:36:57
1507
原创 java支持优先级的线程池 同步 异步
支持设置任务的优先级来顺序的执行任务import java.util.concurrent.Callable;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;import java.util.concurrent.PriorityBlockingQueue;import java.util...
2020-04-14 19:02:09
396
原创 android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android 耗时统计
在android开发的过程中,不管是开发SDK还是开发App,我们时常有这么一个需求,性能优化,或者卡顿优化,通常进行这项工作的时候,我们可能会凭着主观的一些观点,去定位排查某一部分代码,常用的手段就是在可疑代码前后加时间戳相减来手动统计,或者在运行的过程中,通过看android 自带的性能分析工具来进行优化。但这种方式难免会有疏漏,而且每段代码的执行过程也是不容易追踪的。今天就来给大家介绍一个...
2020-03-18 17:48:25
1805
1
原创 android 反射强行设置开启系统权限
发现小米 6 安全管家,即使我关闭了某些权限,但我一打开应用后,应用自己开启了权限,遂,反编译之,得以下反射强行设置权限代码。。理论上手动开启权限也是使用以下的代码进行,因此只有系统应用可以使用。(但不排除某些厂商定制rom的过程中,漏掉了关键的验证,调用只有有可能是可行的)AppOpsManager appOpsManager = mContext.getSystemService(AppO...
2020-03-12 17:16:57
1440
1
原创 android代码保护永不闪退
在我们开发的过程中,再厉害的程序员也无法保证写的代码没有错误,而这里面最严重的错误,对于android开发来说,毫无疑问就是app闪退了.特别是在开发第三方SDK的时候,假设因为SDK里面报的问题,导致对方App崩溃了,这对SDK而言的打击是非常严重的,有的时候我们甚至希望SDK即使无法很好的工作,也不要引发对接方App的崩溃.下面我就来介绍两种,可以根据代码判断,只会代码所在线程死掉,但不会引...
2019-11-30 12:54:11
2368
3
原创 Android使用读写锁实现多进程安全的SharedPreferences
背景由于app可能有多个进程,因此在某些场景下,就要进程间相互同步状态,避免多个进程各做各的,但数据不同步,导致产生异常。方案目前认为 Android 平台目前有这样几个方案:使用微信MMKV,微信开源的MMKV是支持多进程同步的,开发app的话推荐使用,不过对于开发SDK避免使用第三方代码的原则,不推荐用。使用ContentProvider 包裹 Sp ,其他进程使用的时候,通过Co...
2019-09-26 15:11:24
2754
原创 记录在使用类加载器的时候遇到的一个错误:java.lang.LinkageError
报错信息是这样的:java.lang.LinkageError: Class com.lm.process.CheckProcess method void com.lm.process.CheckProcess.observer(com.lm.bean.HhInfo, android.view.View) resolves differently in interface com.lm.pro...
2019-07-08 17:48:45
4186
原创 记一次java.lang.IllegalAccessError错误
java.lang.IllegalAccessError: Field 'com.lm.presenter.LmViewPresenter.view' is inaccessible to class 'com.lm.presenter.SplashPresenter' (declaration of 'com.lm.presenter.SplashPresenter' appears in /d...
2019-07-08 17:47:59
32253
5
原创 BottomSheetDialog中CardView圆角不显示及去除白边
注意两个地方CardView 需要设置android:layout_marginTop="@dimen/y70"才会显示去除白边: dialog.setContentView(view); dialog.getDelegate().findViewById(android.support.design.R.id.design_bottom_sheet) ...
2019-04-18 11:24:41
2468
原创 java 注解使用与注意事项
想拥有一个star过千的项目好难啊,费劲巴力的整出来star几天才有一个[捂脸],不过咱也不气馁,毕竟开发个东西出来对自己的技术也是个帮助不是。wandfix开发了有一段时间了,在开发和使用的过程中也发现了一些问题,特别是帮助了我学习对于java 注解的使用。今天就打算分享我在这个项目中对于注解使用。java注解在部分情况下是个可以帮助我们提升开发效率的东西,比如大名鼎鼎的控件绑定库 Butt...
2019-04-16 14:10:19
671
原创 一款非常简单易用的Android热修复框架 WandFix 使用详解 附实现原理
WandFix是一个基于java ClassLoader实现的热修复框架。效果展示:优点:类似于黄油刀可以直接对成员变量添加@InjectObject(“com.example.motordex.AppParsenterImpl2”)注解,来绑定热修复包中的实现类。无需关闭应用即可使修复包生效。与mvp模式搭配使用效果最佳。可以自己定义需要热修复的类。可以自己配置dex加密算法,...
2018-12-28 17:48:36
517
原创 正则表达式匹配http链接
写正则表达式,匹配以下例如:http://hello.hello.com和大海http://hello.hello.com和大海http://hello.aaa.com和大海http://hello.hello.com.cn和大海http://hello.hello.name和大海http://hello.hello.top和大海https://hello.hello.com和大海...
2018-11-26 13:52:59
23350
2
原创 [android源码日记]当系统时间小于1970年
我们知道,计算器的时间是从1970年开始的,而java获取时间的方法System.currentTimeMillis()的返回值也是从0开始的,0就代表1970年一月一日。那么这个如果值为负数会怎么样?1969年?今天在读SystemServer源码的时候看到其中run方法修复时间的一段。它是这么处理的。// If a device's clock is before 1970 (befor...
2018-10-11 18:56:25
1205
原创 java实现计算复杂数学表达式
用过python或者PHP的同学应该知道,它们都有个eval函数,这个函数真的是好用啊,比如我算数的时候就喜欢用python的控制台来当做计算器。比如:Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32Type "copyright", "credits" or...
2018-10-09 14:53:56
10895
10
原创 用24k纯java自己实现android的handler+message通信机制
事情的起因还是因为一次面试经历。面试官:“说一下android的handler机制。”经过几次面试之后发现几乎每个面试官都会问到这个问题,真的都快被问烦了好吧,于是用飞快的速度把之前都快说烂了答案的又说了一遍,好不容易都说完了,这时候面试官的操作来了,直接拿过来几张白纸。“恩,说的不错,来,那你试试能不能尝试用伪代码实现一下。”还有这种操作,当时我就蒙了,心想,要不就试试吧,反正都用了不知...
2018-09-21 16:56:15
1034
原创 android 3年 2018面经
从毕业之后一直在那里工作了将尽3年的公司,好好的突然就老总开员工大会告知公司资金出问题,大家都散了吧,可以说是始料未及啊。无奈,4月份,又要开始出来找工作了,在写这篇博客之前找到工作了,还算满意吧。下面就是对本次面试经历中印象比较深的几个问题做一个总结。今日头条 4月初投的简历吧,直到四月底今日头条打电话来让过去面试,hr提前提醒了面试会有算法方面的东西,预留了3天的时间让好好准备准备,...
2018-06-29 14:43:26
534
原创 android View 和 ViewGroup 事件分发机制
ViewGroup的事件分发机制大体流程为: ViewGroup的dispatchTouchEvent -> ViewGroup的onInterceptTouchEvent -> 子View的dispatchTouchEvent ->子View的onTouchEvent 1. ViewGroup.dispatchTouchEvent 事件拦截 2. ViewGroup...
2018-04-26 10:57:28
484
原创 android-opencv之线性滤波.实现简单图像滤镜
opencv的线性滤波可以为图像添加一些效果,比如模糊,降噪,锐化,腐蚀与膨胀等,当然我们也可以自己来定义核来实现一些特殊的效果. 核是什么?那么上面提到的核是什么呢? 核可以看做是沿着图像像素移动的一个窗口,它遍历图片的每个像素,并且将计算后的结果输出到该像素,通过这样的一个图可以更直观的理解这个概念. 核说白了就是一个固定大小的数值数组。该数组带有一个 锚点 ,一般位于数组...
2018-03-30 15:46:38
1500
原创 android-opencv机器视觉库的集成部署
这段时间一直在学习opencv在android平台上的应用,因此打算把学习的过程记录下来,就当是学习笔记吧.opencv在android平台上的部署有两种方式:手机安装OpencvManager.apk,然后项目导入OpenCVSDK的Java库,使用 OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_13, context, ...
2018-03-27 17:55:05
714
mac平台编译好的ollvm混淆,只需下载解压到 NDK 目录就可以直接使用
2023-05-09
从rom包中提取boot.img
2022-03-03
Android使用JNI调用C代码的例子
2016-04-21
解决android 5.0+ 部分机型webview 无法加载WebGL页面的问题
2016-10-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人