Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo recuperar la ruta a ADB en build.gradle

Estoy tratando de iniciar la aplicación a través de la task gradle .

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

Pero este código no funciona y obtengo un error:
a problem occurred starting process 'command 'adb''

Sin embargo, cuando especifico la ruta de acceso a adb explícitamente, se inicia la aplicación.

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

Entonces, ¿cómo puedo obtener una variable que contiene la ruta y la transferencia a commandLine ?

  • ¿Cómo puedo mostrar los archivos de registro, System.out.println (), en la prueba de Android?
  • Android Studio Build / Limpieza
  • Android Studio - No se puede construir el proyecto - GradleConnectionException
  • Error de Gradle: Se permite acceso de escritura desde el hilo de envío de eventos sólo en android studio
  • Gradlew build freezing en mergeDebugResources
  • Android APK construido desde el estudio de Android y la consola tienen diferentes huellas digitales SHA
  • Diferencia entre el funcionamiento de pelusa a través del menú de Android Studio y la línea de comandos de gradlew
  • Gradle build-info.xml no se encuentra para la aplicación de módulo en Android Studio
  • 6 Solutions collect form web for “Cómo recuperar la ruta a ADB en build.gradle”

    Debe utilizar la lógica que ya tiene el complemento de Android Gradle para encontrar las ubicaciones de SDK y adb para asegurarse de que el script utiliza los mismos.

     # 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() 

    El problema fue resuelto.
    La variable debe contener

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

    Y la tarea completa parece

     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
    Otra forma sin utilizar 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 

    En Windows sólo puede registrar una application path de application path para adb.exe con el siguiente archivo .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" 

    Y sólo mantener su línea de comandos original

    Mi solución predeterminada para este problema es agregar adb a su variable de ruta de acceso para que pueda utilizar el comando adb desde cada ruta de acceso.
    Usted puede fijarlo eg de la consola como esto:

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

    Alternativa que puede establecer a través de la interfaz de usuario. Véase también esta explicación en java.com .

    Podemos conseguir si de la extensión androide.

    Android.adbExe

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.