-1

最近、プロジェクトからいくつかの古いコードを継承しました。ATAK (Android Tactical Assault Kit) のプラグインとして転用されており、AWS Amplify を使用して AWS S3 からファイルをアップロードおよびダウンロードする必要があります。コードの最初の作成者は、AWS 増幅を使用してファイルをアップロードしました。

ここで、(AWS モバイル開発ガイドに従って) CLI で AWSmplify をセットアップしようとすると、amplify init、amplitude add auth、amplitude add storage、amplitude add API の実行ですべてがスムーズに進むことに気付きました。それは大丈夫です。

次に、build.gradle (:app) ファイル内の Gradle ファイルに依存関係を追加しました。それもうまく機能し、同期されました。

これで、コードが実際に以下に示す AWS.configure 部分を通過することはありません。

            Amplify.addPlugin(new AWSCognitoAuthPlugin());
            Amplify.addPlugin(new AWSCognitoAuthPlugin());
            Amplify.addPlugin(new AWSS3StoragePlugin());
            com.atakmap.coremap.log.Log.i(TAG, "Amplify Plugin configure!");
            com.atakmap.coremap.log.Log.i(TAG, "Amplify: (plugin == null) == " + Boolean.toString(plugin == null));
            Amplify.configure(plugin);

            com.atakmap.coremap.log.Log.i(TAG, "Amplify Plugin configure Afterwards!!");
            android.util.Log.i("MyAmplifyApp", "Initialized Amplify");
        } catch (AmplifyException error) {
            android.util.Log.e("MyAmplifyApp", "Could not initialize Amplify", error);
        }
2021-04-13 15:09:58.824 27642-27642/com.atakmap.app.civ E/MyAmplifyApp: Could not initialize Amplify
    AmplifyException {message=Failed to instantiate AWSMobileClient, cause=java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference, recoverySuggestion=See attached exception for more details}
        at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin.configure(AWSCognitoAuthPlugin.java:87)
        at com.amplifyframework.core.category.Category.configure(Category.java:13)
        at com.amplifyframework.core.Amplify.configure(Amplify.java:17)
        at com.amplifyframework.core.Amplify.configure(Amplify.java:1)
        at com.atakmap.android.helloworld.recyclerview.RecyclerViewDropDown.<init>(RecyclerViewDropDown.java:200)
        at com.atakmap.android.helloworld.HelloWorldDropDownReceiver.<init>(HelloWorldDropDownReceiver.java:653)
        at com.atakmap.android.helloworld.HelloWorldMapComponent.onCreate(HelloWorldMapComponent.java:254)
        at com.atakmap.android.helloworld.plugin.HelloWorldLifecycle.onCreate(HelloWorldLifecycle.java:78)
        at com.atak.plugins.impl.LifecycleMapComponent$2.run(SourceFile:142)
        at android.os.Handler.handleCallback(Handler.java:873)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6669)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
        at com.amazonaws.mobile.auth.core.IdentityManager.<init>(IdentityManager.java:207)
        at com.amazonaws.mobile.client.AWSMobileClient$2.run(AWSMobileClient.java:482)
        at com.amazonaws.mobile.client.internal.InternalCallback$1.run(InternalCallback.java:101)
        at java.lang.Thread.run(Thread.java:764)

いくつかの質問を聞きたいんです。

AWS Mobile は廃止されたようです。

問題の原因となっているコードが AWS Mobile を参照している場合、AWSMobile を使用せずにこのエラーを回避する方法はありますか? その場合、どこを見ればよいですか?

4

1 に答える 1