Когда я меняю небольшую вещь в файлах макета 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']
}
Есть ли способ предотвратить очистку проекта каждый раз, чтобы изменения вступили в силу?
Поэтому всякий раз, когда я вношу изменения в файлы XML и запускаю приложение, я должен видеть свое изменение, но мне приходится каждый раз очищать проект, и это меня раздражает.
@Sagar Ничего не меняет
Я не думаю, что вам нужно каждый раз чистить проект. Для некоторых незначительных изменений вам даже не нужно снова запускать приложение, достаточно просто щелкнуть мгновенный запуск, так как это приведет к горячей замене изменений непосредственно на текущее действие.
Также есть ли какая-то конкретная причина, по которой вы добавляете пути в gradle? AFAIK, вам нужно делать это только тогда, когда вы меняете пути и устанавливаете что-то другое. В вашем случае пути находятся в их местах по умолчанию, поэтому я не вижу причины этого. Попробуйте удалить это из градиента и включить мгновенный запуск.
Эти ссылки должны помочь:
https://developer.android.com/studio/run/#instant-runhttps://developer.android.com/studio/write/add-resources
Проблема в том, что, скажем, я изменяю maxLength TextInputEditText, нажимаю «запустить» и ожидаю, что это будет изменено на телефоне, но это не так. Мне нужно очистить проект и запустить приложение.
Вы пытались удалить каталоги пути по умолчанию из файла gradle? Попробуйте и посмотрите, решена ли проблема, если она все еще существует, вы можете протестировать следующие меры по устранению неполадок, чтобы сузить причину проблемы: 1) Создайте новый фиктивный проект и посмотрите, работает ли мгновенный запуск в этом проекте без очистки / сборки. Если это не так, вероятно, в вашей сборке AS или в вашей системе есть ошибка. Однако, если это сработает, мы можем быть уверены, что проблема в этом конкретном проекте.
Я просто попробовал каталоги пути по умолчанию в gradle в качестве одного из решений, это не сработало. Я удалил их с тех пор. Пустой проект работает нормально, без перестройки и очистки, чтобы внести изменения в макет.
Хорошо, это будет означать, что проблема связана с этим конкретным проектом. Вы пробовали модуль с голыми костями и реализовали в нем ту же операцию в фиктивном действии. Если проблем нет, это проблема на основе модуля, а не на основе проекта, но если проблема все еще существует, мы можем быть уверены, что это проблема, связанная с проектом.
У меня проблема с изменением любого макета / ресурса в проекте, он просто не принимает изменения. Любое изменение в .xml сохраняется после перестройки или очистки, это может быть удаление текстового поля, только одного свойства или строки. Я не знаю, что вы имеете в виду под «модулем голых костей».
Вы выбрали GradleAwareMake в конфигурациях запуска. Недавняя ошибка в AS привела к этой проблеме. В этом посте говорится об этом stackoverflow.com/questions/49701214/…
У меня есть GradleAwareMake, также обновленный AS, и это не решает проблему.
Прежде всего, вам нужно создать дополнительную папку ресурсов рядом с папкой 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, поэтому я ожидаю того же.
вы можете создать новый проект или изменить существующий.
Конечно, я могу, я хочу, чтобы gradle забрал мои изменения, сделанные в папке проекта Android по умолчанию res/layout. Он этого не делает, и вы говорите мне, что мне нужно переместить layout из папки res, чтобы заставить его работать, поэтому я сказал вам, что он работает как res/layout в фиктивном проекте, который должен быть здесь, без нарушения структуры папок по умолчанию.
это не работает в Android Studio 3.2 также в структуре проекта, как я могу решить проблему?
Нет необходимости очищать каждый раз после изменения файла макета xml, вам просто нужно обновить макет, щелкнув синий значок в правом конце раздела предварительного просмотра, как показано на изображении ниже. в нем есть свойство с именем Принудительно обновить макет. щелкните по нему, и ваш макет будет обновлен.
В любом случае это не помогло. Тем не менее после мгновенного запуска макет на телефоне остается без изменений.
Вы можете попробовать включить функцию НАСТОЛЬНЫЙ БЕГ в Android Studio. У меня это сработало.
Если вы используете MAC, перейдите в «Настройки», «Найдите мгновенный запуск» и установите флажок «Включить» в правом окне.
После включения вместо запуска вы можете перейти к ЗАПУСТИТЬ и щелкнуть Применять изменения.
У меня включен мгновенный запуск. Когда я использую мгновенный запуск, он не обнаруживает изменений в макете и ничего не делает.
Обновите Android Studio до 3.1.3, решите мою проблему
Скачать последнюю версию 3.1.3
или что вы можете сделать, это нажать эту информационную кнопку, а затем обновить макет, чтобы решить проблему.
У меня 3.1.3. Эта кнопка, которую вы выделили, показывает новое окно без проблем. Принудительная перезагрузка, а затем запуск приложения снова или мгновенный запуск не привели к изменениям макета (я попытался удалить изображение с экрана загрузки, если это имеет значение).
Проблема заключалась в ароматизаторах сборки. Один из них назывался main, что вызывает проблемы со сканированием проектов. Исправлена проблема с изменением имени. Он отмечен в более новых версиях плагина gradle.
Вы включили режим энергосбережения?