0

В моем проекте Studio Studio есть два продукта: - A и B. Оба имеют в своей папке ресурса макет с именем my_layout.xml.Переименовать файл макета во время компиляции с помощью Gradle

Я хочу также, когда я создаю проект для аромата А иметь шаблон с именем a_my_layout.xml и b_my_layout.xml при создании аромата В. Затем из исходного кода я динамически получить идентификатор ресурса с getResources().getIdentifier("a_my_layout", "layout"...)

Я хочу, чтобы имя макета оставалось my_layout.xml, когда я работаю в редакторе (студия Android), т.е. я не хочу иметь кучу префиксов для своих макетов в папке res /. Возможно ли это с Грейдлом?

+0

Почему вы хотите изменить имя файла? – shhp

+0

shhp, Это часть сложной системы, где мы имеем динамическую загрузку ресурсов. Существуют разновидности ароматов, где у нас есть макеты с одинаковыми именами, поступающими из разных каталогов, и нам нужны эти префиксы. Я не хочу вдаваться в подробности, чтобы держать в центре вопроса. –

ответ

1

Если честно, я не понимаю, почему вы хотите переименовать их, не имеет значения, если вы загружаете ресурсы динамически, если у вас есть макеты в обоих вариантах, когда вы их загружаете, он загружает один конкретный для вашего вкуса, но это ваш выбор :).

Если вы действительно хотите переименовать их, я думаю, вы можете достичь этого, создав сценарий переименования и связав его с предопределенной задачей предварительной сборки.

Нечто подобное (в уровне приложения Gradle):

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 

Для доступа к файловым ресурсам из Gradle, есть тонны сообщений на SO, вы просто должны проверить его.

В заключение, это возможно на 100%, вам просто нужно настроить некоторые скрипты градиента и связать их с некоторыми уже определенными задачами, которые выполняются при создании/запуске проекта android.

 Смежные вопросы

  • Нет связанных вопросов^_^