Как получить путь к ADB в сборке.Gradle в
Я пытаюсь запустить приложение через gradle
task
.
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:androidandroid-studiosdkplatform-toolsadb', 'shell', 'am', 'start', '-n', 'com.example.myexample/.ui.SplashScreenActivity'
}
так как я могу получить переменную, содержащую путь и передать его commandLine
?
6 ответов
вы должны использовать логику, которую плагин 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
следующим :
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 в переменную path, чтобы вы могли использовать команду adb из каждого пути.
Вы можете установить его, например, с консоли следующим образом:
set path=%path%;x:\path\to\adb
альтернатива вы можете установить его через UI. См. также это объяснение наjava.com.