天问

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

【native层方法替换热修复原理】之AndFix原理解析

dexposed是阿里推出的一个AOP框架,github官网地址https://github.com/alibaba/dexposed, 从官网描述来看最初定位是用来解决面向切面编程的一些问题,不过因为具备java方法hook的效果,所以在刚推出时也被开发者当作代码热修复框架。该框架实现原理绝大部分参考了大名鼎鼎的Xposed。不过在我看来DexPosed和Xposed相比是巨大的进步和思维的创新,因为Xposed的使用需要root,因此只具备研究价值而不具备应用价值(黑灰产等不符合价值观的应用不在我们考虑范围之内…

2018年10月21日 0条评论 970点热度 3人点赞 天问 阅读全文
热修复

【native层方法替换热修复原理】之native方法在dalvik虚拟机中的执行流程

在前面【native层方法替换热修复原理】之虚拟机运行时数据结构ClassObject/Class和Method/ArtMethod 中我们讲到了2个重要的数据结构ClassObject和Mehod,也提到了这2个数据结构中的一些重要成员,这一节就来看看native方法在dalvik虚拟机中是如何执行的。也就是dalvik虚拟机中JNI模块的实现原理。 我们已经知道jni中native方法包括2种情况:一种是静态注册,一种是动态注册。不清楚的同学可以查看专栏:NDK开发从入门到精通。 这2种方式注册的native函…

2018年10月14日 0条评论 712点热度 3人点赞 天问 阅读全文
热修复

【native层方法替换热修复原理】之虚拟机运行时数据结构ClassObject/Class和Method/ArtMethod

通过前面热修复与动态加载专栏热修复系列文章的讲解我们知道了以下2点重要信息 在安卓java层,描述dex文件的数据结构是DexFile这个类,PathClassLoader对dex文件的加载在java代码中最终都是委托DexFile调用loadDex完成的 在native层,在dalvik模式下描述dex文件中一个类的数据结构是ClassObject这个类 那么这里就有了另外一个问题,在dalvik虚拟机运行时环境中类和方法是如何描述的呢?Art模式下又是如何描述的呢? 根据前面dex中类的加载流程和unexpec…

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

【React Native】使用Code Push进行热更新

很多时候在实际开发中考虑使用RN的原因不仅仅是因为使用js开发能使得UI界面达到跨平台特性,还有一个重要原因就是热更新方便。对于需要经常使用热更新来发布新版本的App来说,这是RN的一个重大优势。因为RN的热更新非常方便。下面重点讲解下使用微软提供的CodePush来进行热更新。 CodePush是微软提供一个应用中心云服务平台(CodePush is an App Center cloud service),或许是考虑到RN的影响力,CodePush内部集成了对RN代码的热更新功能,即react-native-c…

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

【React Native】js端调用安卓原生模块及2端互相通信

前面React Native编译常见问题解决和官方demo分析一文介绍了FaceBook的RN官方demo,初步介绍了官方demo的一些重要的模块及其作用。这一节就来讲解下如何在js端调用安卓原生模块,以及js端和安卓原生模块之间的互相通信的几种方式和他们的特点。因为对于任何一个跨语言的开发框架来讲,在开发过程中2端之间的相互调用和消息传递是非常基础和也是非常重要的。就像NDK开发(java和c/c++互相调用)和WebView使用一样(java和js互相调用)。 这里以改造官方demo为例,因为自己接触RN是因为…

2018年9月22日 0条评论 1185点热度 0人点赞 天问 阅读全文
安卓开发

React Native编译常见问题解决和官方demo分析

