《android开发艺术探索》读书笔记(十三)--综合技术

时间:2022-06-24 08:12:20

接上篇《android开发艺术探索》读书笔记(十二)--Bitmap的加载和Cache

No1:

使用CrashHandler来获取应用的crash信息

No2:

在Android中单个dex文件所能够包含的最大方法数为,这包含Android FrameWork、依赖的jar包以及应用本身的代码中的所有方法。

No3:

使用multidex来解决方法数越界

apply plugin: 'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion "22.0.1" defaultConfig {
applicationId "com.ryg.multidextest"
minSdkVersion 8
targetSdkVersion 22
versionCode 1
versionName "1.0" // enable multidex support
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
} afterEvaluate {
println "afterEvaluate"
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
def listFile = project.rootDir.absolutePath + '/app/maindexlist.txt'
println "root dir:" + project.rootDir.absolutePath
println "dex task found: " + dx.name
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex'
dx.additionalParameters += '--main-dex-list=' + listFile
dx.additionalParameters += '--minimal-main-dex'
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:multidex:1.0.0'
}

afterEvaluate区域是为了指定dex文件中包含哪些类,类名写在maindexlist.txt中

注意:multidex的jar包中的9个类必须也要打包到主dex中

代码支持

public class TestApplication extends Application {

    @Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
} }

Multidex方法虽然很好地解决了方法数越界这个问题,但也会导致应用启动速度会降低,是因为应用启动时会加载额外的dex文件。

No4:

Android动态加载技术(插件化技术)

No5:

反编译