Android 使用Gradle在编译期间重命名布局文件

Android 使用Gradle在编译期间重命名布局文件,android,gradle,android-gradle-plugin,android-resources,gradle-task,Android,Gradle,Android Gradle Plugin,Android Resources,Gradle Task,我的Android Studio项目有两种产品风格——A和B。它们的资源文件夹中都有一个名为My_layout.xml的布局 我还希望在为flavor A构建项目时,在构建flavor b时将布局命名为A_my_layout.xml和b_my_layout.xml。 然后从源代码中,我将使用getResources().getIdentifier(“a_我的布局”,“布局”…)动态获取资源id 当我在编辑器(Android studio)中工作时,我希望版面的名称保持为my_layout.xml

我的Android Studio项目有两种产品风格——A和B。它们的资源文件夹中都有一个名为My_layout.xml的布局

我还希望在为flavor A构建项目时,在构建flavor b时将布局命名为A_my_layout.xmlb_my_layout.xml。 然后从源代码中,我将使用
getResources().getIdentifier(“a_我的布局”,“布局”…)动态获取资源id


当我在编辑器(Android studio)中工作时,我希望版面的名称保持为my_layout.xml,也就是说,我不希望在res/文件夹中的版面有一堆前缀。Gradle可以这样做吗?

老实说,我不明白你为什么要重命名它们,不管你是否动态加载资源,如果你有两种风格的布局,当你加载它们时,它会加载特定于你的风格的布局,但这是你的选择:)

如果您真的想重命名它们,我认为您可以通过创建重命名脚本并将其与预定义的预构建任务链接来实现这一点

类似这样的内容(应用程序级渐变):

要从gradle访问资源文件,上面有很多帖子,所以,您只需检查一下就可以了


总之,100%是可能的,您只需调整一些gradle脚本,并将它们链接到一些已经定义的任务,这些任务在您构建/运行android项目时运行。

为什么要更改文件名?shhp,这是一个复杂系统的一部分,我们可以动态加载资源。有几种风格,我们有来自不同目录的同名布局,我们需要这些前缀。为了保持问题的焦点,我不想深入细节。@gosho_ot_pochivka这个问题有什么进展吗?基本上我需要相同的东西-为现有资源创建别名。。
task renameLayoutsForVariants {
   // Do the renaming here with the prefixes
}

task renameFilesBack {
  // Rename files back to the initial name
}

afterEvaluate {
     android.applicationVariants.all { variant ->
         variant.javaCompiler.dependsOn(renameLayouts)
}

renameFilesBack.dependsOn build, deploy