Бэкенд не синхронизирован с основным приложением в 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 на переднем конце, но это все. Любые другие функции, которые вы создаете, имеют только внутренний доступ.

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