Бэкенд не синхронизирован с основным приложением в Android Studio
Я добавил в приложение бэкэнд-модуль Google Cloud. До вчерашнего дня все работало нормально. После этого он вдруг отказался распознать любое изменение, внесенное мной в бэкэнд-классы. Например, у меня есть класс модели "Match" в моем бэкэнде, в котором были такие методы, как setId, getId и т. Д. В модуле приложения я импортировал класс Match и также использовал его методы. Затем вчера я добавил новый метод в этот класс, "getText". Но этот метод не обнаружился в автозаполнении модуля приложения и показал ошибку "не удается разрешить символ" getText "", если я пытаюсь принудительно использовать это. Я подумал, что это может быть проблема синхронизации, поэтому я сделал следующее (много раз в разных порядках):
- Построить проект
- Чистый Проект
- Запустить бэкэнд
- Развертывание бэкэнда в проекте GAE
- Синхронизировать проект с файлами Gradle
- Недействительные кэши / Перезапуск...
- удалил и снова добавил оператор импорта для класса Match, а затем сделал перестроение
- Создал новый проект с нуля, добавил бэкэнд и сделал то же самое со стандартным классом "MyBean". Опять же, он будет распознавать только существующие методы, а не новый метод, который я хочу добавить.
Но код не уступает. Кажется, что базовые классы, на которые ссылаются соответствующие модули приложения, каким-то образом застыли во времени. Даже если я закомментирую некоторые методы в классе Match, а затем пересоберу проект, эти методы все равно появятся в модуле приложения.
Я использую Android Studio 2.1, кстати.
Теперь просто бьюсь головой о стену.
1 ответ
Судя по всему, у меня была такая же проблема. В конце концов я обнаружил, что внешний интерфейс проекта получает только getters
а также setters
из бэкэнда. Те getters
а также setters
основаны на членах класса на бэкэнде. Я предполагаю, что у вас нет члена в классе Match
называется text
вот почему getText()
никогда не работал. Кроме того, могу поспорить, что вы удалили / закомментировали некоторые другие методы, но не удалили соответствующих членов из класса. Поскольку эти члены все еще были там, скомпилированный интерфейсный интерфейс создает getters
а также setters
для них.
У меня нет документации по этому вопросу, но я научился думать о классах бэкэнда как о последовательностях json, которые передаются во внешний интерфейс. Независимо от того, кто там есть, можно получить доступ через getter
/setter
на переднем конце, но это все. Любые другие функции, которые вы создаете, имеют только внутренний доступ.