• Stars
    star
    198
  • Rank 196,898 (Top 4 %)
  • Language
    Java
  • License
    Other
  • Created over 6 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Analyze contribution rate of each module to the apk size

DexSplitter Solution

As we all know, Google has provided aapt plugin for parsing apk, we can get a list of apk files by using 'aapt l -v '. We can divide each res file(assets file) into the module project which it belongs to. But source code of the project can not be divided directly because it will be shrinked optimized and obfuscated. DexSplitter can help you to divide source code.

中文文档

Scenarios

  • Analyze contribution rate of each module to the apk size
  • Diff the size of each module in the apk for every sprint

Apk Split Result

Android Origin Build Release.apk

SplitDexApk

DexSplitter Build Release.apk

SplitDexApk

splitter_result.txt

SplitDexApk

ps:more details:extra/hack_description.txt extra/hook_details.txt

Demo Introduction

  •  The most important purpose of dexSplitter is to build apk which has special dex files
    
  •  You can use extra/dx.jar directly 
    
  •  Host app(lib:gson), library module moduleone(lib:GreenDAO), library module moduletwo(lib:universalimageloader)
    
  •  subdexeslist.txt is used for splitting dex, TestClassForMainDex.class is just a test file
    
  •  Third libs will not be obfuscated
    
  •  Android Support library is marked as android_sys
    
  •  subdexeslist.txt should not contain duplicated class files
    

Schematic Diagram

SplitDexApk

Implementation

  • Divide the dex files with class files
  • Build apk which has special dex files
  • Python files for collecting class files
  • Obfuscated class list for release version

Future

  • Signed apk
  • Generate tables about the proportion of module projects
  • Parse changes of dex files by comparing different apk versions
  • Divide the dex files by author, module etc.

License

  • Copyright (c) 2018-present, iQIYI, Inc. All rights reserved. Most source code in dexSplitter are MIT licensed. Some other source code have Apache licenses. Please refer to the LICENSE file for detailed information.

More Repositories

1

xHook

🔥 A PLT hook library for Android native ELF.
C
4,063
star
2

xCrash

🔥 xCrash provides the Android app with the ability to capture java crash, native crash and ANR. No root permission or any system permissions are required.
C
3,703
star
3

dpvs

DPVS is a high performance Layer-4 load balancer based on DPDK.
C
3,010
star
4

Andromeda

Andromeda simplifies local/remote communication for Android modularization
Java
2,275
star
5

Qigsaw

🔥🔥Qigsaw ['tʃɪɡsɔ] is a dynamic modularization library which is based on Android App Bundles(Do not need Google Play Service). It supports dynamic delivery for split APKs without reinstalling the base one.
Java
1,676
star
6

FASPell

2019-SOTA简繁中文拼写检查工具:FASPell Chinese Spell Checker (Chinese Spell Check / 中文拼写检错 / 中文拼写纠错 / 中文拼写检查)
Python
1,194
star
7

Neptune

A flexible, powerful and lightweight plugin framework for Android
Java
763
star
8

libfiber

The high performance c/c++ coroutine/fiber library for Linux/FreeBSD/MacOS/Windows, supporting select/poll/epoll/kqueue/iouring/iocp/windows GUI
C
748
star
9

LiteApp

LiteApp is a high performance mobile cross-platform implementation, The realization of cross-platform functionality is base on webview and provides different ideas and solutions for improve webview performance.
JavaScript
677
star
10

qnsm

QNSM is network security monitoring framework based on DPDK.
C
515
star
11

TaskManager

一种支持依赖关系、任务兜底策略的任务调度管理工具。API灵活易用,稳定可靠。轻松提交主线程任务、异步任务。支持周期性任务,顺序执行任务,并行任务等。
Java
476
star
12

Lens

功能简介:一种开发帮助产品研发的效率工具。主要提供了:页面分析、任务分析、网络分析、DataDump、自定义hook 、Data Explorer 等功能。以帮助开发、测试、UI 等同学更便捷的排查和定位问题,提升开发效率。
Java
407
star
13

xgboost-serving

A flexible, high-performance serving system for machine learning models
C++
138
star
14

auklet

Auklet is a high performance storage engine based on Openstack Swift
Go
93
star
15

lua-resty-couchbase

Lua couchbase client driver for the ngx_lua based on the cosocket API / 使用cosocket纯lua实现的couchbase的client,已经在爱奇艺重要的服务播放服务稳定运行5年多
Lua
79
star
16

lotus

lotus is a framework for intereact between views in Android
Java
73
star
17

HMGNN

Python
62
star
18

Navi

Java
18
star