gpt4 book ai didi

android - 适用于 Android 的 AWS Amplify - 无法解析符号 'AmplifyModelProvider'

转载 作者:行者123 更新时间:2023-12-04 10:14:53 27 4
gpt4 key购买 nike

大家好,

我正在实现 AWS Amplify DataStore for android遵循文档,基本上当我尝试根据 this part of the doc 在放大上初始化数据存储插件时出现此错误:

无法解析符号“AmplifyModelProvider”

您可以从我的 gradle 文件和下面的应用程序类中找到代码。

我不是 android 专家,但我相信这是因为缺少依赖项,或者我在初始化或分配 ModelProvider 期间做错了什么。但我无法在互联网上找到有关此问题或任何可能解决方案的任何信息。

在此先感谢您的帮助。

重现步骤:

  • 创建新的android项目
  • 使用 npm 安装 Amplify CLI,npm install -g @aws-amplify/cli
  • 配置放大,amplify configure
  • 在新的 android 项目根文件夹上,运行 amplify init,amplify init
  • 在新的 android 项目根文件夹上,运行 amplify add auth, amplify add auth , 添加认证
  • 创建android应用类
  • 将android应用类添加到AndroidManifest.xml
  • 尝试添加数据存储插件以放大应用程序类的onCreate方法

  • 我已经尝试了以下解决方案:
  • 清洁项目
  • 重建项目
  • 运行制作项目
  • 关闭并再次打开 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>

    我的应用程序.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
    }

    最佳答案

    Jameson Williams提供的解决方案:

    projects github issue platform - issue #370

    AmplifyModelProvider 是由放大创建的自动生成文件 codegen
    amplify codegen models
    手动生成后,您需要导入它:
    import com.amplifyframework.datastore.generated.model.AmplifyModelProvider;
    谢谢 !!

    关于android - 适用于 Android 的 AWS Amplify - 无法解析符号 'AmplifyModelProvider',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61114535/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com