6 痕迹丶

尚未进行身份认证

我要认证

对代码不满足,是任何真正有天才的程序员的根本特征。

等级
TA的排名 2w+

位操作使用一个参数标记多个开关

例如一个手机,可能有以下标记位: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

分享一个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

android免root运行adb高级权限命令,例如修改手机设置等(转)

免Root实现静默安装和点击任意位置0 前言最近有了个需求:免 root 实现任意位置点击和静默安装。这个做过的小伙伴应该都知道正常情况下是不可能实现的。无障碍只能实现对已知控件的点击,并不能指定坐标。但是确实有人另辟蹊径做出来了,譬如做游戏手柄的飞智,他们是用一个激活器,手机开 usb 调试,然后插在激活器上并授权,飞智游戏厅就被「激活」了,然后可以实现任意位置点击。如果不了解的可以去他们官网了解下,在这里不多赘述了。无独有偶,黑域也使用了类似的手段,也可以用电脑的usb调试激活。我们知道,任意位.

2020-07-28 15:32:03

Android-ASM字节码插桩技术跳坑指南

经验总是不停刨坑刨出来的,最近结合工作需要并熟悉学习android ASM 字节码插桩的环境下,开发了一个方法 hook 的插件,虽然在各方其他开源项目的参考下,还是刨了不少坑,下面就来记录下。gradle 知识点记录–dry-run 查看gradle task执行顺序,验证插件是否被执行时有用。–stacktrace 查看详细堆栈,报错时可以看到插件代码错误的位置。ASM开发相关注意基本类型中的long 类型 和double 类型,占8个字节,在方法堆栈中占两个slot,不可以用ALOAD

2020-07-21 19:21:03

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

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

android 性能分析(优化)-利用AOP技术,字节码方法插桩,实现 android 耗时统计

在android开发的过程中,不管是开发SDK还是开发App,我们时常有这么一个需求,性能优化,或者卡顿优化,通常进行这项工作的时候,我们可能会凭着主观的一些观点,去定位排查某一部分代码,常用的手段就是在可疑代码前后加时间戳相减来手动统计,或者在运行的过程中,通过看android 自带的性能分析工具来进行优化。但这种方式难免会有疏漏,而且每段代码的执行过程也是不容易追踪的。今天就来给大家介绍一个...

2020-03-18 17:48:25

android 反射强行设置开启系统权限

发现小米 6 安全管家,即使我关闭了某些权限,但我一打开应用后,应用自己开启了权限,遂,反编译之,得以下反射强行设置权限代码。。理论上手动开启权限也是使用以下的代码进行,因此只有系统应用可以使用。(但不排除某些厂商定制rom的过程中,漏掉了关键的验证,调用只有有可能是可行的)AppOpsManager appOpsManager = mContext.getSystemService(AppO...

2020-03-12 17:16:57

android代码保护永不闪退

在我们开发的过程中,再厉害的程序员也无法保证写的代码没有错误,而这里面最严重的错误,对于android开发来说,毫无疑问就是app闪退了.特别是在开发第三方SDK的时候,假设因为SDK里面报的问题,导致对方App崩溃了,这对SDK而言的打击是非常严重的,有的时候我们甚至希望SDK即使无法很好的工作,也不要引发对接方App的崩溃.下面我就来介绍两种,可以根据代码判断,只会代码所在线程死掉,但不会引...

2019-11-30 12:54:11

Android使用读写锁实现多进程安全的SharedPreferences

背景由于app可能有多个进程,因此在某些场景下,就要进程间相互同步状态,避免多个进程各做各的,但数据不同步,导致产生异常。方案目前认为 Android 平台目前有这样几个方案:使用微信MMKV,微信开源的MMKV是支持多进程同步的,开发app的话推荐使用,不过对于开发SDK避免使用第三方代码的原则,不推荐用。使用ContentProvider 包裹 Sp ,其他进程使用的时候,通过Co...

2019-09-26 15:10:37

记录在使用类加载器的时候遇到的一个错误: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

记一次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

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

java 注解使用与注意事项

想拥有一个star过千的项目好难啊,费劲巴力的整出来star几天才有一个[捂脸],不过咱也不气馁,毕竟开发个东西出来对自己的技术也是个帮助不是。wandfix开发了有一段时间了,在开发和使用的过程中也发现了一些问题,特别是帮助了我学习对于java 注解的使用。今天就打算分享我在这个项目中对于注解使用。java注解在部分情况下是个可以帮助我们提升开发效率的东西,比如大名鼎鼎的控件绑定库 Butt...

2019-04-16 14:10:19

一款非常简单易用的Android热修复框架 WandFix 使用详解 附实现原理

WandFix是一个基于java ClassLoader实现的热修复框架。效果展示:优点:类似于黄油刀可以直接对成员变量添加@InjectObject(“com.example.motordex.AppParsenterImpl2”)注解,来绑定热修复包中的实现类。无需关闭应用即可使修复包生效。与mvp模式搭配使用效果最佳。可以自己定义需要热修复的类。可以自己配置dex加密算法,...

2018-12-28 17:48:36

正则表达式匹配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

[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

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

用24k纯java自己实现android的handler+message通信机制

事情的起因还是因为一次面试经历。面试官:“说一下android的handler机制。”经过几次面试之后发现几乎每个面试官都会问到这个问题,真的都快被问烦了好吧,于是用飞快的速度把之前都快说烂了答案的又说了一遍,好不容易都说完了,这时候面试官的操作来了,直接拿过来几张白纸。“恩,说的不错,来,那你试试能不能尝试用伪代码实现一下。”还有这种操作,当时我就蒙了,心想,要不就试试吧,反正都用了不知...

2018-09-21 16:56:15

android基于mvp的热修复方案构思,不使用第三方

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

2018-08-01 18:16:19

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。