React-Native是FaceBook在2015年推出的一个能够使用javascript语言开发原生App的框架(A framework for building native apps with React)。为何叫做React-Native呢?个人理解是因为该框架的js代码部分是基于React.js这个开源组件的,用React.js开发native应用(React Native lets you build mobile apps using JavaScript. It uses the same des…

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

【NDK开发之】SDK体积优化最佳实践

先交代下背景,我们的SDK是一个包含so的aar,主要包括java代码以及so 2大部分,基本不含资源文件。为了安全我们将SDK的核心逻辑放到so中用c/c++代码实现。但是由于我们是SDK,在给我们客户接入的过程中发现某些客户会非常在意体积。尽管实际上我们的体积相对竞品而言已经小了约1M了,但是某些客户仍然要求(期望但不强制)接入我们的SDK后体积增加不能超过500kb同时包含5种主流abi。所以为了给客户更好的用户体验,需要考虑优化SDK的体积,经过一番调研和实践之后减小的体积还是比较客观的。 首先需要明确的是…

2018年9月15日 0条评论 1080点热度 1人点赞 天问 阅读全文
安卓开发

安卓应用内多语言设置

安卓应用内多语言设置其实不难,但是适配存在很多坑,我把这类问题归属为难度不大,但需要经验的那一类问题,因为适配会存在很多坑,换而言之就是要把这个功能点做好如果是第一次接触肯定会踩很多坑浪费很多时间。网上关于这方面的介绍也很多,但是很多都是几年前的文章,实际实践中发现在某些机型上或许原先起作用的方法现在不起作用了,尤其是8.0系统。所以本博客简单做个记录。 实现多语言一般遵循如下三个步骤 创建各个语言的字符串资源文件 在需要进行语言展示的地方使用R.string.xxx(如果是xml中文字展示直接使用@string/…

2018年7月21日 0条评论 1186点热度 1人点赞 天问 阅读全文
LLVM

llvm IR指令与llvm开发中对应的类与API

在llvm中间语言IR介绍中介绍了llvm中间语言IR相关的语法,重点介绍了指令相关的语法,llvm相关的语法远不止这些,之所以重点介绍指令相关的语法是因为我们学些llvm更多的是为了进行相关中间代码的优化,即基于llvm框架进行开发。而llvm开发本质上就类似用指令去完成函数功能,所以除了学习掌握中间语言IR的语法之外,更需要学会使用llvm提供给我们的API去实现这些功能,也就是需要掌握IR中相应指令在llvm中对应的类与API接口。 llvm的官方文档地址为:http://llvm.org/doxygen/m…

2018年7月14日 0条评论 2664点热度 2人点赞 天问 阅读全文
未分类

入职一年的一点感想

不知不觉已经毕业一年了,真的得感慨时光过得真快,很多事情仿佛还在昨天,自己还清晰的记得自己第一次踏上杭州的土地,杭州的地铁上放着阿里巴巴上市的宣传视频;在去网易大厦面试的时候路过阿里巴巴园区,自己兴奋的拍下了2张照片。现在在过2天就是自己入职网易一周年的日子,入职网易一年以来来觉得自己收获还是非常大的,不论是技术层面还是非技术层面,在技术上觉得自己最大的收获就是以下2点: 自己快速上手新项目和快速学习新领域知识的能力得到很大提升。在我印象中在大学自学安卓入门应该花了至少半年左右的时间,但是现在自己学习一个新领域知识…

2018年7月1日 0条评论 956点热度 15人点赞 天问 阅读全文
LLVM

llvm中间语言IR介绍

首先使用编译器前端clang执行如下命令即可得到中间语言IR, clang -emit-llvm -S ori_cpp_file -o out_ir_file 其中的ori_cpp_file表示原始的cpp文件,out_ir_file表示编译后输出的IR文件。执行该命令后即会在out_ir_file路径下生成源cpp文件的llvm的汇编代码。该命令等同于执行如下命令: clang -emit-llvm -S -c ori_cpp_file -o out_ir_file 如果不加-S参数那么生成的会是源cpp文件的二…

2018年6月18日 0条评论 1226点热度 6人点赞 天问 阅读全文
12345…6

天问

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

最新 热点 随机
最新 热点 随机
【插件化】从插件化看Activity的启动流程 你真的会用View的post方法吗 【设计模式之】适配器模式 【设计模式之】代理模式与动态代理技术(JDK自带与CGLIB)
python文件操作之目录和路径 从Wnidows迁移到linux系统引起的bug谈谈python中subprocess.Popen的shell参数 【设计模式之】OOP六大基本原则与单例模式 【NDK开发之】使用cmake编译管理cpp文件
小伙伴们(排名不分先后)

尼古拉斯赵四

布兰柯基

 

COPYRIGHT © 2022 天问 ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang