You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java+Amplify从AWS S3向Android Studio应用下载文件时崩溃,求解决

AWS Amplify Android 下载S3文件应用崩溃问题排查与解决
  • Amplify未完成初始化
    如果downloadFiles方法在Amplify初始化前调用,必然导致崩溃。必须确保Amplify在Application类中完成初始化,而非仅在Activity中:

    public class MyApp extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            try {
                Amplify.addPlugin(new AWSCognitoAuthPlugin());
                Amplify.addPlugin(new AWSS3StoragePlugin());
                Amplify.configure(getApplicationContext());
                Log.i("MyAmplifyApp", "Amplify初始化成功");
            } catch (AmplifyException error) {
                Log.e("MyAmplifyApp", "Amplify初始化失败", error);
            }
        }
    }
    

    同时在AndroidManifest.xml的<application>标签中指定android:name=".MyApp"。

  • 文件路径拼接错误
    原代码中直接拼接字符串创建文件路径,可能因路径格式问题导致异常。改用File类的构造方法创建路径更可靠:

    File downloadFile = new File(getApplicationContext().getFilesDir(), "download.txt");
    
  • 权限配置缺失
    检查AWS端Cognito身份池的角色权限,确保对应角色拥有S3对象的读取权限:
    登录AWS控制台,找到对应Cognito身份池的未认证/认证角色,添加以下权限策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::你的存储桶名称/test.txt"
            }
        ]
    }
    
  • 调用时机问题
    避免在Activity的onCreate方法中直接调用downloadFiles,建议在onStart或Amplify初始化完成后再执行下载操作,确保依赖服务已就绪。

修改后的完整示例代码:

public void downloadFiles() {
    File downloadFile = new File(getApplicationContext().getFilesDir(), "download.txt");
    
    Amplify.Storage.downloadFile(
            "test.txt",
            downloadFile,
            StorageDownloadFileOptions.defaultInstance(),
            progress -> Log.i("MyAmplifyApp", "下载进度: " + progress.getFractionCompleted()),
            result -> Log.i("MyAmplifyApp", "下载成功: " + result.getFile().getName()),
            error -> Log.e("MyAmplifyApp", "下载失败", error)
    );
}

内容的提问来源于stack exchange,提问作者xgyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 13:17:36