构建

目录

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 来判断。

参考

results matching ""

    No results matching ""