Android Studio(Kotlin)中AWS SDK凭证配置求助,求分步操作指南
Android中AWS SDK配置分步指南
一、添加AWS SDK依赖
- 打开项目根目录下的
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" } } }
- 在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身份池获取临时凭证:
- 在AWS控制台创建Cognito身份池,按需开启“启用未认证身份”(支持游客访问场景),记录下身份池ID和所属区域(比如
us-east-1)。 - 在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 // 对应区域 )
- 给Cognito身份池配置IAM权限:在AWS控制台的IAM中,找到Cognito自动创建的认证/未认证角色,根据业务需求添加权限策略(比如允许访问指定S3存储桶)。
三、初始化SDK并调用AWS服务
以调用S3服务为例:
- 初始化AWS客户端:
import com.amazonaws.services.s3.AmazonS3Client import com.amazonaws.regions.Regions val s3Client = AmazonS3Client(credentialsProvider) s3Client.setRegion(Regions.US_EAST_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()
四、必备权限与配置
- 在
AndroidManifest.xml中添加网络权限:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- 若应用针对Android 9.0及以上,且需访问明文HTTP服务,需在
<application>标签中添加:
<application ... android:usesCleartextTraffic="true"> ... </application>
内容的提问来源于stack exchange,提问作者Aliaksei Smirnou
相关产品推荐
相关产品推荐

