天问

  • Blog
  • 热修复与动态加载
  • python爬虫
  • 专栏
    • 热修复与动态加载
    • NDK开发
    • 设计模式与架构
    • React Native
  • 好文转载
    • 计算机技术
    • 投资理财
    • 摄影与拍照技巧
  • 投稿
  • 关于本站及隐私政策
  • Github
StevenQ
为今天工作,为明天投资,为未来孵化一些东西!
安卓开发

安卓WebView使用与安全开发指南

在Android中WebView是一个非常重要的控件,虽然在很多情况下绝大部分开发者不会用到该控件,但个人觉得其重要程度丝毫不亚于TextView和RecycleView等我们常用控件,尤其是在hybrid开发中,作为高级开发工程师掌握WebView的使用以及安全问题是最基本的要求之一。 在绝大多数情况下,WebView不会仅仅只是用来进行UI展示,还会和用户进行UI交互同时响应用户的操作。这就涉及到web端的js代码和App端的java代码的相关通信了。 使用WebView有很多需要注意的一些细节,这些在前面讲解…

2018年6月2日 0条评论 420点热度 5人点赞 天问 阅读全文
字节码

使用javassist操作java字节码文件

在使用ASM操作java字节码中我们讲到过主流的修改java字节码的框架包括ASM和javassist,其中ASM的使用在使用ASM操作java字节码中已经讲解过了,这里为何打算讲下javassist操作java字节码文件呢?因为虽然javassist能够完成的功能ASM都能完成,但是在实际的开发过程中发现这2个库其实各具优点,它们分别适合在不同的场景下使用,换而言之,在不同的场景下选择合理的库能够使得我们开发时的代码量和开发时间大大缩短。因此推荐大家对这2个库的使用及其优缺点都能够掌握,这样在实际工作中遇到需要修…

2018年5月27日 0条评论 2395点热度 6人点赞 天问 阅读全文
安卓开发

使用Android Studio导出release的aar并进行混淆

通常情况aar是作为一个libary模块供主工程引用的,如果我们要导出aar也很容易,选中libary模块,然后点击AS上方菜单栏的build->make module,如图所示: 然后就会在libary模块的build/ouputs/aar/目录下生成编译好的aar,但是这样直接Make Module编译出来的aar默认是debug版本的,如果想要编译出release版本的aar需要在AS左下角的Build Variants中选择编译类型为release,如下所示: 然后Make Module之后outpu…

2018年4月29日 0条评论 2296点热度 4人点赞 天问 阅读全文
热修复

从Instant Run看安卓Application的启动流程与替换

