项目地址: Box

文末扫码获取最新安装包 。

前言

有将近一个月没有更新文章了,一方面在啃 AOSP ,消化起来确实比较慢。在阅读的过程中,有时候上来就会陷入源码细节,其实这是没有必要的。刚开始更多的应该从整体脉络上去理解,摸清整个流程之后再去有针对性的看某些细节,才会事半功倍。下一篇应该会带来 Activity 启动流程分析

除了啃 AOSP 之外,剩下的时间都花在了开源项目的维护和更新上。一个是 Wanandroid 应用,主要技术栈是 Kotlin 、 MMVM 、 协程 ,开源了一段时间,一度觉得自己的 MVVM 写的还不错。在阅读相关架构文章以及 Google 重构了 plaid 之后,发现了自己的框架在 分离关注点 方面存在的一些问题。主要针对架构方面做了一些调整,目前来看还是比较符合 MVVM 的思想的。另外,也新增了网页版的新功能 “广场”。

说一说 Wanandroid 后续的更新计划,第一点,Jetpack 的深anzhuangb入使用。包括 Navigation 单 Activity 实现,Room ,Page 等类库的使用。第二点,完成一个 Jetpack Compse 版本,虽然 Compose 还是预览版,但我坚定看好 Compose,实在忍不住不去尝试一下,其实也已经在开发中了,完成了一些简单页面,有在学习 Compose 的朋友可以交流交流,项目地址在这里 -》 Wanandroid-Compose

Box V0.2.0

另一个开源项目就是今天要说的 Box 了,说来惭愧,已经好几个月没有更新了。这次带来了一个 "黑科技",对,没错,就是堪比 小米手机八项黑科技手机端反编译 功能。熟悉反编译的同学应该对这个功能很熟悉,但都是在 PC 上操作的,ApktoolJadx 等开源工具都提供了 PC 端的命令行操作或者图形界面。其实第一次看到手机端反编译功能是在 Trinea 的 Android 开发助手 上,当时感觉挺惊艳的,也比较好奇是如何实现的。anzhuangb

其实很简单,Apktool 和 Jadx 都是开源的,移植到 Android 上就可以了。大致浏览了一下 Jadx 源码,就开始了移植工作。鉴于 Jadx 源码的优秀设计,整个移植过程也没有费太大功夫。结合 Android 开发助手的 UI 设计,不难看出 Trinea 也是移植了 Jadx 源码。
box_app_managerbox_app_manager
下面的 gif 简单展示了反编译功能的使用:

nager

除此之外,针对之前的 当前 Activity 功能做了一些完善,主要替换了悬浮窗的依赖库,现在使用的是 EasyFloat。这是一个 Kotlin 版本,且更加稳定。下面也用一个 gif 演示一下该功能:

另外,在更新 AndroidUtilCodeKTX 的文件工具类部分时,为了能总结的尽量完整,就在 Box 里面增加了 文件管理 功能,界面相对简陋,但功能还算完整,后续会继续完善,大家可以提提 issue 。

针对 应用管理 功能,新增了对本地安装包文件的支持。无需安装也能直接查看各种应用信息。关于其中一个查看 AndroidManifest.xml 文件的功能,建议阅读 Android逆向笔记 —— AndroidManifest.xml 文件格式解析

最后

如果你有新奇的想法和功能,欢迎前来交流。

添加我的微信,加入技术交流群。

公众号后台回复 “Box”, 获取最新安装包。

文章首发微信公众号: 秉心说 , 专注 Java 、 Android 原创知识分享,LeetCode 题解。

更多最新原创文章,扫码关注我吧!

