TurboDex: 在Android瞬间加载Dex

众所周知,Android中在Runtime加载一个 未优化的Dex文件 (尤其在 ART 模式)需要花费 很长的时间. 当你在App中使用 插件化框架 的时候, 首次加载插件就需要耗费很长的时间.

Android 其它杂项

访问GitHub主页

共1404Star

详细介绍

TurboDex: Fast load dex in memory

Android Arsenal

中文

It is generally known that load an unoptimized Dex file at runtime in Android (especially in ART mode) would take a long time. When your App is using MultiDex or PluginFramework, You will find that this problem is hard to bear.

TurboDex was born to solve this problem, Like to opens the god mode for AndroidVM, after using TurboDex, no matter how much Dex file your need to load, it will be finished in a very short time.

Quick Start Guide

Building TurboDex

TurboDex has given you a pre-compiled version in /Prebuilt, if you need to custom the TurboDex, you need to install Android-NDK.

✘ lody@MacBook-Pro ~/TurboDex/TurboDex/jni> ndk-build                  
SharedLibrary  : libturbo-dex.so
Install        : libturbo-dex.so => libs/armeabi/libturbo-dex.so
SharedLibrary  : libturbo-dex.so
Install        : libturbo-dex.so => libs/x86/libturbo-dex.so

Config

Maven

<dependency>
  <groupId>com.github.asLody</groupId>
  <artifactId>turbodex</artifactId>
  <version>1.1.0</version>
  <type>pom</type>
</dependency>

Gradle

compile 'com.github.asLody:turbodex:1.1.0'

Usage

To use TurboDex, first add library to your project, Then write the following code in your Application:

@Override
protected void attachBaseContext(Context base) {
  TurboDex.enableTurboDex();
  super.attachBaseContext(base);
}

After your enable the TurboDex, No matter where you load the Dex, it will return quickly. Example:

new DexClassLoader(...):

DexFile.loadDex(...);

Others analysis and comment

http://note.youdao.com/share/?id=28e62692d218a1f1faef98e4e7724f22&type=note#/

然而,不知道这篇笔记的作者为什么会认为Hook模块是我实现的, 我并没有给Substrate那部分的模块自己命名,而是采用了原名:MSHook, 而且, 所有的Cydia源码我也保留了头部的协议申明,你知道源码的出处,却没有意识到这一点?

Remark

QQ Group: 535498571

推荐源码