【发布时间】:2018-06-19 01:45:59
【问题描述】:
好吧,我刚刚尝试在 Android Studio 中包含 AWS 库。我试图从我的移动应用程序向我的 S3 服务器发送数据,但我不能。
这是 build.gradle(应用程序):
dependencies {
...
compile (group: 'com.amazonaws', name: 'aws-java-sdk', version: '1.11.257'){ transitive = true }
...
}
这是 AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="...">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
...
<application ...>
...
</application>
</manifest>
这是一个 Activity.java:
package ...;
...
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.orhanobut.logger.Logger;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.model.PutObjectRequest;
...
public class Activity extends AppCompatActivity
{
...
public void sendData(View v)
{
AmazonS3 s3client;
File file;
final String bucketName = "************************";
final String keyName = "********************";
final String secretKey = "****************************************";
try
{
file = new File(uri.getPath());
s3client = AmazonS3ClientBuilder.standard().withCredentials(
new AWSStaticCredentialsProvider
(
new BasicAWSCredentials(keyName, secretKey)
)
).build();
s3client.putObject(new PutObjectRequest(bucketName, keyName, file));//~ */
}
catch (NoClassDefFoundError|IllegalStateException|IllegalArgumentException ex)
{
ex.printStackTrace();
}
catch (AmazonServiceException ase)
{
StringBuilder str_builder_error_mensaje = new StringBuilder("");
ase.printStackTrace();
str_builder_error_mensaje.append("Caught an AmazonServiceException, which means your request made it to Amazon S3, but was rejected with an error response for some reason.");
str_builder_error_mensaje.append("\nError Message: ").append(ase.getMessage());
str_builder_error_mensaje.append("\nHTTP Status Code: ").append(ase.getStatusCode());
str_builder_error_mensaje.append("\nAWS Error Code: ").append(ase.getErrorCode());
str_builder_error_mensaje.append("\nError Type: ").append(ase.getErrorType().name());
str_builder_error_mensaje.append("\nRequest ID: ").append(ase.getRequestId());
Logger.d(str_builder_error_mensaje.toString());
}
catch (AmazonClientException ace)
{
StringBuilder str_builder_error_mensaje = new StringBuilder("");
ace.printStackTrace();
str_builder_error_mensaje.append("Caught an AmazonClientException, which means the client encountered an internal error while trying to communicate with S3, such as not being able to access the network.");
str_builder_error_mensaje.append("\nError Message: ").append(ace.getMessage());
Logger.d(str_builder_error_mensaje.toString());
}
}
...
}
然后我在模拟器上执行时收到此错误消息:
W/System.err: java.lang.NoClassDefFoundError: com.amazonaws.services.s3.AmazonS3Client
W/System.err: at com.amazonaws.services.s3.AmazonS3Builder$1.apply(AmazonS3Builder.java:35)
W/System.err: at com.amazonaws.services.s3.AmazonS3Builder$1.apply(AmazonS3Builder.java:32)
W/System.err: at com.amazonaws.services.s3.AmazonS3ClientBuilder.build(AmazonS3ClientBuilder.java:64)
我一直无法在 Android Studio 中加载 AWS 的库。
【问题讨论】:
标签: android amazon-web-services android-studio amazon-s3 aws-sdk