You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
注册

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

火山引擎 最新活动