Box 黑科技 —— 支持手机端反编译 !Box 黑科技 —— 支持手机端反编译 !的更多相关文章

  1. 【反编译系列】一、反编译代码(dex2jar + jd-gui)和反编译资源(apktool)

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! [反编译系列]二.反编译代码(jeb) [反编译系列]三.反编译神器(jadx) [反编译系列]四.反编译so文件(IDA_Pro) 概述 ...

  2. 解决AndroidKiller APK 反编译失败,无法继续下一步源码反编译!

    报错背景 今天使用AndroidKiller V1.3.1,反编译一个APK,遇到如下报错: 当前 Apktool 使用版本:Android Killer Default APKTOOL 正在反编译 ...

  3. 编译原理--05 用C++手撕PL/0

    前言 目录 01 文法和语言.词法分析复习 02 自顶向下.自底向上的LR分析复习 03 语法制导翻译和中间代码生成复习 04 符号表.运行时存储组织和代码优化复习 05 用C++手撕PL/0 在之前 ...

  4. Atitit.反编译apk android源码以及防止反编译apk

    Atitit.反编译apk android源码以及防止反编译apk 1.1. Tool  apk逆向助手1 1.2. 二.使用dex2jar + jd-gui 得到apk的java源码1 1.3. 用 ...

  5. linux如何编译安装新内核支持NTFS文件系统?(以redhat7.2x64为例)

    内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修订了旧内核 ...

  6. ndk 编译 boost 库,支持serialization

    Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有望成为下一代C++标准库内容.在C+ ...

  7. SQL反模式学习笔记6 支持可变属性【实体-属性-值】

    目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需 ...

  8. 编译安装haproxy开启支持SSL

    1.下载程序包 # wget http://www.haproxy.org/download/1.7/src/haproxy-1.7.5.tar.gz # tar xvf haproxy-1.7.5. ...

  9. 编译安装FFmpeg 要支持xvid、x264、mp3、ogg、amr、faac

    编译安装FFmpeg 要支持xvid.x264.mp3.ogg.amr.faac libfaac    faac格式的编解码包libmp3lame    mp3格式编解码包libopencore-am ...

  10. Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)

    Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...

随机推荐

  1. Spring Security 学习记录

    一.核心拦截器详细说明 1.WebAsyncManagerIntegrationFilter 根据请求封装获取WebAsyncManager 从WebAsyncManager获取/注册Security ...

  2. Docker 配置国内镜像

    前言 当我们使用Docker pull 拉取镜像时,有时候因网络问题,导致获取镜像报错,如下 :Error response from daemon:Get https://registry-1.co ...

  3. ‎Cocos2d-x 学习笔记(3.1) Scene 场景与场景切换

    1. Scene 简介 游戏中我们看到/看不到的所有元素都是展示在场景之Scene上. 我们可以把场景比作放在地上的没盖纸箱,层Layer是纸箱里堆放的玻璃,Sprite等元素画在玻璃Layer上,这 ...

  4. 面试必问的Synchronized知道这些就可以了

    Synchronized关键字算是Java的元老级锁了,一开始它撑起了Java的同步任务,其用法简单粗暴容易上手.但是有些与它相关的知识点还是需要我们开发者去深入掌握的.比如,我们都知道通过Synch ...

  5. 基础安全术语科普(三)——RAT

    什么是RAT? RAT 即 Remote Access Tools (远程管理工具或远程访问工具)的缩写.通俗点说就是木马病毒. RAT 分为两部分——客户端 与 服务端. RAT的工作原理? 服务端 ...

  6. 【Go】高效截取字符串的一些思考

    原文链接:https://blog.thinkeridea.com/201910/go/efficient_string_truncation.html 最近我在 Go Forum 中发现了 [SOL ...

  7. Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类

    一.String类 1.创建字符串对象 创建字符串对象有两种方法:直接用“=”或者使用“new String(...)” String aStr = "TMZ"; String b ...

  8. Sqoop的安装和验证

    Sqoop是一个用来完成Hadoop和关系型数据库中的数据相互转移的工具,它可以将关系型数据库中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中. Kafka是一个开源 ...

  9. ES6---变量解构赋值

    1.数组的解构赋值 1.1 基本用法 解构赋值:在ES6中 ,按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构赋值.本质:这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量 ...

  10. Java编程思想——第14章 类型信息(一)

    运行时类型信息使得你可以在程序运行时发现和使用类型信息.Java是如何让我们在运行时识别对象和类的信息得呢? 主要有两种方式:1.传统RTTI,他假定我们在编译期间已经知道了所有类型:2.反射,它允许 ...