构建
目录
65K 方法数限制
简而言之:
编译器生成 classes.dex 文件时会给一个 dex 文件里的所有方法分配一个唯一 ID,而这个 ID 限于 Dalvik bytecode 操作数 16 bits 的限制,范围为 [0, 0xffff]。
在代码里区分 Debug 和 Release
使用 BuildConfig.DEBUG 并不总是准确,有几种方法来较为准确地区分当前是 Debug 版还是 Release 版,都是需要用 Gradle 脚本做一些配置。
方法一:
在 App 或者 Module 的 build.gradle 里添加配置:
gradle.startParameter.getTaskNames().each { task ->
println("task: " + task)
// library里 BuildConfig.DEBUG 默认一直是 flase 所以需要自定义
if (task.contains("Debug")) {
android {
defaultPublishConfig "debug"
}
} else if (task.contains("Release")) {
android {
defaultPublishConfig "release"
}
}
}
然后在代码里使用 BuildConfig.DEBUG 就准确了。
方法二:
buildTypes {
debug {
resValue "string", "build_config_type", "debug"
}
release {
resValue "string", "build_config_type", "release"
}
}
然后在代码里使用 context.getString(R.string.build_config_type) 值是否为 debug 来判断。