Android(Kotlin)非Amplify环境下AWS SDK for DynamoDB使用及导入异常问题
解决AWS DynamoDB SDK导入失败及Android端基础配置问题
一、先解决SDK依赖与导入问题
1. 检查Gradle依赖配置
在app模块的build.gradle.kts里添加对应依赖,确保版本统一:
dependencies { // AWS核心库 implementation("com.amazonaws:aws-android-sdk-core:2.74.0") // DynamoDB核心库 implementation("com.amazonaws:aws-android-sdk-dynamodb:2.74.0") // Cognito身份认证库 implementation("com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.74.0") }
版本选最新稳定版即可,但所有AWS子库版本必须一致,避免依赖冲突。
2. 确认仓库配置
项目根目录的build.gradle.kts里要包含Maven Central:
repositories { google() mavenCentral() }
3. 同步并重建项目
- 点击Android Studio右上角的「Sync Project with Gradle Files」
- 执行
Build > Clean Project+Build > Rebuild Project
4. 验证导入语句
比如导入常用类:
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient import com.amazonaws.services.dynamodbv2.model.PutItemRequest import com.amazonaws.services.dynamodbv2.model.AttributeValue
如果还是红标,去External Libraries里检查是否有aws-android-sdk-dynamodb相关包,没下载成功的话手动刷新依赖。
二、Cognito访客访问与IAM权限配置
1. 创建Cognito身份池
- 控制台创建身份池,开启「允许未认证身份访问」
- 记下身份池ID,以及自动生成的未认证用户IAM角色ARN
2. 配置IAM角色权限
给未认证角色添加DynamoDB权限策略(按需调整):
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:你的区域:你的AWS账号ID:table/你的表名" } ] }
遵循最小权限原则,只给需要的操作权限。
3. Android端初始化身份凭证
在App启动时初始化Cognito凭证提供者:
import com.amazonaws.auth.CognitoCachingCredentialsProvider import com.amazonaws.regions.Regions val credentialsProvider = CognitoCachingCredentialsProvider( applicationContext, "你的身份池ID", Regions.你的区域 // 比如Regions.CN_NORTH_1 )
三、初始化DynamoDB客户端并操作表
// 初始化客户端 val dynamoDBClient = AmazonDynamoDBClient(credentialsProvider) dynamoDBClient.setRegion(Regions.你的区域) // 示例:写入数据 val item = mapOf( "id" to AttributeValue().withS("demo001"), "content" to AttributeValue().withS("测试DynamoDB写入") ) val request = PutItemRequest() .withTableName("你的表名") .withItem(item) dynamoDBClient.putItem(request)
额外排查点
- 网络权限:
AndroidManifest.xml必须添加<uses-permission android:name="android.permission.INTERNET" /> - 区域一致性:身份池、DynamoDB表、客户端配置的区域必须完全一致
- 依赖冲突:如果有其他第三方库和AWS SDK冲突,尝试用
exclude排除重复依赖
内容的提问来源于stack exchange,提问作者schnondle
相关产品推荐
相关产品推荐

