Release构建中Android debuggable默认值为true的排查问题
排查Android debuggable属性异常为true的步骤
- 检查构建变体的build.gradle配置:不少项目会针对debug、release等不同构建变体单独配置属性,哪怕主build.gradle没设置,变体配置里可能误加了
debuggable true,比如buildTypes { release { debuggable true } }这种错误写法。 - 查看gradle.properties全局配置:检查项目根目录或模块下的gradle.properties文件,有没有
android.debuggable=true这类全局配置,这个参数会覆盖所有构建类型的默认值。 - 查看合并后的最终Manifest:用Android Studio打开项目的AndroidManifest.xml,切换到编辑器底部的Merged Manifest标签,这里能看到所有依赖库、本地变体合并后的完整Manifest,找到
android:debuggable属性后,旁边会标注它的来源文件(比如某个依赖的Manifest、变体专属的Manifest文件),直接定位问题根源。 - 排查gradle脚本的动态赋值:搜遍项目所有gradle文件里的
debuggable关键字,有些项目会用脚本动态设置这个属性,比如buildTypes.all { it.debuggable = true },或者根据环境变量、构建参数动态修改,这类配置很容易被忽略。 - 确认构建的变体类型:先确认给逆向团队的包是release变体还是debug变体——debug变体默认会自动开启debuggable,要是误把debug包当成release包发出去,自然会出现这个问题。
- 检查第三方插件的影响:如果项目用了加固、自动化打包类的gradle插件,有些插件会出于调试或自身逻辑需求,强制修改Manifest的debuggable属性,查看插件的配置代码或官方说明,确认是否有相关修改逻辑。
内容的提问来源于stack exchange,提问作者Aman Srivastava
相关产品推荐
相关产品推荐

