实例介绍
Dexmaker是一个用于针对Dalvik VM进行编译时或运行时代码生成的Java语言API。它生成Dalvik .dex文件而不是Java .class文件。它具有简洁的API,可以紧密控制字节码的生成。代码逐条生成指令;如果需要,您可以使用自己的抽象语法树。由于它使用Dalvik的dx工具作为后端,因此您可以免费获得高效的寄存器分配和常规/宽度指令选择。 Dexmaker还包含用于类代理的常用代码生成器。如果只想进行AOP或类模拟,您不需要与字节码打交道。 这个示例生成一个类和一个方法,并将该类加载到当前进程中并调用其方法。
【实例截图】
【核心代码】
文件清单
└── dexmaker-d21d6c5fbcee684710bdbc9aa0d82aaf63a2c9d3
├── build.gradle
├── CHANGELOG.md
├── CONTRIBUTING.md
├── dexmaker
│ ├── build.gradle
│ └── src
│ └── main
│ └── java
│ └── com
│ └── android
│ └── dx
│ ├── AnnotationId.java
│ ├── AppDataDirGuesser.java
│ ├── BinaryOp.java
│ ├── Code.java
│ ├── Comparison.java
│ ├── Constants.java
│ ├── DexMaker.java
│ ├── FieldId.java
│ ├── Label.java
│ ├── Local.java
│ ├── MethodId.java
│ ├── stock
│ │ └── ProxyBuilder.java
│ ├── TypeId.java
│ ├── TypeList.java
│ └── UnaryOp.java
├── dexmaker-mockito
│ ├── build.gradle
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── android
│ │ └── dx
│ │ └── mockito
│ │ ├── DexmakerMockMaker.java
│ │ ├── InvocationHandlerAdapter.java
│ │ └── UnsafeAllocator.java
│ └── resources
│ └── mockito-extensions
│ ├── org.mockito.plugins.MockMaker
│ └── org.mockito.plugins.StackTraceCleanerProvider
├── dexmaker-mockito-inline
│ ├── build.gradle
│ ├── CMakeLists.txt
│ ├── external
│ │ ├── jdk
│ │ │ ├── jvmti.h
│ │ │ └── README.txt
│ │ └── slicer
│ │ ├── bytecode_encoder.cc
│ │ ├── code_ir.cc
│ │ ├── common.cc
│ │ ├── control_flow_graph.cc
│ │ ├── debuginfo_encoder.cc
│ │ ├── dex_bytecode.cc
│ │ ├── dex_format.cc
│ │ ├── dex_ir_builder.cc
│ │ ├── dex_ir.cc
│ │ ├── dex_utf8.cc
│ │ ├── export
│ │ │ └── slicer
│ │ │ ├── arrayview.h
│ │ │ ├── buffer.h
│ │ │ ├── bytecode_encoder.h
│ │ │ ├── chronometer.h
│ │ │ ├── code_ir.h
│ │ │ ├── common.h
│ │ │ ├── control_flow_graph.h
│ │ │ ├── debuginfo_encoder.h
│ │ │ ├── dex_bytecode.h
│ │ │ ├── dex_format.h
│ │ │ ├── dex_ir_builder.h
│ │ │ ├── dex_ir.h
│ │ │ ├── dex_leb128.h
│ │ │ ├── dex_utf8.h
│ │ │ ├── hash_table.h
│ │ │ ├── index_map.h
│ │ │ ├── instrumentation.h
│ │ │ ├── intrusive_list.h
│ │ │ ├── memview.h
│ │ │ ├── reader.h
│ │ │ ├── scopeguard.h
│ │ │ ├── tryblocks_encoder.h
│ │ │ └── writer.h
│ │ ├── instrumentation.cc
│ │ ├── reader.cc
│ │ ├── README.txt
│ │ ├── tryblocks_encoder.cc
│ │ └── writer.cc
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── android
│ │ └── dx
│ │ └── mockito
│ │ └── inline
│ │ ├── ClassTransformer.java
│ │ ├── DexmakerStackTraceCleaner.java
│ │ ├── IllegalClassFormatException.java
│ │ ├── InlineDexmakerMockMaker.java
│ │ ├── InvocationHandlerAdapter.java
│ │ ├── JvmtiAgent.java
│ │ ├── MockFeatures.java
│ │ ├── MockMakerMultiplexer.java
│ │ ├── MockMethodAdvice.java
│ │ └── UnmodifiableClassException.java
│ ├── jni
│ │ └── dexmakerjvmtiagent
│ │ └── agent.cc
│ └── resources
│ ├── dispatcher.jar
│ ├── mockito-extensions
│ │ ├── org.mockito.plugins.MockMaker
│ │ └── org.mockito.plugins.StackTraceCleanerProvider
│ └── README.txt
├── dexmaker-mockito-inline-dispatcher
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── android
│ └── dx
│ └── mockito
│ └── inline
│ └── MockMethodDispatcher.java
├── dexmaker-mockito-inline-extended
│ ├── build.gradle
│ ├── CMakeLists.txt
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── android
│ │ └── dx
│ │ └── mockito
│ │ └── inline
│ │ ├── extended
│ │ │ ├── ExtendedMockito.java
│ │ │ ├── MockedMethod.java
│ │ │ ├── MockedVoidMethod.java
│ │ │ ├── StaticCapableStubber.java
│ │ │ ├── StaticInOrder.java
│ │ │ ├── StaticMocking.java
│ │ │ ├── StaticMockitoSessionBuilder.java
│ │ │ ├── StaticMockitoSession.java
│ │ │ └── UnstableApi.java
│ │ ├── InlineStaticMockMaker.java
│ │ ├── MarkerToHandlerMap.java
│ │ ├── StaticClassTransformer.java
│ │ ├── StaticJvmtiAgent.java
│ │ └── StaticMockMethodAdvice.java
│ └── jni
│ └── staticjvmtiagent
│ └── agent.cc
├── dexmaker-mockito-inline-extended-tests
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── android
│ └── dx
│ └── mockito
│ └── inline
│ └── extended
│ └── tests
│ ├── EmptyActivity.java
│ ├── MockInstanceUsingExtendedMockito.java
│ ├── MockStatic.java
│ ├── SpyOn.java
│ ├── StaticMockitoSession.java
│ ├── StaticMockitoSessionVsMockitoJUnitRunner.java
│ ├── Stress.java
│ └── VerifyStatic.java
├── dexmaker-mockito-inline-tests
│ ├── build.gradle
│ ├── CMakeLists.txt
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ └── android
│ │ └── dx
│ │ └── mockito
│ │ └── inline
│ │ └── tests
│ │ ├── MemoryLeaks.java
│ │ ├── MockFinal.java
│ │ ├── MockNonPublic.java
│ │ └── MultipleJvmtiAgentsInterference.java
│ └── jni
│ └── multiplejvmtiagentsinterferenceagent
│ └── agent.cc
├── dexmaker-mockito-tests
│ ├── build.gradle
│ └── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── android
│ └── dx
│ └── mockito
│ └── tests
│ ├── BlacklistedApis.java
│ ├── CleanStackTrace.java
│ ├── GeneralMocking.java
│ ├── PartialClasses.java
│ └── Stress.java
├── dexmaker-tests
│ ├── build.gradle
│ └── src
│ ├── androidTest
│ │ └── java
│ │ └── com
│ │ └── android
│ │ └── dx
│ │ ├── AnnotationIdTest.java
│ │ ├── AppDataDirGuesserTest.java
│ │ ├── DexMakerTest.java
│ │ ├── examples
│ │ │ ├── FibonacciMaker.java
│ │ │ └── HelloWorldMaker.java
│ │ ├── stock
│ │ │ └── ProxyBuilderTest.java
│ │ ├── TypeIdTest.java
│ │ └── util
│ │ └── TestUtil.java
│ └── main
│ └── AndroidManifest.xml
├── gradle
│ ├── publishing_aar.gradle
│ ├── publishing.gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── LICENSE
├── NOTICE
├── README.md
├── RELEASING.md
└── settings.gradle
103 directories, 151 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论