Android Studio/Gradle 4.2.2布尔变量修改不生效异常问题咨询
问题成因排查
你遇到的修改不生效问题确实和你用的gradle:4.2.2版本的增量编译缺陷直接相关,排查方向如下:
- 确认是否为增量编译故障:出现异常时直接执行
./gradlew clean assembleDebug走全量构建,若运行后逻辑恢复正常,即可完全确认是增量编译未识别你的代码修改。你之前重启Android Studio清缓存无效,是因为该操作仅清理IDE自身的索引缓存,不会触及Gradle的构建缓存目录,两天后重新构建恢复正常本质是触发了全量构建,覆盖了旧的缓存产物。 - 该版本Gradle的已知问题:
gradle:4.2.2的Java增量编译索引对布尔类型成员变量的赋值变更、未修改方法签名的逻辑变更识别敏感度极低,经常会判定对应类无修改跳过编译,导致你本地改了代码,实际运行的还是旧的缓存代码。 - 代码隐性问题:你当前切换对局状态的
switchViewStubs方法中,仅修改了batting变量的值,未同步修改对应的balling变量以及inningType字段,后续如果有逻辑依赖这两个属性也会出现异常,建议补充同步修改的逻辑。
修复方案
- 临时规避:修改布尔相关逻辑后手动执行一次clean构建,或者在项目根目录
gradle.properties中添加配置org.gradle.incremental=false临时关闭增量编译,打正式包时再开启即可。 - 永久修复:升级Gradle插件版本到7.0及以上,该版本已经修复了大量增量编译识别错误的问题。
无Gradle的Android IDE替代选项
目前谷歌官方的Android开发体系完全基于Gradle,完全不依赖Gradle的集成开发环境可选范围很小,仅适合简单项目开发:
- Eclipse + ADT插件:谷歌2018年停止维护的旧Android开发方案,构建基于Ant,完全不需要Gradle,缺点是仅支持最高Android 9的系统特性,无法兼容新的API规范。
- AIDE:手机端Android开发IDE,内置独立构建工具,不需要Gradle即可完成代码编写、打包全流程,缺点是功能非常简陋,仅适合开发小型工具类应用。
内容的提问来源于stack exchange,提问作者Deepeshkumar
相关产品推荐
相关产品推荐

