Как получить путь к ADB в build.gradle

Я пытаюсь запустить приложение с помощью task gradle .

 task runDebug(dependsOn: ['installDebug', 'run']) { } task run(type: Exec) { commandLine 'adb', 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity' } 

Но этот код не работает, и я получаю ошибку:
a problem occurred starting process 'command 'adb''

Однако, когда я укажу путь к adb явно, приложение запускается.

 task run(type: Exec) { commandLine 'D:\\android\\android-studio\\sdk\\platform-tools\\adb', 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity' } 

Итак, как я могу получить переменную, которая содержит путь, и передать его commandLine ?

Solutions Collecting From Web of "Как получить путь к ADB в build.gradle"

Вы должны использовать логику, которую уже имеет плагин Android Gradle для поиска местоположений SDK и adb, чтобы убедиться, что ваш скрипт использует те же самые.

 # Android Gradle >= 1.1.0 File sdk = android.getSdkDirectory() File adb = android.getAdbExe() # Android Gradle < 1.1.0 File sdk = android.plugin.getSdkFolder() File adb = android.plugin.extension.getAdbExe() 

Проблема решена.
Переменная должна содержать

 def adb = "$System.env.ANDROID_HOME/platform-tools/adb" 

И полная задача выглядит так:

 task run(type: Exec) { def adb = "$System.env.ANDROID_HOME/platform-tools/adb" commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity' } 

UPD
Другой способ без использования ANDROID_HOME

 task run(type: Exec) { def rootDir = project.rootDir def localProperties = new File(rootDir, "local.properties") if (localProperties.exists()) { Properties properties = new Properties() localProperties.withInputStream { instr -> properties.load(instr) } def sdkDir = properties.getProperty('sdk.dir') def adb = "$sdkDir/platform-tools/adb" commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity' } } 
 def androidPlugin = project.plugins.findPlugin("android") def adb = androidPlugin.sdkHandler.sdkInfo?.adb 

В Windows вы можете просто зарегистрировать application path для adb.exe со следующим .reg файлом:

 REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\adb.exe] @="D:\\android\\android-studio\\sdk\\platform-tools\\adb.exe" "Path"="D:\\android\\android-studio\\sdk\\platform-tools" 

И просто сохраните свою оригинальную командную строку

Мое решение по умолчанию для этой проблемы – добавить adb к переменной пути, чтобы вы могли использовать команду adb из каждого пути.
Вы можете установить его, например, из консоли следующим образом:

 set path=%path%;x:\path\to\adb 

Альтернативный вариант вы можете установить с помощью пользовательского интерфейса. См. Также это объяснение на java.com .

Мы можем получить, если с расширением android.

android.adbExe