带有Shell脚本的Android Studio Gradle自定义任务在构建时不起作用

时间:2019-06-07 12:58:11

标签: android android-studio android-gradle build.gradle sh

我已经加密了添加在代码库中的文件(API密钥,密码等)。我需要添加一个自定义任务(任务encIt)来解密文件(将调用crypto.sh进行解密)。此任务添加在build.gradle文件中。

我已经通过从终端调用“ gradle encIt ”进行了测试,它可以正常工作(按预期方式解密文件),但是我需要在每次构建gradle时都做到这一点;怎么做?

这是任务:

     task encIt(type:Exec) {
       println("WORKING")
       commandLine "./decrypt.sh"
       println("WORKING")
     }

这是脚本文件:

   #!/usr/bin/env sh
   echo "inside working"
   openssl enc -aes-256-cbc -d  -in ../encrypted.key   -out  key.txt                     -pass pass:Abcdk5551
  echo "inside working"

我已经测试过

senario 1:渐变加密

 result : WORKING
          inside working
          inside working
          WORKING
   The file is decrypted

senario 1:gradle / gradlew(无参数)

 result : WORKING
          WORKING
   The file is not getting decrypted

请帮助!

使用gradle版本5.4.1 的MacBook Pro android studio 3.4.1

1 个答案:

答案 0 :(得分:1)

编辑app/build.gradle,在代码下方添加

task encIt(type:Exec) {
    println("WORKING")
    commandLine "./decrypt.sh"
    println("WORKING")
}

afterEvaluate {
    assembleDebug.dependsOn encIt
    assembleRelease.dependsOn encIt
}

它与:

  1. 点击Android Studio上的run按钮
  2. 运行./gradlew build
  3. 运行./gradlew assemble
  4. 运行./gradlew assembleDebug
  5. 运行./gradlew assembleRelease