#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
самое с помощью отражения.
Я бы проверил, что:
- У вас действительно есть сгенерированный код
AmplifyModelProvider
; - Он успешно создается;
- Он не удаляется с помощью минификации ProGuard / R8.
Если вы все еще не можете заставить его работать, просто используйте версию AWSDataStorePlugin(...)
конструктора с одним аргументом. Эта версия позволяет явно указать поставщика модели и не использует отражение во время выполнения.
Amplify.addPlugin(AWSDataStorePlugin(AmplifyModelProvider.getInstance()))