Не удалось найти поставщика моделей, созданных с помощью кода — AWS Amplify

#android #aws-amplify

#Android #aws-amplify

Вопрос:

Я получаю следующую ошибку:

Не удалось найти поставщика моделей, сгенерированных с помощью кода.

AWS amplify код, который выдает эту ошибку:

 Amplify.addPlugin(new AWSApiPlugin());
Amplify.addPlugin(new AWSDataStorePlugin());
Amplify.configure(context);
  

Я следую приведенным ниже руководствам:

https://docs.amplify.aws/start/getting-started/generate-model/q/integration/android
https://docs.amplify.aws/cli/graphql-transformer/overview

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

Ответ №1:

При создании моделей следует ожидать, что в вашем проекте приложения будут найдены различные файлы, сгенерированные с помощью кода. Одним из них будет app/src/main/java/com/amplifyframework/datastore/generated/model/AmplifyModelProvider.java .

Когда вы создаете свое приложение, Android Studio скомпилирует этот java-файл в файл класса и включит его в ваш двоичный файл.

Во время выполнения, на телефоне, AWSDataStorePlugin() конструктор попытается найти то же AmplifyModelProvider самое с помощью отражения.

Я бы проверил, что:

  1. У вас действительно есть сгенерированный код AmplifyModelProvider ;
  2. Он успешно создается;
  3. Он не удаляется с помощью минификации ProGuard / R8.

Если вы все еще не можете заставить его работать, просто используйте версию AWSDataStorePlugin(...) конструктора с одним аргументом. Эта версия позволяет явно указать поставщика модели и не использует отражение во время выполнения.

 Amplify.addPlugin(AWSDataStorePlugin(AmplifyModelProvider.getInstance()))
  

Ответ №2:

Ваш источник данных нуждается в обновлении:

Попробуйте запустить modelGen, затем задачи amplifyPush:

Категория Имя ресурса Операция Плагин поставщика
API amplifyDatasource Обновить awscloudformation

введите описание изображения здесь