- 博客(66)
- 资源 (5)
- 收藏
- 关注
原创 开发利器:接口代理和接口模拟工具
本工具后端模拟代理服务基于开源框架 Mock Server(https://www.mock-server.com/#what-is-mockserver,具体框架为 mockserver-netty-5.14.0) 开发完成。代理服务启动后,如果我们需要代理手机的请求,就将手机连至电脑同一个局域网内,然后在网络代理中设置代理服务器为控制面板中显示的代理 IP 和端口号。7、设置完成后就能看到手机的请求已经被代理了,通过点击列表中的请求可以查看具体的网络请求数据。8、模拟接口可以通过两种方式来完成。
2023-08-15 18:53:29
844
原创 Android APK 加固技术探究(三)
Android APK 加固技术探究(一)Android APK 加固技术探究(二)Android APK 加固技术探究(三)为了保证 Android 应用的源码安全性,我们一般会对上线的应用进行代码混淆,然而仅仅做代码混淆还不够,我们还要对我们的应用加固,防止别人通过反编译获取到我们的源码。目前 apk 加固技术比较成熟完善,市面上比较流行的有“360加固”。本文就 apk 加固技术做一个技术探究,希望读者看过后能明白加固的其中原理,并也能自己实现加固方案。源码地址:https://gitee
2021-11-01 23:24:56
1747
原创 Android APK 加固技术探究(二)
Android APK 加固技术探究(一)Android APK 加固技术探究(二)Android APK 加固技术探究(三)为了保证 Android 应用的源码安全性,我们一般会对上线的应用进行代码混淆,然而仅仅做代码混淆还不够,我们还要对我们的应用加固,防止别人通过反编译获取到我们的源码。目前 apk 加固技术比较成熟完善,市面上比较流行的有“360加固”。本文就 apk 加固技术做一个技术探究,希望读者看过后能明白加固的其中原理,并也能自己实现加固方案。在 Android apk 加固技术
2021-11-01 23:23:21
2463
原创 Android APK 加固技术探究(一)
Android APK 加固技术探究(一)Android APK 加固技术探究(二)Android APK 加固技术探究(三)为了保证 Android 应用的源码安全性,我们一般会对上线的应用进行代码混淆,然而仅仅做代码混淆还不够,我们还要对我们的应用加固,防止别人通过反编译获取到我们的源码。目前 apk 加固技术比较成熟完善,市面上比较流行的有“360加固”。本文就 apk 加固技术做一个技术探究,希望读者看过后能明白加固的其中原理,并也能自己实现加固方案。Android apk 的反编译作
2021-11-01 23:21:12
1861
原创 Flutter开发之Android启动白屏优化方案
通常 Android 项目运行,因项目大小或设备性能多多少少会出现启动白屏,关于这方面的优化 Android 原生有通用的方案,同样 Flutter 在这方面的优化方案也是一样。解决方案步骤一:在 Android 工程的目录下找到这两个文件步骤二:打开 launch_background.xml上图中红框中的内容就是我们替换白屏的图片,这里你可用一张图片也可用多个图片放到不同的item中去展示步骤三:如果按照上面的步骤设置没有效果,那么请先检查是否修改了所有的laun
2021-03-17 08:46:59
665
原创 Android 中基于 OKHttp 和 HttpUrlConnection 封装的 Http 请求库
Android 中基于 OKHttp 和 HttpUrlConnection 封装的 Http 请求库1、项目地址Github传送门2、项目说明HttpAgent 是 Android 网络请求框架,可以自定义网络引擎,支持 GET、POST、文件上传、文件下载,可以监听文件下载上传进度。本库内部基于 OkHttp 和 HttpUrlConnection 实现了两套网络请求逻辑,使用者可以根据自己的需要使用其中的某一种类型,或者自己按提供的接口自行实现。3、使用说明1、全局配置HttpAgent
2020-08-18 13:47:54
565
1
原创 Android 中动态提取图片中颜色作为主题色
功能需求一个页面中顶部显示一张图片(图片从网络加载),此时需要根据图片的颜色来动态调整顶部标题栏的背景色。技术要求Android 调色板支持库实现过程1、添加调色板支持库dependencies{ implementation 'androidx.palette:palette:1.0.0'}2、创建调色板实例这里有 2 中方式来创建/** * 同步方式 */fun createPaletteSync(bitmap: Bitmap): Palette = Palette.fro
2020-07-17 18:05:07
4653
原创 kotlin项目报错误提示Please specify proper '-jvm-target' option
错误提示Cannot inline bytecode buit with JVM target 1.8 into bytecode that is being built with JVM target 1.6.Please specify proper '-jvm-target' option报错原因kotlin代码编译的时候依然是使用的jdk1.6在编译。要想kotlin也用jdk1...
2020-05-07 13:43:28
596
原创 Android 设备监听网络状态变化
Android 网络状态的变化监听目前主要有两种方式,一种是通过 ConnectivityManager 网络连接管理类来注册监听网络状态回调,另一种则是通过广播来实现。1、通过 ConnectivityManager 来实现创建 ConnectivityManager 对象ConnectivityManager connectivityManager = (ConnectivityMa...
2020-01-21 18:11:00
3947
原创 Android 设备网络信息的获取(网络类型、网络强度、网络速度、代理情况)
1、Android 设备网络类型的判断判断网络类型主要还是依赖系统服务(系统为我们提供了大量的服务,以便我们能够查看到设备的一些信息),这里通过 Context.CONNECTIVITY_SERVICE 这个服务来获得 ConnectivityManager 类对象。具体实现如下/** * 获得网络类型 * * @param context * @ret...
2020-01-21 14:05:21
5145
1
原创 Android 设备电池容量和使用量的获取
1、获取 Android 设备的电池容量电池容量的获取主要通过反射 com.android.internal.os.PowerProfile类,调用其中的 getBatteryCapacity 方法获取。具体方法如下/** * 获取电池的容量 * * @param context * @return */ public static ...
2020-01-21 11:51:35
4436
原创 Android网络请求遇到not permitted by network security policy问题
从Android9.0开始,Google为了Android的网络安全将不再默认支持Http的请求,所有的请求将需要使用Https,所以当使用大于等于9.0版本时,http的请求将会出现标题中的错误。当然我们如果依然需要使用Http,Google也提供了方法帮我们解决这个问题。方法:1、在res中新建xml文件夹,然后在文件夹中新建名为network_security_config.xml文...
2019-10-21 14:18:36
702
原创 Android ViewModel使用与源码解析
Android 中的ViewModel的使用主要分为3部分1、创建一个ViewModel类,例如class MyViewModel: ViewModel(){ private val message:MutableLiveData<String> by lazy{ MutableLiveData<String>().also{ ...
2019-10-14 17:46:54
402
原创 Android findViewById源码分析
Android中常用到findViewById的地方,一是Activity中直接调用findViewById和二个是Fragment中通过View去调用findViewById。1、先来看下第二种我们在用Fragment时常有这样一段代码override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,...
2019-10-10 15:48:20
842
原创 MySql更新表中某个字段值时报一下错误
错误日志:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor a...
2019-08-19 21:25:41
283
原创 Android动态改变shape.xml中图形的颜色
在Android开发过程中我们常遇到将某个图形的颜色改变(例如用圆点的不同颜色来代表不同的状态)像这样的需求,一般我们使用android的shape就可以实现,比如<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"...
2019-07-03 14:48:46
2515
原创 Android 弹框没有背景色及背景边框设置
<style name="versionDialogTheme" parent="@android:style/Theme.Holo.Light.Dialog"> <item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 --> <...
2019-06-28 10:25:15
1112
原创 Android用PopumWindows实现特殊需求
最近有一个特殊的需求----实现按钮点击弹出一个页面,页面在按钮下方显示,下面半透明,上面透明。如图所示首先想到的是使用popumwindows实现。实现方式:popumWindows 弹出方式使用showAsDropDown,然后focusable设置为不获取焦点(因为要在弹出的情况下响应页面上面的筛选点击事件)。遇到问题及解决方法:1、popumwindows的显示高度:s...
2019-06-21 18:04:33
300
原创 Kotlin中使用DSL方式实现接口回调
import logimport sun.audio.AudioDataclass AudioPlayer{ //定义一个内部类 inner class ListenerBuilder{ //定义三个回调方法 internal var mAudioPlayAction:((AudioData) -> Unit)? = null ...
2019-06-17 17:49:52
992
原创 Android中Activity和Fragment通过接口管理类来简化通信过程
思想来源动脑学院实现思路,1、将回调接口抽象化,2、提供一个接口管理类,来添加实现的抽象接口和调用注册的接口3、Activity中调用接口管理类来注册回调接口4、Fragment中调用接口实现方法具体的实现逻辑请移步源码地址...
2019-04-17 16:30:24
537
原创 Android密码框显示隐藏密码
//显示密码editText.transformationMethod = PasswordTransformationMethod.getInstance()//隐藏密码editText.transformationMethod = HideReturnsTransformationMethod.getInstance()
2019-04-01 13:49:07
1461
原创 Android EditText限制输入的最大字符数
需求:EditTtext需要限定输入的字符数量,一个汉字字符占据的是2个字符,一个英文字符占据1个字符。实时监听输入的字符数量,超过字符提示内容长度超限实现思路:通过EditText的InputFilter过滤器实现。1、查看InputFilter这个类,里面有个实现好的限制输入文本长度的静态类LengthFilter,源码如下:/** * This filter will...
2019-04-01 13:43:14
3286
原创 Java中关于String,StringBuffer,StringBuilder的区别
1、String的值是不可变的,即String str = "111"; str = "222";虽然str对象名称没有变但是它指向的是两个不同的对象。因此如果大量使用String字符串会比较耗内存,因为它要频繁的创建和销毁创建的String对象。2、StringBuffer他的值是可以改变的。并且他是线程安全的类,因为他的很多方法都加了同步操作,所以它在操作的速度上来说要比StringBui...
2019-01-17 19:38:58
129
原创 继MVP模版后的第二个模版------Adapter模版
具体内容详见Github https://github.com/ShanDianDev/Adapter-Templete快速创建Adapter模版免去创建布局内部类的烦恼
2018-10-19 15:14:35
152
原创 Android Lifecycles组件(生命周期感知组件)的简单使用
来自google的一段介绍 生命周期感知组件执行操作以响应另一个组件(例如活动和片段)的生命周期状态的更改。这些组件可帮助您生成更易于组织且通常更轻量级的代码,这些代码更易于维护。 一种常见的模式是在活动和片段的生命周期方法中实现依赖组件的操作。但是,这种模式导致代码组织不良以及错误的增加。通过使用生命周期感知组件,您可以将依赖组件的代码移出生命周期方法并移入组件本身。这个...
2018-10-19 11:14:39
862
原创 Android开发中使用模版功能快速创建MVP模版文件
在android开发中使用MVP模式进行开发最烦的就是要创建model,presenter,view等等一系列文件。这大大的降低了开发效率,那么有没有方法能够解决这个问题呢?这里不得不感谢AS的伟大,他为我们提供了这一类事插件的功能。在创建Activity的过程中这一张图片大家一定很熟悉当我们点击Empty Activity时给我们创建了一个带XML布局的Activity,并且帮我们在...
2018-10-15 15:15:03
382
原创 Android动画中的插值器Interpolator使用
Interpolator的使用在Android中使用属性动画时可以设置插值器,系统为我们提供了几种已经实现了的插值器类。 分别为: - LinearInterpolator 匀速直线运动 - AccelerateDecelerateInterpolator 中间快两头满 - AccelerateInterpolator 开始慢然后快 - AnticipateInterpolator ...
2018-08-10 13:32:08
1250
原创 用Kotlin写一个RecyclerView的自定义分割线
很多时候我们在用RecyclerView时需要用到分割线。有时候图省事就用了一个View布局给他设置个背景色来实现,这样做虽然可以实现分割线的效果,但是这么做是不是有点low了。。。。其实RecyclerView自己就有设置分割线的方法addItemDecoration,通过这个方法我们可以很方便的设置分割线。同时系统还为我们提供了一个分割线的类DividerItemDecoration。...
2018-07-27 14:45:12
2072
1
原创 Kotlin写一个自定义的菜单控件
首先贴一下效果图思路:菜单控件分两部分,一是点击的子按钮(RecordButton),二是包裹着子按钮的容器(RecordMenu)。子按钮负责显示文字及背景颜色和点击事件,父容器主要控制子控件的位置和动画显示。实现:子按钮,先贴代码class RecordButton : RelativeLayout { /** 控件显示的文本*/ lateinit v...
2018-07-26 13:44:59
2712
原创 Android activity页面跳转-共享元素
Android5.0之后支持Activity页面跳转使用共享元素,所谓共享元素即是在两个Activity(A,B)中设置两个控件(a,b),从A跳转到B时让两个Activity平滑的从a过度到b。效果图如下下面就来记录一下实现的过程1.首先在需要跳转的两个Activity的布局中找到你需要共享的控件<android.support.constraint.ConstraintLayout xm...
2018-06-22 11:08:04
1208
原创 Kotlin学习-基础-数据类型
Kotlin的数据类型有:数字、字符、布尔值、数组和字符串。1、数字kotlin在数字处理上接近于java但是不是完全相同。他提供如下几种内置类型来表示数字:Double、Float、Long、Int、Short、Byte(字符类型在Kotlin中不是数字)1.1字面常量 数值常量有三种:十进制(123,Long类型要加L-123L,Float要加F或者f-123.4f),十六进制(0x0f...
2018-06-18 17:05:46
289
原创 Android中关于Bitmap的裁剪缩放和创建
Android 中常常需要对图片进行缩放裁剪等处理,这里简单的介绍一下这两种处理方式的方法1.裁剪/** * Returns an immutable bitmap from the specified subset of the source * bitmap. The new bitmap may be the same object as source, or a cop...
2018-03-09 11:27:01
7987
原创 关于Servlet中获取到Http传输过来的中文正常,而当数据插入到MySql中时为乱码或者问好的解决方案
1、当连接数据库时这样写url="jdbc:mysql://localhost:3306/RQDataBase?useUnicode=true&characterEncoding=UTF-8"2、如果是用连接池则用url="jdbc:mysql://localhost:3306/RQDataBase?useUnicode=true&characterEncoding=UTF
2018-02-05 16:24:27
341
原创 Android中获取输入法高度,根据输入法高度调节文本框的位置
可能大伙儿都发现了Android中并没有直接提供给我们获取输入法高度的方法,但是接下来提供的方法却能帮我们间接获取输入法高度。直接上代码rl_finance_detail.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() {
2018-02-05 14:23:20
1460
原创 java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMerger
对你表示同情,因为你遇到了这个bug,但是还得恭喜你,因为这篇文章将帮助你解决这个bug。android项目在构建时不会报这个错,但是一运行就会报这个错,这个错的意思是在你的项目中引用了相同的包。知道问题所在那么我们就来解决问题。1、找到引用了相同包的依赖,例如我的项目中用了compile'com.squareup.okhttp3:okhttp:3.7.0'在okhttp中同时引用
2018-02-01 15:07:41
11543
2
原创 Android软件性能检测工具讲解
1 静态代码质量检测工具Android Studio—>Analyze—>Inspect Code通过静态代码质量检测工具可以删掉工程中无用的资源文件、发现潜在的内存泄漏问题、明显的代码问题、简化代码等等,如下图它列举出了所有的存在的问题,点击进行修改2 使用严格模式(StrictMode)StrictMode就是用来指定一系列策略(policy),对相应规则(rule)
2017-10-17 15:08:46
528
原创 Rxjava2.x学习记录(三)
Rxjava2.x的内容和Rxjava1.x稍有差别,操作符部分基本不变使用添加依赖compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'io.reactivex.rxjava2:rxjava:2.1.5'具体的使用方法详见http://www.jianshu.com/p/0cd258eecf60
2017-10-16 14:09:05
314
原创 Rxjava1.x学习记录(二)操作符
1,from将一组数据,按顺序依次发射出去private void rxFromUse() { List list = new ArrayList<>(); list.add("from1"); list.add("from2"); list.add("from3"); list.add("from4");
2017-10-13 18:33:42
374
原创 Rxjava1.x学习记录(一)名词及用法的简单介绍
1 介绍几个名词(比较常用到的)Observable:可观察的,用来发送一个事件源Subscriber:订阅者,用来接受处理一个事件源Subscription:当Observable订阅了Subscriber时会返回一个Subscription,这个Subscription可以对订阅关系进行管理(例如取消订阅)Action0:一个接口,内部包含一个call(),无返回值
2017-10-13 15:26:42
335
TCP_UDP_PerformanceTest.exe
2016-08-12
Thrift框架所用的包
2016-08-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人