android-如何在生成过程中正确生成XML资源文件?

android-如何在生成过程中正确生成XML资源文件?,第1张

概述我需要在构建过程中生成原始XML文件(可通过@raw/filename访问的“原始”文件).我一直在尝试使用挂钩在preBuild上的自定义Gradle任务来完成此任务.然后,此任务将收集所需的所有要求,并在build/intermediates/res/main/raw下生成文件.到目前为止,一切都很好.我可以看到

我需要在构建过程中生成原始XML文件(可通过@ raw / filename访问的“原始”文件).

我一直在尝试使用挂钩在preBuild上的自定义Gradle任务来完成此任务.然后,此任务将收集所需的所有要求,并在build / intermediates / res / main / raw下生成文件.

到目前为止,一切都很好.我可以看到文件已正确生成.但是,我似乎无法从我拥有的任何其他XML资源文件中访问它.

我尝试将目标目录更改为build / generated / source / res / main / raw,但问题仍然存在.

将其更改为src / main / res / raw可以工作,但是然后我必须从git中排除生成的文件-我不想要那样.另外,似乎将生成的源文件与其书面对应文件驻留在同一目录中也很奇怪.

以下是我的自定义任务的简化代码段:

task(generateChangelogXml) {    def source = new file(rootProject.projectDir, "CHANGELOG")    def targetDir = new file(projectDir, "/build/intermediates/res/main/raw")    def target = new file(targetDir, "changelog_latest.xml")    def versionname = ""    def releaseDate = ""    def changes = new ArrayList<String>()    def reader = new BufferedReader(new fileReader(source))    def currline = ""    while ((currline = reader.readline()) != null) {        // Truncated for brevity    }    target.withWriter { writer ->        writer.write("<?xml version=\"1.0\" enCoding=\"utf-8\"?>\n")        writer.write("<changelog bulletedList=\"true\">\n")        writer.write("    <changelogversion changeDate=\"\" versionname=\"$versionname\">\n")        changes.forEach { change ->            writer.write("        <changelogtext>$change</changelogtext>\n")        }        writer.write("    </changelogversion>\n")        writer.write("</changelog>\n")    }}preBuild.dependsOn(generateChangelogXml)

我在这里想念什么吗?

解决方法:

好的,因此,在阅读了有关此问题的更多信息之后,我发现我们确实不能依靠现有文件夹(无论是在生成的文件夹还是中间文件夹中)来放置生成的文件,因为它们可能被其他任务覆盖和/或不可读完全没有

解决方案?为什么,只创建我们自己的文件夹!例如,这是我最终使用的内容:

def generatedResDir = new file("$buildDir/generated/local/main/res")

然后,将其用作每个生成的资源文件的基本目录.如果您像我一样,并且希望生成原始XML,请执行以下 *** 作:

def targetDir = new file("$generatedResDir/raw")def target = new file(targetDir, "changelog_latest.xml")

最后但并非最不重要的一点是,通过执行以下 *** 作将generateResDir添加为源目录:

sourceSets {    main {        res {            srcDirs += generatedResDir        }    }}

现在,您应该可以毫无问题地生成您选择的任何文件.

总结

以上是内存溢出为你收集整理的android-如何在生成过程中正确生成XML资源文件?全部内容,希望文章能够帮你解决android-如何在生成过程中正确生成XML资源文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1080793.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存