关于Application启动流程网上有很多文章分析,但绝大多数文章都是为了讲Application启动流程而讲的,因此绝大多数文章就是分析源码流程,但是大家都懂的,Application启动流程的这个源码是相当的的复杂,绝大多数人看了不一定能够很好的理解,因为源码细节太繁琐,只见树木不见森林,没有一个很好的目标感,而我觉得分析源码最好的方式就是带着某个问题去看,即我要分析这个源码是为了解决什么疑惑?这样才能更好的做到点到为止,能放能收,不过分注重细节,也不漏掉某些重要细节(比如关于Instant Run中类加载器…

2018年4月15日 0条评论 1257点热度 16人点赞 天问 阅读全文
字节码

使用ASM操作java字节码

通常我们要修改一个java函数的方法都是修改这个函数的源码文件,然后重新编译生成修改后的字节码文件,如果代码我们自己写的还好,我们可以很方便的修改源码,但是考虑另外一个场景,如果代码不是我们自己写的,比如我们只有一个可执行jar包,但没有这个jar包的源码,然后想要修改这个类中的某个函数的功能,再比如一般而言jar包的开发者在在开发该jar包时肯定会有一些调试日志打印的,但是在发布该jar包的时候一般会通过混淆规则去除这些调试日志,我们在分析这些jar包的某些逻辑的时候可能需要像其开发者一样在运行时打印一些关键参数…

2018年3月22日 0条评论 1313点热度 8人点赞 天问 阅读全文
热修复

从ClassNotFoundException看java的类加载机制和Instant Run类加载部分的设计

我们都知道java中的类加载机制采用的是双亲委派机制(其实更严格的说法应该是未经加载过的类采用双亲委派机制加载,已经加载过的不是)。利用这种特性我们可以做到自定义ClassLoader加载额外路径的jar进而做到代码热更新,考虑如下一种场景:在宿主jar中存在一个类X,在该类中存在一个函数someFun,在另外一个插件jar中包含一个和宿主jar同包名同类名的类X,在该类中也存在和宿主jar中X的相同签名的函数someFun,在宿主jar的main函数中调用了类X的someFun函数,那么如何做到让main函数中调…

2018年2月23日 0条评论 1384点热度 16人点赞 天问 阅读全文
安卓开发

从System.loadLibrary()的执行流程看UnsatisfiedLinkError的几种情况

最近公司某部门的一款音乐产品反馈在某些用户的手机上启动有时候会出现崩溃,因为该产品接入了我们部门的云捕SDK,所以可以从后台看到崩溃后上传的日志,是加载某个so的时候出现了UnsatisfiedLinkError(强烈推荐开发者接入使用网易云捕SDK,http://crash.163.com/),然后我就在网上搜索了下UnsatisfiedLinkError相关的信息,发现网上包含了大量关于此异常的文章,在了解这个异常的过程中我意识到这个异常是一个对于上线产品而言出现概率较小(因为上线产品肯定是经过测试的,因此出现…

2017年12月9日 0条评论 1599点热度 5人点赞 天问 阅读全文
安卓安全

安卓源码的下载与编译

最近在研究对脱壳工具dexhunter进行自己需求的定制的时候涉及到了安卓源码的编译,因此记录一下,编译安卓源码是一个坑坑不息之路,各种让你意向不到的错误都会出现,而且因为编译环境的不同,每个人出现的错误可能完全不一样,因此在网上找的解决方案可能对你的环境而言根本不起作用,谁搞过谁就知道,如果说你能够第一次编译就成功的话,那我只能说你可以去买彩票了。 PS:最好自己下载安卓源码编译而不要使用从网上别人分享的网盘下载下来的源码编译,自己在使用别人下载的源码编译的时候遇到过各种奇怪的问题,但是使用自己从谷歌官网下载的源…

2017年10月21日 0条评论 1277点热度 15人点赞 天问 阅读全文
热修复

dex中类的加载流程和unexpected DEX异常

在也谈安卓dex的动态加载与MultiDex和热修复中我们讲解了安卓dex文件的加载过程,那么dex文件加载到内存后类的加载流程是怎样的呢?为何被打上预校验的类与其引用的类不在同一个dex中会出现unexpected DEX异常呢?这就需要从安卓中类加载的native层代码寻找答案了。从native代码我们能够更加清楚的明白QQ空间热修复的插桩字节码的原理以及比QQ空间更优的解决办法。 前面说过加载一个类起始于ClassLoader中的loadClass方法,关键函数的调用流程如下: ClassLoader.loa…

2017年10月15日 0条评论 1208点热度 12人点赞 天问 阅读全文
热修复

也谈安卓dex的动态加载与MultiDex和热修复

在前面从java虚拟机ClassLoader到安卓dex动态加载之ClassLoader动态加载jar的文章中讲到了java中jar的动态加载,而安卓和java一样都是使用的java语言开发,因此最终文件肯定还是字节码,只不过安卓不在使用java虚拟机来加载这些字节码,而且字节码也不再是.class/jar的文件格式,而是安卓特有的dex文件格式。也正因为这些相似性,java中的类加载机制被安卓给借鉴过来了,只不过安卓实现了自己的类加载器,而不在是java中的那些ClassLoader,因为要加载的文件格式已经不同…

2017年10月8日 0条评论 1095点热度 10人点赞 天问 阅读全文
安卓安全

使用ClassLoader动态加载jar从而实现对jar包加密

最近一直在看安卓dex动态加载相关的文章,如MultiDex,热修复等。而这些本质上是使用ClassLoader进行dex的动态加载。因此回过头来把java中的ClassLoader这块仔细的研究了下,虽然之前也了解过Class Loader相关知识,但这次有了更加深刻的理解。 我们知道java虚拟机执行的是java字节码文件,即.class文件,当我们在Eclipse中创建一个java工程然后进行编译的时候会在工程的bin目录下生成我们在项目中创建的java文件对应的字节码文件,但是有没有想过一个问题就是我们项目…

2017年9月17日 0条评论 2235点热度 6人点赞 天问 阅读全文
12345…6

天问

追梦追自由,穷则独善其身,达则兼济天下

最新 热点 随机
最新 热点 随机
【插件化】从插件化看Activity的启动流程 你真的会用View的post方法吗 【设计模式之】适配器模式 【设计模式之】代理模式与动态代理技术(JDK自带与CGLIB)
python文件操作之目录和路径 安卓NDK开发之JNI函数动态注册 【设计模式之】观察者模式 从ClassNotFoundException看java的类加载机制和Instant Run类加载部分的设计
小伙伴们(排名不分先后)

尼古拉斯赵四

布兰柯基

 

COPYRIGHT © 2022 天问 ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang