Pig Cat

Full-Stack, Android, AI

快速修改字节码并重打jar包

探索发现。

背景 不管是做Android项目还是Java后端Web项目,我们一般都会引用各种三方库。遇到特殊需求时,可能需要修改jar包中的代码。本文以实际示例讲解一些基本方法,方便大家快速入坑。 首先我们都知道直接解压jar包的话,都是class二进制文件,打开后是看不见代码的。之所以可以在开发环境中直接查看jar中的代码是因为IDE已经帮你反编译好了,才能看见Java源码。 入坑 如何修改这...

Win10也要愉快地使用Bash

世界那么大。

对于习惯了Linux和Mac的同学来说,Windows自带的终端确实不太好用。其实我们完全可以用Bash取而代之。 安装Windows Terminal 自从巨硬拥抱开源之后,那是骚操作频频。Windows Terminal是一个开源项目,它本身只是一个终端容器,可以装载系统自带的CMD、PowerShell甚至是WSL子系统的终端。 下载安装很简单,可以在应用商店直接搜索Termin...

Windows安装repo的真正解决方案

专治各种小毛病。

2020-02-22更新!我发现谷歌在最近几天发布了git-repo 2.4版本,并更新了 Microsoft Windows Details 文档,直接解决了此文问题,比本文以前的三方解决办法简单很多很多。 最新官方解决方案 一、基础设施 安装最新的Git for Windows(参考下面的旧文即可),目前版本是2.25.1 安装Python 3 ,目前版本是3.8.1...

源码茶舍之如何由Uri找寻ContentProvider

品味AOSP。

引子 我们都知道四大组件之一ContentProvider的用处,它给大家提供一种统一的数据访问格式。调用者无需关心数据源于何处(如DB、XML文件和网络等),只需获取到对应的ContentResolver来进行增删查改即可。 自己实现一个Provider的时候,也会在配置文件中声明如下: <provider android:name=".provider.TestProv...

源码茶舍之FLAG_EXCLUDE_STOPPED_PACKAGES与广播唤醒

品味AOSP。

发现 我们先随便实现一个BroadcastReceiver,静态注册: class TestReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent?) { Log.w("TEST-1", "onReceive ${intent?.action}...

走进各大语言的协程世界

开阔眼界。

想聊聊C++、C#、JS、Kotlin等语言中的协程实现与应用。 挖坑待填,未完待续……

Android神经网络(Neural Networks API)初探

见微知著。

谷歌早在Android 8.0就推出了神经网络API,不过现在网上资料仍旧不多,随着TensorFlow Lite的成熟,底层API更是无人问津。 前言 Android Neural Networks API (NNAPI) 是一个 Android C API,专为在 Android 设备上运行计算密集型运算从而实现机器学习而设计。NNAPI 旨在为更高层级的机器学习框架(如 T...

RecyclerView中DiffUtil的一些注意事项

见微知著。

节能刷新 移动设备屏幕大小有限(不得不说我是顽固的小屏爱好者,大于5.5寸难以接受,时代已经抛弃我了哈哈),列表(List)可以说是一个出现非常高频的交互设计。大多数情况下我们的列表不仅仅是一次性加载本地数据,而要应付来自网络的各种动态内容,可能是增加、删除等操作。 在Android开发中,一个耳熟能详的方法就是 notifyDataSetChanged ,在适配器(Adapter)的设...

MTK设备上DuraSpeed导致Service无法启动的问题

知其所以然。

没想到联发科还会改framework,有点小惊讶…… 背景 问题的起因是我们的系统应用无法调起与其他部门联动的某个Service组件了。查日志发现有这么一行: 1276-2330/system_process D/ActivityManager: bringUpServiceLocked, suppress to start service! 提示内容大概是说Service...

Win10家庭版如何正确关闭自动更新

专治各种小毛病。

之所以不更新,是因为你太好用,舍不得你出问题。哈哈哈哈哈哈啊哈哈哈! 背景 Windows10还是很漂亮很好用的,大部分同学购买的品牌机也都会预装正版Win10,不过是家庭版的(个人用户一般也不需要专业版,比如我这种装双系统的只把Win10拿来打游戏),然而,家庭版系统要用常规手段是没法彻底关闭自动更新的。 微软也非常不给面子,各种给你悄悄打开,当你关机时,你会吃惊地发现“更新并...