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

Android Studio(Kotlin)中AWS SDK凭证配置求助,求分步操作指南

Android中AWS SDK配置分步指南

一、添加AWS SDK依赖

  1. 打开项目根目录下的settings.gradle,添加AWS的Maven仓库:
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url "https://awsmobile.s3.amazonaws.com/android/aws-android-sdk-2.x/release" }
    }
}
  1. 在APP模块的build.gradle(或build.gradle.kts)中添加所需服务的依赖,比如用于身份验证的Cognito、用于存储的S3:
dependencies {
    implementation 'com.amazonaws:aws-android-sdk-cognito:2.62.0'
    implementation 'com.amazonaws:aws-android-sdk-s3:2.62.0'
}

注:版本号可替换为最新稳定版。

二、凭证配置(核心:安全优先)

绝对不要把AWS Access Key/Secret Key硬编码到代码里,也不要放在本地文件中——移动应用极易被反编译,会导致凭证泄露。正确方式是用Amazon Cognito身份池获取临时凭证:

  1. 在AWS控制台创建Cognito身份池,按需开启“启用未认证身份”(支持游客访问场景),记录下身份池ID和所属区域(比如us-east-1)。
  2. 在Android代码中初始化Cognito凭证提供者:
import com.amazonaws.auth.CognitoCachingCredentialsProvider
import com.amazonaws.regions.Regions

val credentialsProvider = CognitoCachingCredentialsProvider(
    applicationContext,
    "us-east-1:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", // 你的身份池ID
    Regions.US_EAST_1 // 对应区域
)
  1. 给Cognito身份池配置IAM权限:在AWS控制台的IAM中,找到Cognito自动创建的认证/未认证角色,根据业务需求添加权限策略(比如允许访问指定S3存储桶)。

三、初始化SDK并调用AWS服务

以调用S3服务为例:

  1. 初始化AWS客户端:
import com.amazonaws.services.s3.AmazonS3Client
import com.amazonaws.regions.Regions

val s3Client = AmazonS3Client(credentialsProvider)
s3Client.setRegion(Regions.US_EAST_1)
  1. 在子线程中执行网络请求(避免阻塞主线程),比如列出存储桶:
Thread {
    try {
        val buckets = s3Client.listBuckets()
        for (bucket in buckets) {
            Log.d("AWS_S3", "存储桶名称:${bucket.name}")
        }
    } catch (e: Exception) {
        Log.e("AWS_S3", "请求失败:${e.message}")
    }
}.start()

四、必备权限与配置

  1. 在AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  1. 若应用针对Android 9.0及以上,且需访问明文HTTP服务,需在<application>标签中添加:
<application
    ...
    android:usesCleartextTraffic="true">
    ...
</application>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:10:16