gradle task脚本删除log日志

作者: 敖大胆 | 来源:发表于2016-09-21 16:30 被阅读612次

gradle task脚本删除log日志

正在学习gradle,所以不多说直接上代码

build.gradle中加入以下task,然后在Android Studio 的Terminal中执行,windows输入gradlew -q dl,mac gradle -q dl,等一会你就发现所有Log.的代码被删除。

      task dl << {

      def rootPath = project.projectDir.absolutePath;

      def files = new File(rootPath + "/src");

      println files.getAbsolutePath()

      deleteLog(files)
    }

    void deleteLog(File listFiles) {
      if (listFiles != null) {
        listFiles.eachFile {File file ->
          if (file != null) {
            if (file.isFile()) {
              if (file.canRead() && file.name.endsWith(LogConstant.suffix)) {
                println file.getAbsolutePath()

                deleteFileLog(file);
              }
            } else if (file.isDirectory()) {
              deleteLog(file);
            }
          }
        }
      }
    }

--

    void deleteFileLog(File javafile) {
      def endFlag = 0;
      File ftmp = file(javafile.getAbsolutePath() + ".tmp");
      def printWriter = ftmp.newPrintWriter(LogConstant.charset);
      def reader = javafile.newReader(LogConstant.charset);
      def tmpline = null;
      String line;
      while ((line = reader.readLine()) != null) {
        if (line != null) {
          tmpline = line.trim();
          if (tmpline.startsWith(LogConstant.head) || endFlag == 1) {

            if (tmpline.endsWith(LogConstant.tail_end)) {
              endFlag = 0;
              printWriter.write(";\n")
              continue
            } else {
              endFlag = 1;
              continue
            }
          } else {
            printWriter.write(line + "\n");
          }
        }
      }

      reader.close();

      printWriter.flush();
      printWriter.close();

      javafile.delete();
      ftmp.renameTo(javafile.getAbsolutePath());
    }

--

    task LogConstant {
      ext.head = 'Log.'
      ext.tail_end = ');'
      ext.suffix = '.java'
      ext.charset = "utf-8"
    }

相关文章

网友评论

  • 一息尚存:这样做的话,代价是非常大的,不争建议使用,如果程序崩溃了,就可能会出现崩溃日志给出的崩溃位置和你源代码对不上的情况。如果你的代码是要进行代码混淆的,那就更老火了。
    敖大胆: @一息尚存 谢谢提醒,正式版出现错误后定位问题所在确实可能因为删除log日志导致行数变化,不过log删除的逻辑是会被替换成;,也就是多行的会变成一行,单行的正常。

本文标题:gradle task脚本删除log日志

本文链接:https://www.haomeiwen.com/subject/mwuaettx.html