天问

  • Blog
  • 热修复与动态加载
  • python爬虫
  • 专栏
    • 热修复与动态加载
    • NDK开发
    • 设计模式与架构
    • React Native
  • 好文转载
    • 计算机技术
    • 投资理财
    • 摄影与拍照技巧
  • 投稿
  • 关于本站及隐私政策
  • Github
计算机技术
热修复

【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条评论 711点热度 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条评论 1142点热度 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条评论 1750点热度 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条评论 1184点热度 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条评论 1089点热度 2人点赞 天问 阅读全文
安卓开发

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

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

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

安卓应用内多语言设置

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

2018年7月21日 0条评论 1185点热度 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条评论 2663点热度 2人点赞 天问 阅读全文
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人点赞 天问 阅读全文
安卓开发

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

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

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

使用javassist操作java字节码文件

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

2018年5月27日 0条评论 2394点热度 6人点赞 天问 阅读全文
12345

天问

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

最新 热点 随机
最新 热点 随机
【插件化】从插件化看Activity的启动流程 你真的会用View的post方法吗 【设计模式之】适配器模式 【设计模式之】代理模式与动态代理技术(JDK自带与CGLIB)
超级易懂爬虫系列之爬虫入门爬取妹子图 超级易懂爬虫系列之使用scrapy+webdriver爬取动态网页 安卓ndk开发使用so注意事项集锦 【设计模式之】OOP六大基本原则与单例模式
小伙伴们(排名不分先后)

尼古拉斯赵四

布兰柯基

 

COPYRIGHT © 2022 天问 ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang