2016-12-23 31 views
0

我使用亚马逊S3云存储到我的应用程序,它工作正常,但仍崩溃测井仪表示TransferService.java获得的NullPointerException在TransferService.java,AWS S3的Android SDK的随机用户

这里的崩溃是我的实现细节:

1)依赖关系:

compile 'com.amazonaws:aws-android-sdk-core:2.3.6' 
compile 'com.amazonaws:aws-android-sdk-cognito:2.3.6' 
compile 'com.amazonaws:aws-android-sdk-s3:2.3.6' 

2)创建S3客户端:

public static AmazonS3Client getAWS3Client() { 
    if (s3Client == null) { 
     CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(
       AppDeligate.getInstance(), 
       Credentials.IDENTITY_POOL_ID, // Identity Pool ID 
       Credentials.REGION // Region 
     ); 

     return s3Client = new AmazonS3Client(credentialsProvider); 
    } 
    return s3Client; 
} 

3)创建TransferUtility的对象:

TransferUtility transferUtility = new TransferUtility(AppDeligate.getAWS3Client(), mContext); 

4)完整的系统崩溃日志:

Fatal Exception: java.lang.RuntimeException: Unable to start service co[email protected]21f28350 with null: java.lang.NullPointerException 
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2886) 
    at android.app.ActivityThread.access$2100(ActivityThread.java:139) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:149) 
    at android.app.ActivityThread.main(ActivityThread.java:5257) 
    at java.lang.reflect.Method.invokeNative(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
    at dalvik.system.NativeStart.main(NativeStart.java) 
Caused by java.lang.NullPointerException 
    at com.amazonaws.mobileconnectors.s3.transferutility.TransferService.onStartCommand(TransferService.java:172) 
    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2869) 
    at android.app.ActivityThread.access$2100(ActivityThread.java:139) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1390) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:149) 
    at android.app.ActivityThread.main(ActivityThread.java:5257) 
    at java.lang.reflect.Method.invokeNative(Method.java) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) 
    at dalvik.system.NativeStart.main(NativeStart.java) 
+0

只是想知道:即使它会工作,不应该该方法是相当同步? – GhostCat

+0

尝试更新您的sdk到2.3.7,这似乎与https://github.com/aws/aws-sdk-android/issues/223有关 – Karthik

回答

0

调试提示让你去:

  1. 看看你是否可以访问到TransferService源代码(起点可以是here
  2. Che ck该代码在172行上做了什么;如果你可以涉及,要任何你的代码是做前期

人们可以很容易找到办法TransferService ...但它看起来这是一个较新的版本;因为第172行是空的。

但我认为我的想法可以给你一些启发。