关键词:
一、Android 中的 Java 源码打包流程
Java 程序在 Java 虚拟机执行前 , 需要先将 Java 源码通过 javac 编译成 .class 字节码文件 , 然后才能在虚拟机中运行 ;
1、Java 源码打包流程
Android 中的 Java 源码打包流程 : 参考 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 ) 博客 ;
① 编译资源 R.java 源码 : 使用 AAPT 工具打包资源文件 , 生成 R.java , resources.ap 文件 ;
② 编译 AIDL 接口源码 : 使用 AIDL tool 工具 , 处理 AIDL 文件 , 生成对应的 Java 文件 ;
③ 编译 Java 源码 : 使用 javac 工具编译 Java 源码为 class 字节码文件 ;
④ 打包 Class 字节码 : 使用 dx 工具将 class 字节码文件打包成 dex 字节码文件 , 这是 Dalvik 虚拟机字节码文件 ;
⑤ 生成未签名 APK : 使用 apkbuilder 工具生成未签名的 apk 文件 ;
⑥ 签名 : 使用 jarsigner 工具对 apk 文件进行签名 , 生成签名后的文件 ;
⑦ 对齐 : 使用 zipalign 工具对签名后的 apk 文件进行对齐操作 ;
2、字符串常量池
XML 文件在编译时 , 会被编译成二进制文件 , 二进制文件比 XML 文件占用的空间更小 , 所有在 XML 文件出现过的字符 , 都会放入字符资源池 , 可以去重复 ;
通过 resources.arsc 文件中的资源字符串的 字符串内容 偏移量 , 确定有哪些字符 ;
二、Android 中的字节码操作方式
操作字节码的 2 2 2 种方式 :
- AOP : Aspect Oriented Programming , 面向切面编程 ;
- APT : 编译时技术 , 注解 , 注解处理器 , Android 依赖库 , 3 3 3 件套 ; 参考 Android APT 专栏 ;
AOP 和 APT 都可以用于字节码插桩操作 :
- AOP 的插桩时机是 .class 字节码文件打包为 .dex 文件过程中 ;
- APT 的插桩时机是 .java 文件编译成 .class 字节码文件时 , 进行的 , 编译时进行字节码插桩 ;
ButterKnife , Dragger2 , GreenDao , ARoute 都是基于 APT 编译时技术进行开发的 ;
android字节码插桩——详细讲解附带demo(代码片段)
前言什么是字节码插桩字节码插桩就是在构建的过程中,通过修改已经编译完成的字节码文件,也就是class文件,来实现功能的添加从技术上来说,字节码插桩是自定义Gradle插件、ASM、Java字节码、切面编程的综合... 查看详情
asm字节码插桩全流程解析(代码片段)
...,还有没有伙伴不太了解buildSrc的,其实buildSrc是Android中默认的插件工程,在gradle编译的时候,会编译这个项目并配置到classpath下。这样的话在buildSrc中创建 查看详情
android-asm字节码插桩与apt原理补充
ASM字节码插桩与APT原理补充技术点APT补充1.策略模式2.SPI机制分析3.通过javac源码分析APT执行原理ASM1.逆波兰表达式2.java文件转换class文件基本规则3.ASM框架完成字节码插桩APT在java文件编译成class文件的过程中,apt可以监视在这... 查看详情
字节码插桩aop技术(“字节码插桩“技术简介|aspectj插桩工具|asm插桩工具)
...,多态;AOP面向切面编程,主要针对某个动作进行开发;如:给Android中所有的Activity添加安全策略,如 查看详情
androidgradle中的字节码插桩之asm(代码片段)
前言 逐步整理的一系列的总结: AndroidGradle插件开发初次交手(一) AndroidGradle的基本概念梳理(二) Android自定义Gradle插件的完整流程(三) Android自... 查看详情
android——面向aop编程(代码片段)
前言:最近在工作中接触到了字节码插桩相关的知识,所以以本文来整理并实践一下相关的知识体系。字节码插桩:AOP编程 打包流程自定义GradleTask查看,识别Java字节码ASM使用TransformAOP编程思想:面向切面编程思想... 查看详情
android——面向aop编程(代码片段)
前言:最近在工作中接触到了字节码插桩相关的知识,所以以本文来整理并实践一下相关的知识体系。字节码插桩:AOP编程 打包流程自定义GradleTask查看,识别Java字节码ASM使用TransformAOP编程思想:面向切面编程思想... 查看详情
看这一篇,你也可以自如的掌握字节码插桩(代码片段)
...辑过程中各部分之间低耦合的隔离效果。字节码插入位置Android开发者应该会熟悉这个图片(来自于AndroidDeveloper:在Compilers中具体为:字节码插桩就是在.class文件转为.dex之前,修改.class文件从而达到修改代码的目的。... 查看详情
字节码插桩android签名机制(生成android签名文件|分析签名文件|签名文件两个密码的作用|三种签名方式)(代码片段)
文章目录一、Android签名机制二、生成Android签名文件三、分析签名文件四、签名文件两个密码的作用五、三种签名方式一、Android签名机制APK文件签名是为了保证APK来源真实性,以及APK文件没有被修改过;APK签名基于Hash散列算法进行... 查看详情
android-asm字节码插桩与apt原理补充
ASM字节码插桩与APT原理补充技术点APT补充1.策略模式2.SPI机制分析3.通过javac源码分析APT执行原理ASM1.逆波兰表达式2.java文件转换class文件基本规则3.ASM框架完成字节码插桩APT在java文件编译成class文件的过程中,apt可以监视在这... 查看详情
java字节码插桩技术
相关文章: 字节码插桩--你也可以轻松掌握 查看详情
androidgradle插件gradle构建工具简介②(android项目构建打包流程|构建工具发展->手动配置->ant->maven->gradle)
文章目录一、Android项目构建打包流程二、构建工具发展(手动配置->Ant->Maven->Gradle)一、Android项目构建打包流程Android项目构建参考:【Android安装包优化】APK打包流程(文件结构|打包流程|安装流程|安卓虚拟机)【字节码插桩】A... 查看详情
asm字节码插桩:隐私合规方法检测(代码片段)
...来工信部对于应用的隐私合规安全问题愈加重视,对Android平台的管控程度也要比IOS平台严格很多,很多不合规的应用也先后被下架要求整改。笔者就曾遇到过加班整改隐私合规的问题,隐私合规问题主要针对两个方... 查看详情
字节码插桩之javaagent(代码片段)
字节码插桩之JavaAgent本篇文章将详细讲解有关JavaAgent的知识,揭开它神秘的面纱,帮助开发人员了解它的黑魔法,帮助我们完成更多业务需求WhatisJavaAgentJavaAgent又称为Java探针,它提供了向现有已编译的Java类添加... 查看详情
最通俗易懂的字节码插桩实战(gradle+asm)(代码片段)
好文推荐:作者:miaowmiaow前言字节码插桩,看起来挺牛皮,实际上是真的很牛皮。但是牛皮不代表难学,只需要一点前置知识就能轻松掌握。GradleTransformGoogle在AndroidGradle的1.5.0版本以后提供了TransfromAPI,... 查看详情
字节码插桩之javaagent(代码片段)
字节码插桩之JavaAgent本篇文章将详细讲解有关JavaAgent的知识,揭开它神秘的面纱,帮助开发人员了解它的黑魔法,帮助我们完成更多业务需求WhatisJavaAgentJavaAgent又称为Java探针,它提供了向现有已编译的Java类添加... 查看详情
字节码插桩之javaagent(代码片段)
字节码插桩之JavaAgent本篇文章将详细讲解有关JavaAgent的知识,揭开它神秘的面纱,帮助开发人员了解它的黑魔法,帮助我们完成更多业务需求WhatisJavaAgentJavaAgent又称为Java探针,它提供了向现有已编译的Java类添加... 查看详情
androidgradle中的字节码插桩之asm(代码片段)
目录前言一ASM 1.AOP 2.ASM二ASM中几个重要的类 1.ASM之ClassVisitor 2.ASM之AdviceAdapter5.ASM之ClassReader和ClassWriter三实例1.为所有的方法添加调用日志实例2.AutoLogClassVisitor3. AutoLogAdviceAdapter4.Transform输出的路径 四总结... 查看详情