Skip to content

Commit 22d08b9

Browse files
author
tangxiaolv
committed
init
1 parent 5ca27f0 commit 22d08b9

File tree

3 files changed

+69
-243
lines changed

3 files changed

+69
-243
lines changed

.gitignore

Lines changed: 12 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,12 @@
1-
# Built application files
2-
*.apk
3-
*.ap_
4-
5-
# Files for the ART/Dalvik VM
6-
*.dex
7-
8-
# Java class files
9-
*.class
10-
11-
# Generated files
12-
bin/
13-
gen/
14-
out/
15-
16-
# Gradle files
17-
.gradle/
18-
build/
19-
20-
# Local configuration file (sdk path, etc)
21-
local.properties
22-
23-
# Proguard folder generated by Eclipse
24-
proguard/
25-
26-
# Log Files
27-
*.log
28-
29-
# Android Studio Navigation editor temp files
30-
.navigation/
31-
32-
# Android Studio captures folder
33-
captures/
34-
35-
# Intellij
36-
*.iml
37-
.idea/workspace.xml
38-
39-
# Keystore files
40-
*.jks
1+
/DexKnifePlugin/.idea/.name
2+
/DexKnifePlugin/.idea/compiler.xml
3+
/DexKnifePlugin/.idea/copyright/profiles_settings.xml
4+
/DexKnifePlugin/.idea/encodings.xml
5+
/DexKnifePlugin/.idea/gradle.xml
6+
/DexKnifePlugin/.idea/inspectionProfiles/Project_Default.xml
7+
/DexKnifePlugin/.idea/inspectionProfiles/profiles_settings.xml
8+
/DexKnifePlugin/.idea/misc.xml
9+
/DexKnifePlugin/.idea/modules.xml
10+
/DexKnifePlugin/.idea/qaplug_profiles.xml
11+
/DexKnifePlugin/.idea/runConfigurations.xml
12+
/DexKnifePlugin/.idea/vcs.xml

LICENSE

Lines changed: 0 additions & 201 deletions
This file was deleted.

README.md

Lines changed: 57 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,57 @@
1-
# Android-Easy-MultiDex
2-
Android傻瓜式分包插件
1+
#Android傻瓜式分包插件
2+
注1:不想看前半部分的话可以直接跳过到最下面配置部分。
3+
注2:本插件是基于[DexKnifePlugin 1.5.2](https://github.com/ceabie/DexKnifePlugin)优化改造而来,感谢ceabie的无私奉献。
4+
5+
##填坑之路
6+
`坑1:65536 ,So easy! `
7+
*原因:*Dalvik 的 invoke-kind 指令集中,method reference index 只留了 16 bits,最多能引用 65535 个方法。
8+
参考=>[由Android 65K方法数限制引发的思考](http://jayfeng.com/2016/03/10/%E7%94%B1Android-65K%E6%96%B9%E6%B3%95%E6%95%B0%E9%99%90%E5%88%B6%E5%BC%95%E5%8F%91%E7%9A%84%E6%80%9D%E8%80%83/).
9+
*解决:*
10+
```
11+
dependencies {
12+
compile 'com.android.support:MultiDex:1.0.1'
13+
}
14+
```
15+
继承 Application ,重写 attachBaseContext(Context)
16+
```
17+
@Override
18+
protected void attachBaseContext(Context base) {
19+
super.attachBaseContext(base);
20+
MultiDex.install(this);
21+
}
22+
```
23+
24+
`坑2:Too many classes in –main-dex-list ,what?`
25+
*原因:*通过上面的官方分包,已经把原Dex分为1主Dex加多从Dex,主Dex保留4大组件,Application,Annotation,multidex等及其必要的直接依赖。由于我们方法数已达到16W之巨,上百个Activity,所以成功的把主Dex又撑爆了。
26+
*解决:*
27+
gradle
28+
```
29+
afterEvaluate {
30+
tasks.matching {
31+
it.name.startsWith('dex')
32+
}.each { dx ->
33+
if (dx.additionalParameters == null) {
34+
dx.additionalParameters = []
35+
}
36+
dx.additionalParameters += '--set-max-idx-number=48000'
37+
}
38+
}
39+
```
40+
参考=>[Android Dex分包之旅](http://yydcdut.com/2016/03/20/split-dex/index.html)
41+
42+
`坑3:gradle 1.5.0之后不支持这种写法 ,what the fuck?`
43+
*原因:*官方解释Gralde`1.5.0`以上已经将(jacoco, progard, multi-dex)统一移到[Transform API](http://tools.android.com/tech-docs/new-build-system/transform-api)里,然而Transform API并没有想象的那么简单好用,最后翻遍Google终于找到一个兼容Gradle `1.5.0`以上的分包插件[DexKnifePlugin](https://github.com/ceabie/DexKnifePlugin)
44+
参考=>这篇[Android 热修复使用Gradle Plugin1.5改造Nuwa插件](http://blog.csdn.net/sbsujjbcy/article/details/50839263)比较好的介绍了Transform API的使用。
45+
46+
`坑4:NoClassDefFoundError ,are you kiding me?`
47+
*原因:*通过插件手动指定main dex中要保留的类,虽然分包成功,但是main dex中的类及其直接引用类很难通过手动的方式指定。
48+
*解决方式:*
49+
看了[美团Android DEX自动拆包及动态加载简介](http://tech.meituan.com/mt-android-auto-split-dex.html),他们是通过编写了一个能够自动分析Class依赖的脚本去算出主Dex需要包含的所有必要依赖。看来依赖脚本是跑不掉了。
50+
51+
`坑5:自定义脚本 ,read the fuck source!`
52+
插件的工作流程:
53+
54+
55+
56+
##配置部分
57+
`第一步:`

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy