如何通过代码区分IntelliJ IDEA与Android Studio,在settings.gradle.kts中按需引入模块
解决方案
直接在settings.gradle.kts中通过读取IDE自带的系统属性判断运行环境,即可实现模块的按需引入,无需手动注释模块配置,参考实现代码如下:
// 判断当前编译环境是否为Android Studio val isAndroidStudio = System.getProperty("idea.platform.prefix", "") .contains("AndroidStudio", ignoreCase = true) // 引入所有环境通用的公共模块 include(":common-core", ":common-utils", ":business-common") // 仅在Android Studio环境下引入移动端专属模块 if (isAndroidStudio) { include(":android-app", ":android-service", ":android-thirdparty-adapter") }
逻辑说明
- 核心判断依赖JVM系统属性
idea.platform.prefix:Android Studio启动时会自动将该属性赋值为AndroidStudio开头的字符串,普通IntelliJ IDEA不会携带该标识,因此可以精准区分两种IDE环境 - 全程自动识别无需手动修改配置,在IDEA中打开项目时不会加载Android专属模块,不会出现模块编译报错的问题
- 如果需要在命令行环境触发Android专属模块的编译,可以在执行gradle命令时手动传入参数即可:
./gradlew assembleRelease -Didea.platform.prefix=AndroidStudio - 如需本地调试判断逻辑是否生效,可以在配置文件中加入打印语句验证属性值:
println("当前IDE平台标识:${System.getProperty("idea.platform.prefix")}")
内容的提问来源于stack exchange,提问作者Binary Enigma
相关产品推荐
相关产品推荐

