【问题标题】:Rename directory during copy using Gradle使用 Gradle 在复制期间重命名目录
【发布时间】:2015-04-28 13:36:54
【问题描述】:

我正在使用 gradle 构建一个 android 应用程序。我正在将几个文件和文件夹复制到资产文件夹。我现在遇到了问题,有些文件的文件名可能太长,文件夹也是如此(aapt 无法处理超过 100 个字符的文件名)。

因此,我在复制操作期间重命名文件,如下所示:

    copy {
     from('A')
     into('B')
     rename ('too-long-filename', 'shorter-filename')
     rename ('too-long-directoryname', 'shorter-directoryname')
    }

但是,这对文件有效,但对目录无效。使用 gradle 在复制过程中是否有特殊的命令可以实现重命名?

错误提示:

错误代码: 1 输出: /home/curioity/AndroidStudioProjects/App/build/..way 目录名太长../: 错误:目录名无效,无法添加。

【问题讨论】:

  • 你收到错误了吗?
  • 是的,忘记添加了。错误始终是:“无法添加目录。目录名称无效。”我理解这一点,因为 android 打包工具确实不允许名称超过 100 个字符。重命名对文件有帮助,但对目录没有影响。不管有没有这行,错误都是一样的:rename ('too-long-directoryname', 'shorter-directoryname')
  • 在问题中发布错误。

标签: android gradle


【解决方案1】:

您可以尝试 FileTree 访问,但您必须保存目录,不能在遍历时更改这些目录。如果您只想缩短名称,可能可以使用常规子字符串表示法 longname[0..-10]

类似:

def dirs = []
fileTree("./longdirectoryname").visit { FileVisitDetails details ->
    if (!details.isDirectory()) {
        // rename
    } else {
        dirs.add(details.file)
    }
}

dirs.each { // rename directories here }

【讨论】:

  • 谢谢,这是我可以接受的解决方案 :) 不过,我倾向于添加一些预处理和过长的文件名以及调整所有引用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 2010-11-21
  • 2012-08-07
  • 2018-05-08
  • 2014-09-01
  • 2016-12-25
  • 2016-08-22
相关资源
最近更新 更多