• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > 热修复-Nuwa学习篇,热修复-nuwa

热修复-Nuwa学习篇,热修复-nuwa

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了热修复-Nuwa学习篇,热修复-nuwa等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

热修复-Nuwa学习篇,热修复-nuwa


nuwa热修复是基于qq空间团队的思路,最近的热度话题了,很多种方案,自己先研究几种方案,基本上都各有优势,学习肯定得先挑个软柿子捏了,自己对比了一下,发现nuwa代码量少点,所以就决定了,先研究nuwa。

 

首先肯定得gradle

例子github上也都有,也可以下载别人的项目借鉴

然后进入application看看具体情况

跟着流程看下去

下面的方法才是重点

/**
* 笔记
* “类加载器”(ClassLoader),其作用是动态装载Class文件,每个ClassLoader对象在初始化时必须指定Class文件的路径
* 一般情况下,需要某个类时,只需使用import关键字包含该类就可以了,但是import有两个前提:
* 1.必须存在于本地,当程序运行时需要该类时,内部类装载器会自动装载该类,这对程序员来讲是透明的,
* 即程序员感知不到这一过程,
* 2.编译时必须在现场,否则编译不过,会因为找不到引用文件而无法编译,插件化class文件不满足此前提的。
*
* 在一般情况下,应用程序不需要创建一个全新的ClassLoader对象,而是使用当前环境已经存在的ClassLoader。
* 因为Javad的Runtime环境在初始化时,其内部会创建一个ClassLoader对象用于加载Runtime所需的各种Java类。
* 每个ClassLoader必须有一个父ClassLoader,在装载Class文件时,子ClassLoader会先请求父ClassLoader加载该Class
* 文件,只有当其父ClassLoader找不到该Class文件时,子ClassLoader才会继续装载该类,这是一种安全机制。
*
* dex文件是将所需的所有Class文件重新打包,打包的规则不是简单的压缩,而是完全对Class文件内部的各种函数表、
* 变量表等进行优化,并产生一个新的文件,这就是dex文件。
* 由于dex文件是一种经过优化的Class文件,因此要加载这样特殊的Class文件就需要特殊的类装载器,这就是
* DexClassLoader,Android SDK中提供的DexClassLoader类就是出于这个目的。
*/

/**
* classloader 分三个级别,最上级 : bootstrap classLoader 中间级:extension classLoader
* 最低级 app classLoader. 当需要加载某个类的时候,会看看这个类是否已经被加载了,如果没有,会请求app级来加载,
* app 请求 extension 级 extension 请求 bootstrap级, 由最高级来负责加载
* (这个就是双亲委派,委托 上两级的loader来做加载),如果高级的无法加载 则会将人物返回给 下一级 以此类推
* 最后如果双亲都不行 就由自己来加载.
* 为什么要用这个机制? 比如 java.lang.String 这个类,这个是jdk提供的类, 如果我们自定义个 包名:
* java.lang 然后在里面创建一个String 类, 当我在用String类的时候,根据前面所说,是由bootstrap级的loader
* 来进行加载的,这个时候它发现其实已经加载过了jdk的String了,那么就不会去加载自定义的String了,防止了重复
* 加载 也加大了安全性
*/

接下来就是使用了,知道了大致是个什么情况了就按照文档说明准备了

首先运行nuwa项目,跑起来,然后outputs下会生成一个nuwa的文件夹,把它复制到D盘下,这个随你喜欢(你的项目\app\build\outputs\nuwa)

然后就修改里面的一点内容,比如把里面某个输出改掉,然后用命令生成jar包(gradlew clean nuwaQihooDebugPatch -P NuwaDir=D:/nuwa)

执行效果如下:

 

接下来你会在你的项目文件夹下的 app\build\outputs\nuwa\qihoo\debug 中发现生成的jar文件,复制这个文件到你手机的根目录

 

 

接下来重新启动程序,发现代码已经更新

这就是开源的力量啊,要是纯属自己捣鼓得捣鼓到什么时候啊,其实才刚空下来研究,很多细节深处也还没搞懂,不过起码得把流程搞通,跑通是基础

前人栽树后人乘凉,我感觉浑身都很凉快,记录自己的学习之路,也供需要学习的参考学习

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 热修复-Nuwa学习篇,热修复-nuwa

相关文章

  • 2017-05-26Android应用:横竖屏切换总结,android切换总结
  • 2017-05-26android 在5.0以后不允许使用隐式Intent方式来启动Service,androidintent
  • 2017-05-26Android自定义ViewGroup打造各种风格的SlidingMenu
  • 2017-05-26实现图片拖动,图片拖动
  • 2017-05-26Android 6.0 开发者对系统权限的使用与练习(Permissions Best Practices)
  • 2017-05-26Android消息机制
  • 2017-05-26Android之数据存储的五种方法,android五种
  • 2017-05-26解决关于 在android studio 出现的 DELETE_FAILED_INTERNAL_ERROR Error while Installing APK 问题,whileinstallingapk
  • 2017-05-26回收ImageView占用的图像内存,imageview占用图像
  • 2017-05-26Android 6.0 运行时权限处理完全解析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • nagios分组出图代码实现讲解[2]
    • Android开发:程序目录结构详解
    • React Native Android入门实战及深入源码分析系列(2)——React Native源码编译
    • Android CursorAdapter的使用,cursoradapter使用
    • Android中View实现弹性滑动的方法——Android开发艺术探索笔记
    • 2.6.0 其他几种常用对话框基本使用
    • EventBus的使用,EventBus使用
    • android 获取GPS定位,androidgps定位
    • 手游项目总结,游项目总结
    • Android 环境搭建 以及 第一个android 程序的编写,搭建android

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有