AWS Усиление для Android - Не удается разрешить символ 'AmplifyModelProvider' - PullRequest
1 голос
/ 09 апреля 2020

Добрый день всем,

Я реализую AWS Усиление хранилища данных для android после документов, и в основном я получаю эту ошибку, когда я пытаюсь инициализировать плагин хранилища данных при усилении в соответствии с этой частью do c:

Не удается разрешить символ 'AmplifyModelProvider'

Вы можете найти код из моего gradle файлы и класс моего приложения ниже.

Я не эксперт android, но я считаю, что это из-за отсутствующей зависимости или я делаю что-то не так во время инициализации или назначения ModelProvider. Но я не могу найти информацию по inte rnet об этой проблеме или о любом возможном решении.

Заранее благодарен за вашу помощь.

Действия по воспроизведению:

  1. Создать новый android проект

  2. Установить Amplify CLI, используя npm, npm install -g @aws-amplify/cli

  3. Настроить усиление, amplify configure

  4. В новой папке android проект root, запустите ampify init, amplify init

  5. В новом android проекте Папка root, запуск ampify add auth, amplify add auth, добавление аутентификации

  6. Создание android класса приложения

  7. Add android класс приложения для AndroidManifest. xml

  8. Попробуйте добавить плагин хранилища данных для усиления по методу onCreate класса приложения

Я уже пробую следующие решения:

  1. Чистый проект

  2. Перестроить проект

  3. Запустить Make Project

  4. Закрыть и открыть ain Android Studio

AndroidManifest. xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bakeano.htejobs">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

MyApplication. java

package com.bakeano.htejobs;

import android.app.Application;
import android.util.Log;

import com.amazonaws.mobile.client.AWSMobileClient;
import com.amazonaws.mobile.client.Callback;
import com.amazonaws.mobile.client.UserStateDetails;
import com.amplifyframework.api.aws.AWSApiPlugin;
import com.amplifyframework.core.Amplify;
import com.amplifyframework.core.model.ModelProvider;
import com.amplifyframework.datastore.AWSDataStorePlugin;

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        // AWSMobileClient initialization
        AWSMobileClient.getInstance().initialize(getApplicationContext(), new Callback<UserStateDetails>() {
            @Override
            public void onResult(UserStateDetails result) {
                try {
                    ModelProvider modelProvider = AmplifyModelProvider.getInstance(); // Error on this line !!!
                    Amplify.addPlugin(AWSDataStorePlugin.forModels(modelProvider));
                    Amplify.addPlugin(new AWSApiPlugin());
                    Amplify.configure(getApplicationContext());
                } catch (Exception e) {
                    Log.e("bakeanoMessage", "Amplify adding plugins Exception: " + e.getMessage(), e);
                }
            }

            @Override
            public void onError(Exception e) {
                Log.e("bakeanoMessage", "AWSMobileClient init Exception: " + e.getMessage(), e);
            }
        });
    }
}

Модуль Gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.2"

    defaultConfig {
        applicationId "com.bakeano.htejobs"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility 1.8
        targetCompatibility 1.8
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.1.0'
    testImplementation 'junit:junit:4.13'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    // androidx constraint layout
    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta4'

    // aws amplify framework core
    implementation 'com.amplifyframework:core:0.10.0'

    // AWSMobileClient
    implementation 'com.amazonaws:aws-android-sdk-mobile-client:2.16.11'

    // aws amplify for the drop-in ui
    implementation 'com.amazonaws:aws-android-sdk-auth-userpools:2.16.11'
    implementation 'com.amazonaws:aws-android-sdk-auth-ui:2.16.11'

    // aws amplify api
    implementation 'com.amplifyframework:aws-api:0.10.0'

    // aws amplify data store
    implementation 'com.amplifyframework:aws-datastore:0.10.0'

}

Проект Gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {

    repositories {
        google()
        jcenter()
        mavenCentral()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.2'

        // amplify tools gradle plugin
        classpath 'com.amplifyframework:amplify-tools-gradle-plugin:0.2.1'


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

// applying the amplify tools plugin
apply plugin: 'com.amplifyframework.amplifytools'

allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()

    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

1 Ответ

0 голосов
/ 09 апреля 2020

Решение предоставлено Джеймсон Уильямс :

на проектах Github выпускает платформу - проблема # 370

AmplifyModelProvider - это автоматически сгенерированный файл, который создается по усилению codegen

amplify codegen models

после генерации вручную вам необходимо импортировать его:

import com.amplifyframework.datastore.generated.model.AmplifyModelProvider;

Спасибо! !

...