- 博客(177)
- 资源 (55)
- 收藏
- 关注
原创 遗失的源代码之回归之路的探索与实践
代码丢了?别怕,我有拯救计划!揭秘代码失踪背后的原因,一一解锁组件发布管理的规矩。动用小脑瓜,运用高级技能,分析、反编译、抽象语法树对比,妙手回春地还原代码。这篇博客通俗易懂,让你在轻松幽默中领略代码失而复得的惊艳过程。放下烦恼,跟着我一起搞定源码丢失的难题,笑对代码还原的全新冒险!
2024-02-03 15:30:00 1276
原创 Android 查看项目的依赖信息以及某个版本的组件是哪个依赖库里的正确姿势
Android查看项目依赖信息以及哪个版本的库是被谁依赖的正确姿势。例如项目中明明指定的kt版本是1.6.21,为何最终依赖的版本变成了1.7.10?怎么能知道是哪个库依赖了1.7.10版本的kt呢?项目中依赖的某个库,它里面的依赖了哪些东西呢,版本又是什么样的?看完这篇博客可以帮助你快速找出依赖相关的问题。
2022-11-14 21:30:00 4300 2
原创 手把手教你在Java后端使用bsdiff实现增量更新
之前写过一篇博客是在Android上使用bsdiff实现增量更新的功能. 本篇博客来看一看Java 后端的bsdiff增量更新是如何实现的。顺便看一下后端JNI的实现过程,怎么把C 代码编译成linux上需要的so文件等
2021-12-18 15:18:19 3967 4
原创 kotlin协程async await的异常踩坑以及异常处理的正确姿势
使用Kotlin来做一些异步操作相信大家都非常熟悉了,特别是结合Jetpack的一些组件,使得我们在Android开发中写异步任务非常的方便。但是,关于在使用协程的时候,个人觉得异常处理这一块是相对来讲是需要花时间去了解的地方,因为在使用过程中还是会遇到一些小坑的,这里记录下之前遇到的坑。踩一个使用async await时异常处理的坑kotlin 协程的异常处理官方文档我们先来看官方的示例:可以看到,示例代码中在对 async 开启的协程进行异常捕获是在调用 await 时。看打印结果也确实是捕
2021-10-30 15:01:40 5229 4
原创 Retrofit+kotlin Coroutines(协程)+mvvm(Jetpack架构组件)实现更简洁的网络请求
前言Retrofit发布的2.6.0版本内部支持了kotlin协程中的挂起(suspend)修饰符,这就意味着我们可以跟方便的用Retrofit结合kotlin协程来实现网络请求了。之前我们都是使用Rxjava2+Retrofit实现网络请求的功能,然后加入了AutoDispose来解决自动解绑的问题。https://yuzhiqiang.blog.csdn.net/article/det...
2019-09-20 12:21:27 21342 22
原创 Android使用协程(Coroutine)优雅的处理多个接口同时请求(网络并发请求)
Android中同时请求多个网络接口我们在开发过程中,很可能会遇到这样的需求,一个页面中需要同时请求好几个接口。我在之前写过一篇关于 高德逆地理编码接口返回数据格式不统一以及百度逆地理编码接口返回数据解析失败的踩坑记录 这篇文章,我当时的需求是要结合高德和百度两个接口,合并成一个我想要的数据。在文章中,我们使用了Rxjava的zip操作符来处理的两个接口同时请求的逻辑。大概代码如下: ...
2019-09-19 15:02:47 32082 2
原创 Android结合Retrofit实现统一加解密处理(Get、Post、Delete、Put)
Android中对接口进行统一加密在之前的博客中我们介绍了 加密方案的选择 和 Android中加解密需要注意的地方本篇博客我们主要来看一下Android中加密的注意事项。在开发过程中,接口是很多的,我们不可能分别对每个接口的请求数据都进行加密,这样写起来以及后期维护是非常麻烦的,所以,肯定要是统一处理的还有我们常用的Get、Post、Delete、Put请求他们的请求数据存放位置是不一...
2019-05-13 11:38:42 8667 12
原创 Flutter中的异步(Future、async、await、FutureBuilder)和 网络请求
Flutter 异步编程在Android开发中,异步编程是必不可少的,比如网络请求、IO操作等很多都是异步操作,而在Android原生中,有主线程和工作线程的概念,耗时操作都是要放到工作线程中的,ui要在主线程中更新,因此,原生Android开发中对线程的处理是必不可少的,幸运的是,一些第三方库例如Rxjava、RxAndroid让我们的线程切换起来十分的方便。但是Flutter是基于Datt...
2019-04-10 21:46:38 57569 8
原创 Android/Java完美使用RSA2结合AES对数据进行加解密(兼容RSA2 SHA256WithRSA,可使用2048长度的秘钥,AES Android各版本通用)
上一篇博客数据加解密方案选择中我们介绍了加密的几个方案选择,其中,最后一个方案使用RSA集合AES实现双向认证是目前来讲最安全的,也是含盖了前面几个方案的知识点。本篇博客我们就以最后一个方案为准,来进行代码实战,并记录一下踩过的坑。Android中的AES加密(兼容所有版本)在Android中使用AES加密的时,如果你从网上找的工具类,在Java环境下运行是没有问题的,但是当你放到手机或者...
2019-03-19 15:07:32 12316 4
原创 网络传输数据加解密方案选择(RSA+AES)
为什么要对数据加密理由很简单,为了安全。因为之前一直在赶项目,没有对传输的数据做处理,导致我这边通过抓包软件直接能看到我请求发的是什么数据,服务端给我返回的数据是什么。而且可以通过抓包软件修改响应数据返回给客户端,这样一来,客户端实际上接收到的数据并不是服务端给我的源数据,而是被第三者修改过的数据,如此一来,数据传输的安全就很有必要了。那如何保证数据传输的安全呢?总体要做到一下两点1....
2019-03-18 17:43:44 11908 6
原创 Flutter中MainAxisAlignment和CrossAxisAlignment详解
Flutter MainAxisAlignment和CrossAxisAlignment详解
2019-01-16 15:33:07 57005 6
原创 Flutter基础Widget之按钮(RaisedButton、FlatButton、OutlineButton,IconButton)
Flutter中给我们预先定义好了一些按钮控件给我们用,常用的按钮如下RaisedButton :凸起的按钮,其实就是Android中的Material Design风格的Button ,继承自MaterialButtonFlatButton :扁平化的按钮,继承自MaterialButtonOutlineButton :带边框的按钮,继承自MaterialButtonIconB...
2018-12-17 16:52:21 83194 8
原创 AutoDispose代替RxLifecycle优雅的解决RxJava内存泄漏问题
使用AutoDispose代替RxLifecycle优雅的解决RxJava产生的内存泄漏问题。
2018-07-16 16:49:03 13832 2
原创 Android多模块混淆、多module混淆、多library混淆的正确姿势
混淆的文章其实网上也很多,介绍的都很好,但是关于多个module的混淆规则就不是这么详细,有的也是错误的,经过了2天的多次实践以及查阅资料(多次打包和反编译看源码,很费时间啊),终于达到了我的目的。下面来总结一下。也希望能帮到需要的同学。
2018-06-13 11:47:20 33548 12
原创 Android反编译工具jadx详细使用方法以及混淆和加固的对比
反编译也不是什么新鲜的东西了。但是为了保护我们自己项目的代码,我们还是要通过反编译工具来检测一下我们的代码是否安全。 本文我们来使用一个开源的工具jadx来实现对apk文件的反编译。1.下载安装jadx jadx开源在github上了,我们可以直接去github上下载压缩包即可。这里我的环境是windows10。 jadx github下载地址打开连接,找到最新版本,直接下载zip文...
2018-06-13 10:28:07 12738 1
原创 Android超方便 集成 Zxing实现扫一扫,闪光灯,生成二维码图片,解析二维码(条码)等功能
之前我写过一篇博客是关于如何将zxing集成到Android Studio中,以及简单的实现扫一扫功能。 详情请看:Android Studio集成Zxing扫一扫但是,上面那篇博客只有有一个扫一扫功能,而且在低分辨率手机上会出现变形的问题。扫描速度也比较慢,功能不是很全,没有闪光灯,生成二维码,解析二维码图片,解析条码图片等。 这几天抽了点时间,将之前的代码完善了一下,主要是修复了一些b...
2017-10-20 09:42:01 75743 264
原创 com.android.support版本冲突的解决办法
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes 当我们使用android studio添加一些第三方的依赖库时,很可能会提示上面这个错误。大致意思就是com.android.support的包版本号要
2017-10-12 14:49:59 60715 21
原创 ReactNative项目构建分析与思考之 cli-config
前言在上一篇 native_modules.gradle分析 文章中,我们对三方库是如何依赖到Android项目有了一个大致的了解。在 native_modules.gradle 的 getReactNativeConfig方法中,执行了一个node命令,然后得到了非常关键的 reactNativeConfigOutput后续的流程才能正常走下去。String[] reactNativeConfigCommand = ["node", cliPath, "config"]def reactNa
2024-03-18 08:00:00 540
原创 ReactNative项目构建分析与思考之native_modules.gradle
用了这么久的RN,你真的清楚为什么前端直接执行一个add命令就可以调用到Native原生的功能呢?是怎么做到的呢?来一起看看吧。
2024-03-12 08:45:00 859
原创 ReactNative项目构建分析与思考之react-native-gradle-plugin
用了这么久的React Native,你真的了解RN项目的构建流程吗?本文剖析了RN项目组织结构、Gradle插件的作用以及RN是如何组织项目的。通过一步步的分析,揭秘了RN项目构建背后的奥秘,为你提供了前所未有的透彻见解。无论你是Android开发者还是React Native爱好者,本文定能让你大开眼界,构建出更加优质的RN应用。快来一探RN构建流程的独门秘籍吧!CopyRetry
2024-03-09 17:54:10 1160
原创 HarmonyOS NEXT:技术革新与生态挑战的交汇点
OpenHarmony和HarmonyOS NEXT 面临的挑战如生态建设和市场接受度,OpenHarmony的开源特性及HarmonyOS的发展节点和特性。希望HarmonyOS NEXT能够做大做强,创造辉煌!
2023-12-16 17:57:33 5358
原创 Cordova系列之化繁为简:打造全场景适用的Cordova组件
一个基于Cordova封装的全场景组件,使用简单,在保留Cordova原有功能的基础上突破了必须继承CordovaActivity的限制。支持在Fragment中使用,还能能作为自定义view使用,提供关键节点的事件回调,可快速基于Cordova实现业务需求。
2023-11-10 22:40:02 8826 2
原创 大佬,一款小而美的Application组件,了解一下
Android开发过程中,Application类的角色不容忽视。它不仅是程序启动的入口,同时也代表着整个应用程序的生命周期。初始化第三方库的需求容易理解,因为一些第三方库需要全局的Application对象来执行某些操作。这就需要我们遵循第三方库提供的初始化代码,虽然这个过程有些麻烦。假如你自己有一些开源组件,或者公司内部的组件也需要Application对象或Context,那么你可以约定一个规则,让所有人使用同一个Application实例。
2023-07-11 22:30:00 3335
原创 新一代版本依赖管理Vesion Catalog的探索与实践
新一代版本依赖管理Version Catalog的使用与远程发布,结合Include Build更优雅的简化依赖构建
2023-07-02 22:22:18 2415
原创 Cordova系列之插件的使用以及自定义插件
在上一篇博客初探Cordova中介绍了下Cordova,并创建了个Cordova的项目运行了下,文章中也说到插件是Cordova比较核心的东西了,本篇博客主要开看一下插件怎么用以及怎么自定义插件除了使用官方或三方提供的插件,很多时候我们还需要自定义插件去处理一些业务相关的逻辑。这里我挑重点说Cordova插件就是js跟原生进行交互的桥梁,主要方向是js调原生插件至少包含两部分,js代码和原生代码,js负责导出方法给前端调用,原生负责实现业务逻辑以及通知js执行结果js调原生最终都是通过执行的。
2023-03-26 15:38:09 5674
原创 Cordova系列之初探Cordova
了解cordova的优势以及不足,如何摆脱必须继承CordovaActivity的限制,怎么封装一个比较好用的组件
2023-03-25 12:46:41 4516
原创 适配splashscreen步骤以及启动卡住不动(白屏)的坑
适配splashscreen,在splashscreen显示弹窗,解释setOnExitAnimationListener不执行的问题
2023-01-24 17:06:13 11572 6
原创 github 配置了公钥依旧提示git@github.com‘s password: Permission denied, please try again. 的解决办法
给github配置好ssh key后提示git@github.com's password:Permission denied, please try again.的解决办法
2022-09-24 22:57:54 55718 31
原创 moshi 极简封装
之前写了一篇文章是介绍moshi的基本使用和实战,在那篇文章中对moshi进行了一个封装,但是封装后总觉得不够简洁,实际使用起来虽然功能没问题,但是用着不舒服,本篇文章来对moshi的封装做一个改进,借鉴了jackson获取泛型信息的方式,还是比较巧妙的。.........
2022-06-11 16:03:36 2674 2
原创 kotlin内联(inline)函数中参数默认值报VerifyError: Bad local variable type错误的解决办法
kotlin inline函数报VerifyError: Bad local variable type的解决办法
2022-05-25 20:10:06 659
原创 对kotlin友好的现代 JSON 库 moshi 基本使用和实战
前言上一篇博客我们聊了下gson在处理kotlin data class时的一些坑,感兴趣的可以了解一下:gson反序列化成data class时的坑总结一下有一下两点属性声明时值不能为null,结果反序列化后值为null,跟预期不符默认值可能不生效,可能被null覆盖在文章末尾也介绍了解决办法就是不要使用gson,因为gson主要还是针对java的库,没有对kotlin做单独的支持。我们可以使用moshi或jackson来解决上面所说的问题。jackson的是spring boot 默认
2022-04-10 19:09:54 11491 3
原创 gson反序列化成data class时的坑
前言在Android开发中,Gson是很常用的用来处理json的三方库,它是由Google维护的,一直以来都比较稳定,至少在使用Java开发时是长这样的。但是,Gson对Kotlin的data class的支持就不是很完善了,会有一些坑,下面我们来看一看gson和data class的正常情况在kotlin中我们使用data class来充当数据类,举个例子:data class User( val name: String, val age: Int,)使用gson将jso
2022-04-04 17:56:38 4319
原创 将压缩包里的图片显示到页面上示例
之前在项目中有这么个需求,把图片压缩然后上传到oss上。后来加了个修改功能,修改的时候可以预览之前上传的图片。这就需要把之前上传的zip下载下来,然后解压,然后显示到img标签上。总结下来大致就下面三步:下载压缩包解压出文件组成可用的图片URL,显示到图片标签上实现这个功能还是走了些弯路的,也遇到一些坑,这里就不多废话了,直接上代码,希望能帮助各位大佬快速实现这个功能。首先是下载zip然后解压,官方给了我们一个示例:https://stuk.github.io/jszip/document
2021-11-13 17:13:39 2507
原创 Nacos startup无反应,启动报错的解决办法
今天在运行Nacos的时候遇见了点问题,记录一下。我的系统是win11,运行的Nacos版本是 2.0.3https://github.com/alibaba/nacos/releases/tag/2.0.3运行startup.cmd 无反应刚开始直接双击 startup.cmd 运行什么反应都没有,也不知道是什么原因。于是就尝试在命令行执行 startup.cmd 给出了以下提示。告知我们需要设置 JAVA_HOME 环境变量,并且需要jdk8或以后的64位的版本。知道什么原因就好办了
2021-10-03 20:33:42 8852 5
原创 了解并发内存模型(JMM)和 Volatile
上一篇:了解 JVM和JVM内存结构(JVM运行时数据区)上一篇博客我们对JVM有了一个简单的了解,同时也大概了解了java代码在栈中是怎么运行的。本篇博客我们来了解一下并发内存模型(Java内存模型)。JMMJava Memory Model:Java 内存模型首先说概念:JMM是一种规范,...
2021-08-14 21:09:29 324
原创 了解JVM中的GC
如何判断一个对象是否是垃圾:引用计数器法,根节点可达性分析法垃圾回收算法:标记清除法,复制清除法,标记压缩法。JVM的分代结构:新生代,老年代
2021-08-08 18:16:29 385
产物对比工具,用于对比aar或者jar包之间的资源和源码的差异信息,快速找出两个版本间的差异
2024-02-02
Integral_process_demo.rar
2021-04-04
openssl-1.0.2q-x64_86-win64.rar
2020-04-20
CoroutineRetofitMvvm.rar
2019-09-20
MvvmLogin.rar
2019-08-08
Android Socket连接(心跳检测,断线重连,状态监测等)新资源包
2019-07-02
Flutter路由与导航示例,页面跳转和传值传参,接收页面返回数据
2019-04-15
Flutter通过FutureBuilder实现异步请求网络数据并显示加载中Demo
2019-04-11
Flutter路由与导航示例,包含页面跳转和传值传参,接收页面返回数据等功能
2019-04-09
完美使用RSA2结合AES对数据进行加密(兼容RSA2,可使用2048长度的秘钥,AES Android各版本通用)
2019-03-19
Flutter选择相册图片和拍照示例
2019-03-08
Flutter 底部导航栏示例
2019-03-04
扫一扫demo安装包,速度快、闪光灯,解析二维码图片等功能
2019-01-11
Flutter默认项目代码详解,注释超详细
2018-12-11
Flutter SDK 1.0.0发布版
2018-12-10
Android Netty的使用(结合RxJava)
2018-11-23
Android多渠道打包及资源混淆
2018-10-24
kotlin版的字母索引控件,性能好
2018-09-21
javaweb实现的访问权限控制示例
2018-07-31
Java Web使用Ajax进行网络请求和数据交互demo
2018-07-30
cookie和session示例
2018-07-27
使用Servlet实现的注册登录示例,包含文件上传,注释超级详细
2018-07-26
AutoDispose优雅的解决RxJava产生的内存泄漏问题
2018-07-17
MVC和MVP深度对比
2018-01-17
zxingDemo.apk
2017-10-23
zxing扫一扫,集成了闪光灯,选图片解析,生成二维码等功能,一句话依赖即可使用
2017-10-20
zxing扫一扫,集成了闪光灯,选图片解析,生成二维码等功能
2017-10-20
Android防止service多次执行startCommand
2017-10-12
android全盘扫面指定后缀名文件并动态显示到列表上demo
2017-09-30
Android Socket连接(心跳检测,断线重连,状态监测等)
2017-09-27
在Fragment监听返回键
2017-08-30
Android WebView 报 Not allowed to load local resource错误的解决办法
2017-07-28
清除fragment页面数据(重新加载布局)
2017-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人