- 博客(15)
- 资源 (3)
- 收藏
- 关注
原创 Flutter 自定义控件 仿 IOS UISegment
效果图:UISegment 在客户端开发中是很常用的组件,在Android 中我们可以用RadioButton来模仿效果。在flutter中也可以自己自定义一个模仿效果。参数 类型 用途描述 是否必须 titleNames List<String> 按钮名字的集合 必须传 defaultColor Color 选中item文字颜色 (这里默认Colors.white) 可不传 selectedColor Colo
2020-09-11 10:30:21
1890
原创 Android 插件化框架 Replugin 源码解读(五)startActivity
前面分析插件加载的过程中其实插件已经启动了,在callApp 方法中启动的插件的application,只是组件还没有加载,这里我们探索一下activity 组件的加载过程,startActivity。
2020-06-09 16:55:19
435
原创 Android 插件化框架 Replugin 源码解读(四)插件安装与更新、预加载
插件安装的过程只将APK移动(或复制)到“插件路径”下,不释放优化后的Dex和Native库,不会加载插件。可以在 插件路径data/data/包名/app_p_a (这里是apk插件,不同的插件会放到不同的文件夹下,app_p_n "p-n"插件路径) 下找到这个jar 文件一 . 插件的安装和更新 //com.qihoo360.replugin.RePlugin /** * 安装或升级此插件 <p> * 注意: <p&g...
2020-05-27 17:04:26
730
原创 Android 插件化框架 Replugin 源码解读(三)插件加载
//com.qihoo360.loader2.PmBase final void callAttach() { //获取ClassLoader mClassLoader = PmBase.class.getClassLoader(); // 挂载 for (Plugin p : mPlugins.values()) { p.attach(mContext, mClassLoader, mLocal);...
2020-05-25 18:45:58
631
原创 Android 插件化框架 Replugin 源码解读(二)hook系统ClassLoader
在上一章节中我们讲到了Replugin初始化的时候创建了插件管理进程作为服务端。其他工作进程作为客户端,然后分别在各自的进程中初始化自己要做的事情。创建了多个Binder对象用来完成客户端和服务端的信息交互。这一章我们继续看...
2020-05-25 18:45:40
1144
原创 Android 插件化框架 Replugin 源码解读(一)初始化
Android 插件化框架经过多年的发展已经出现很多成熟的方案。依然记得自己最早接触的DL框架,在能够让APP不经过安装就可以加载功能新模块,别提有多兴奋。再到之后的360的 DroidPlugin 等等,感谢开发者们无私的奉献,让大家受益匪浅。 接下来会有一个插件化系列的文章主要介绍一下当下一些插件化框架的设计思想和代码逻辑,深入理解插件化开发。Replugin 框架原...
2020-05-25 18:45:13
747
原创 MacOS 10.15 下 Android Q 源码 下载 编译 详解
最近换了台新的 MacBook Pro 之前没有在MacOS 下下载过编译过Android 源码,这次准备试一试,同时记录下遇到的问题。考虑到很多人是为了深入学习Android 的源码才来看这个文章都是新手上车,所以我准备从准备工作图文 一步步详细解释。准备工作 1. 硬盘空间,至少150G 建议搞个200G 或者更大 毕竟空间多了没事。少了就难受了。(下载完大概6...
2020-04-20 18:01:37
1336
1
原创 Android AIDL 初步探索
在Android 应用开发过程中涉及到进程间通信的场景不多,但是随着进程化开发的实现,单APP多进程的情况也越来越多。这就涉及到IPC进程间通信,而Binder 就是其中的一种,Android中很多情况 IPC 通信都是通过 Binder 实现的,其底层相对复杂,在应用层,我们可以理解Binder 就是一个Java 类,在进程间通信的 client -> service 结构...
2020-04-14 19:13:02
277
原创 Handler 工作原理和源码解析
在Android 开发中 有这样一个最基本的场景,当我们通过网络请求拿到服务端返给我们的数据后,我们需要把数据放到我们的页面上,一般网络请求的耗时操作我们都会在子线程中完成,如果这个时候你直接 去更新界面 就会报错,告诉你当前线程不是主线程无法更新界面操作,这个时候身边的老程序猿就会告诉你用Handler。 那么什么是Handler 呢 ,简单的来讲其实就是Andr...
2019-04-05 14:19:29
321
原创 Android 构建 修改apk 包名的gradle 插件 并上传本地maven 仓库
Android 工程打包的时候apk 的名字会使用默认的名字,每次发布还需要手工修改名字比较麻烦 之前 是在module 的build.gradle 中添加了 groovy 代码,但是在进行其他项目的时候还需要将代码添加到新的工程中不是很方便 所以觉得制作一个简单的gradle 插件 用起来方便点。 //第一步将创建一个library module ,然后将ap...
2019-03-07 12:41:56
423
原创 recyclerview 列表的item 拖拽 置顶 全选 删除 功能
很多时候我们需要对列表进行一些操作,比如说股票的自选列表 我们希望能够拖拽删除置顶等操作。在recyclerveiw 之前 我们使用listview 完成这些操作 有点点麻烦,但是在recyclerview 出来之后ItemTouchHelper类使得一切变得简单。 先上图看下效果 /** * Creates an ItemTouchHelper...
2018-11-26 15:42:59
457
原创 android 代码 混淆
代码混淆对于每个上线的应用来说,是安全方面最基本的操作。也是每个Android 开发者必备知识点,但是对于初学者来说这方面的内容很容易被忽略。毕竟不添加混淆 APP 也照样可以跑起来。当然这样的应用是很不安全的,利用 反编译工具 我们可以轻松 看到 工程的源码。很多信息就会直白的暴露别人面前。 上图是 我利用反编译工具 jadx-gui 查看的 我的一个 未经过 代码混淆打...
2018-10-31 20:04:54
178
原创 Android 反编译工具 apktool ,smali2java, dex2jar , jd-gui ,jadx-gui 的安装与使用
1.apktool 下载地址 https://ibotpeaches.github.io/Apktool/install/按照上面的步骤第一步:就是要让我们下载apktool.bat,把鼠标移至wrapper script上,然后右击,链接另存为。第二步:下载apktool.jar文件,点击find newest here,跳到下载页,我们能尽量下载最新版本。 第三步:把你下载...
2018-10-27 16:19:34
9118
3
原创 Manifest merger failed with multiple errors, see logs
Error:Execution failed for task ':test:processDebugManifest'.> Manifest merger failed with multiple errors, see logs在使用Android studio 开发 的时候遇到这样的报错 ,除了这个log,看不到其他有用的信息。我们可以使用命令行gradlew proc...
2018-10-24 10:31:57
345
原创 Android 自定义DialogFragment 以及设置宽高
DialogFragment 的特点是具有dialog 的 效果,同时又可以拥有Fragment 的生命周期,因此我们可以像管理Fragment 一样管理DialogFragment 。在 Android 中我们已经Dialog 类了,为什么还要增加一个DialogFragment 。在使用过程中DialogFragment 有事什么样子的呢,我们通过一个demo 来介绍...
2018-09-30 21:02:04
7230
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人