Xamarin предлагает неплохие средства для проектирования интерфейса iOS (интеграция с XCode). Однако то, что касается Android, вызывает уныние и печаль – никаких подсказок для редактирования xml (хотя, говорят, в каком-то виде они есть) и слабенький дизайнер. На юзервойсе и форуме народ давно уже просит интеграцию с Android IDE.
Некоторые научились копировать ресурсы в Android проект, созданный в IDEA, Android Studio, etc. И потом копировать назад изменения в Xamarin проект. Я немного устал от этой процедуры и решил это автоматизировать при помощи плагина, который бы синхронизировал папку Resources между Xamarin и IDEA (Android Studio или любая другая IDE с поддержкой gradle) проектами. К счастью, мне не пришлось писать синхронизатор между папками (или делать хард-линки, требующие админские права), т.к. через gradle можно указать абсолютный путь к папке с ресурсами:
Дальше спотыкаемся на том, что Android IDE требует, чтобы все ресурсы были в нижнем регистре и расширение axml было преобразовано в xml (Xamarin смирится с такими требованиями). Ну а теперь дело техники – написать плагин к Visual Studio. А это дело очень нехитрое, описывать не буду ибо talk is cheap — show me the code. Таким образом, алгоритм плагина следующий:
- Пользователь выбирает axml/xml который хочет отредактировать и вызывает контекстное меню:
- Предлагаем пользователю указать путь до IDE и, если нужно, изменить шаблон пустого Android проекта.
- Под разрешением пользователя, переводем все ресурсы из папки Resources в нижний регистр и заменяем axml на xml.
- Копируем шаблонный андроид проект во временную папку, изменяем в gradle.build путь до папки ресурсов Xamarin проекта.
- Запускаем Android IDE с ключом = путь к проекту (в идеале хотелось бы ещё и чтобы открывался нужный файл, но пока у меня это не получается).
- ????
- PROFIT!!! Имеем прекрасный дизайн-тайм с крутым автокомлитом и все изменения в Android IDE автоматически сохраняются в нашем Xamarin проекте.
Плагин можно поставить через ToolsExtensions and Updates — ввести «XamarIDEA». Ссылка на вебморду — тыц.
Ссылка на исходный код — тыц (пулл-реквесты категорически приветствуются!) :-).
Надеюсь, кому-нибудь это поможет, так же как и мне.
Автор: Nagg