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


Ejecutar script de shell en Gradle

Tengo una configuración de compilación gradle al principio de la cual quiero ejecutar un shellscript en un subdirectorio que prepara mi entorno.

task build << { } task preBuild << { println 'do prebuild stuff:' } task myPrebuildTask(type: Exec) { workingDir "$projectDir/mySubDir" commandLine './myScript.sh' } build.dependsOn preBuild preBuild.dependsOn myPrebuildTask 

Sin embargo, cuando ejecuto la tarea llamando gradle myPrebuildTask o simplemente construyendo el proyecto, se produce el siguiente error:

  • Error al inflar la clase android.support.v7.widget.Toolbar. ¿Mi error o error?
  • Volley Android para manejar la redirección
  • Android Class Parcelable con ArrayList
  • ¿Cómo puedo adjuntar archivos de recursos de cadena diferentes durante las versiones de lanzamiento y depuración de hormigas android?
  • Volley - solicitud de http en bloqueo
  • La clase de aplicación de Android se llama dos veces
  •  > A problem occurred starting process 'command './myScript.sh'' 

    Por desgracia, eso es todo lo que tengo.
    También he intentado el siguiente – el mismo error.

     commandLine 'sh mySubDir/myScript.sh' 

    Uso Gradle 1.10 (necesario por Android) en Windows, dentro de una cáscara Cygwin. ¿Algunas ideas?

  • ¿Existe una biblioteca Java para simplificar Google Cloud Messaging?
  • Admob no puede encontrar vínculo de fondos de transferencia en el panel de admob de google
  • ¿Cómo hacer la escritura de texto de animación?
  • ¿Actualización de esquema GreenDAO y migración de datos?
  • ¿Cómo envío un SMS desde un shell?
  • Android Excepción: LoadedApk: forgetServiceDispatcher: 888 {AdWorker # 2
  • 4 Solutions collect form web for “Ejecutar script de shell en Gradle”

    utilizar

     commandLine 'sh', './myScript.sh' 

    Su propio script no es un programa en sí, por eso tiene que declarar 'sh' como el programa y la ruta a su script como un argumento.

    Una forma más genérica de escribir la tarea exec, pero portátil para Windows / Linux, si está invocando un archivo de comandos en el PATH:

     task myPrebuildTask(type: Exec) { workingDir "$projectDir/mySubDir" if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) { commandLine 'cmd', '/c', 'mycommand' } else { commandLine 'sh', '-c', 'mycommand' } } 

    Esto no aborda directamente el caso de uso para el OP (ya que hay archivo de script en el directorio de trabajo), pero el título de la pregunta es más genérico (y me dibujó aquí), por lo que podría ayudar a alguien tal vez.

    Desafortunadamente las opciones con commandLine no funcionaron para mí de ninguna manera y mi amigo encontrar otra forma con ejecutable

     executable "./myScript.sh" 

    Y la tarea completa sería

     task startScript() { doLast { exec { executable "./myScript.sh" } } } 

    Copié mi shell scipt en /usr/local/bin con permiso +x y lo usé como otro comando:

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