Необходимо очистить проект после изменения макетов в Android Studio

Когда я меняю небольшую вещь в файлах макета XML, например maxLength или TextInputEditText, мне нужно очистить проект, чтобы разрешить изменение подбора AS.

Структура папок res:

res
- макет
- чертежи
- ...

Больше никаких вложенных папок. AS 3.1.1, Gradle 4.6. Я попытался добавить это в gradle:

sourceSets {
    main.res.srcDirs =  [
                         'src/main/res/anim',
                         'src/main/res/color',
                         'src/main/res/drawable',
                         'src/main/res/drawable-hdpi',
                         'src/main/res/drawable-mdpi',
                         'src/main/res/drawable-xhdpi',
                         'src/main/res/drawable-xxhdpi',
                         'src/main/res/drawable-xxxhdpi',
                         'src/main/res/menu',
                         'src/main/res/mipmap-dpi',
                         'src/main/res/mipmap-hdpi',
                         'src/main/res/mipmap-mdpi',
                         'src/main/res/mipmap-xhdpi',
                         'src/main/res/mipmap-xxhdpi',
                         'src/main/res/mipmap-xxxhdpi',
                         'src/main/res/raw',
                         'src/main/res/values',
                         'src/main/res/values-land',
                         'src/main/res/values-large',
                         'src/main/res/values-v21',
                         'src/main/res/valuesw820dp',
                         'src/main/res/xml',
                         'src/main/res/layout',
                         'src/main/res']
}

Необходимо очистить проект после изменения макетов в Android Studio

Есть ли способ предотвратить очистку проекта каждый раз, чтобы изменения вступили в силу?

Поэтому всякий раз, когда я вношу изменения в файлы XML и запускаю приложение, я должен видеть свое изменение, но мне приходится каждый раз очищать проект, и это меня раздражает.

Вы включили режим энергосбережения?

Sagar 07.06.2018 02:42

@Sagar Ничего не меняет

Tomasz Kryński 07.06.2018 16:55
14
2
1 388
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

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

Также есть ли какая-то конкретная причина, по которой вы добавляете пути в gradle? AFAIK, вам нужно делать это только тогда, когда вы меняете пути и устанавливаете что-то другое. В вашем случае пути находятся в их местах по умолчанию, поэтому я не вижу причины этого. Попробуйте удалить это из градиента и включить мгновенный запуск.

Эти ссылки должны помочь:

https://developer.android.com/studio/run/#instant-runhttps://developer.android.com/studio/write/add-resources

Проблема в том, что, скажем, я изменяю maxLength TextInputEditText, нажимаю «запустить» и ожидаю, что это будет изменено на телефоне, но это не так. Мне нужно очистить проект и запустить приложение.

Tomasz Kryński 07.06.2018 16:57

Вы пытались удалить каталоги пути по умолчанию из файла gradle? Попробуйте и посмотрите, решена ли проблема, если она все еще существует, вы можете протестировать следующие меры по устранению неполадок, чтобы сузить причину проблемы: 1) Создайте новый фиктивный проект и посмотрите, работает ли мгновенный запуск в этом проекте без очистки / сборки. Если это не так, вероятно, в вашей сборке AS или в вашей системе есть ошибка. Однако, если это сработает, мы можем быть уверены, что проблема в этом конкретном проекте.

shiredude95 07.06.2018 18:01

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

Tomasz Kryński 07.06.2018 20:25

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

shiredude95 07.06.2018 21:02

У меня проблема с изменением любого макета / ресурса в проекте, он просто не принимает изменения. Любое изменение в .xml сохраняется после перестройки или очистки, это может быть удаление текстового поля, только одного свойства или строки. Я не знаю, что вы имеете в виду под «модулем голых костей».

Tomasz Kryński 07.06.2018 22:49

Вы выбрали GradleAwareMake в конфигурациях запуска. Недавняя ошибка в AS привела к этой проблеме. В этом посте говорится об этом stackoverflow.com/questions/49701214/…

shiredude95 07.06.2018 22:52

У меня есть GradleAwareMake, также обновленный AS, и это не решает проблему.

Tomasz Kryński 07.06.2018 23:55

Прежде всего, вам нужно создать дополнительную папку ресурсов рядом с папкой res, а не внутри нее. Затем попробуйте сделать XML как этот пример:

sourceSets{
     main  {
         manifest.srcFile 'src/main/AndroidManifest.xml'
         java.srcDirs = ['src/main/java', '.apt_generated']
         aidl.srcDirs = ['src/main/aidl', '.apt_generated']
         res.srcDirs = [
            'src/main/res',
            'src/main/test',
            'src/main/login',
            'src/main/main',
            'src/main/includes'
        ]
    }
}

Примечание: Ваша дополнительная папка ресурсов изменит эффект без очистки проекта.

В других проектах это работает, когда у меня есть макет в папке res, поэтому я ожидаю того же.

Tomasz Kryński 13.06.2018 20:14

вы можете создать новый проект или изменить существующий.

5377037 13.06.2018 20:15

Конечно, я могу, я хочу, чтобы gradle забрал мои изменения, сделанные в папке проекта Android по умолчанию res/layout. Он этого не делает, и вы говорите мне, что мне нужно переместить layout из папки res, чтобы заставить его работать, поэтому я сказал вам, что он работает как res/layout в фиктивном проекте, который должен быть здесь, без нарушения структуры папок по умолчанию.

Tomasz Kryński 13.06.2018 21:19

это не работает в Android Studio 3.2 также в структуре проекта, как я могу решить проблему?

Prince Dholakiya 09.10.2018 08:32

Нет необходимости очищать каждый раз после изменения файла макета xml, вам просто нужно обновить макет, щелкнув синий значок в правом конце раздела предварительного просмотра, как показано на изображении ниже. в нем есть свойство с именем Принудительно обновить макет. щелкните по нему, и ваш макет будет обновлен.

В любом случае это не помогло. Тем не менее после мгновенного запуска макет на телефоне остается без изменений.

Tomasz Kryński 12.06.2018 17:42

Вы можете попробовать включить функцию НАСТОЛЬНЫЙ БЕГ в Android Studio. У меня это сработало.

Если вы используете MAC, перейдите в «Настройки», «Найдите мгновенный запуск» и установите флажок «Включить» в правом окне.

После включения вместо запуска вы можете перейти к ЗАПУСТИТЬ и щелкнуть Применять изменения.

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

Tomasz Kryński 13.06.2018 20:12

Обновите Android Studio до 3.1.3, решите мою проблему

Скачать последнюю версию 3.1.3

или что вы можете сделать, это нажать эту информационную кнопку, а затем обновить макет, чтобы решить проблему.

У меня 3.1.3. Эта кнопка, которую вы выделили, показывает новое окно без проблем. Принудительная перезагрузка, а затем запуск приложения снова или мгновенный запуск не привели к изменениям макета (я попытался удалить изображение с экрана загрузки, если это имеет значение).

Tomasz Kryński 13.06.2018 21:14
Ответ принят как подходящий

Проблема заключалась в ароматизаторах сборки. Один из них назывался main, что вызывает проблемы со сканированием проектов. Исправлена ​​проблема с изменением имени. Он отмечен в более новых версиях плагина gradle.

Другие вопросы по теме