Android Studio Gradle路径变量来源及adb找不到问题求助
解决Gradle无法读取Android环境变量导致找不到adb的问题
问题背景
在Gradle构建Android应用时,执行commandLine 'adb', 'get-state'报错A problem occurred starting process 'command 'adb'',但bash终端和Android Studio本身能正常识别adb。通过Gradle任务验证发现:
ANDROID_HOME环境变量为null- Gradle的PATH中不包含Android SDK的
platform-tools等路径
解决方案
1. 从终端启动Android Studio(解决桌面启动不加载bash环境变量的问题)
如果是通过桌面快捷方式启动Android Studio,它不会加载~/.bashrc或~/.profile里的环境变量,导致Gradle继承不到配置。
- 操作步骤:
关闭Android Studio,打开bash终端,进入Android Studio安装目录的bin文件夹,执行./studio.sh启动IDE。此时Gradle会自动继承终端的环境变量。
2. 在Gradle脚本中手动指定SDK路径(无需依赖系统环境变量)
不想依赖启动方式的话,可以直接在项目中配置SDK路径:
- 在项目根目录的
gradle.properties中添加:android.sdk.dir=/home/<user>/Android/Sdk - 然后在模块级
build.gradle中调用adb时使用该路径:task checkAdbState(type: Exec) { def adbPath = "${project.property('android.sdk.dir')}/platform-tools/adb" commandLine adbPath, 'get-state' }
3. 给Gradle启动时传递环境变量
- 临时方案:在终端执行Gradle任务时手动传递环境变量:
ANDROID_HOME=/home/<user>/Android/Sdk ./gradlew checkAdbState - 永久方案:修改Gradle全局配置文件
~/.gradle/gradle.properties,添加:org.gradle.jvmargs=-DANDROID_HOME=/home/<user>/Android/Sdk
4. 通过Android插件API获取adb路径(推荐)
之前尝试sdkHandler报错是因为Android插件未提前应用,先确保模块级build.gradle顶部已应用插件:
plugins { id 'com.android.application' // 库项目用'com.android.library' }
之后可以直接通过插件API获取adb的绝对路径:
task checkAdbState(type: Exec) { doLast { commandLine android.adbExecutable, 'get-state' } }
验证环境变量是否生效
添加以下Gradle任务,执行后查看输出确认环境变量:
task printEnv { doLast { println "ANDROID_HOME: ${System.getenv('ANDROID_HOME')}" println "PATH: ${System.getenv('PATH')}" } }
内容的提问来源于stack exchange,提问作者Aum Patel




