android - 验证者拒绝类 software.amazon.awssdk.http.apache.ApacheHttpClient

标签 android amazon-web-services kotlin

我正在尝试运行我从 here 复制粘贴的代码,特别是这一行

val region = Region.AP_SOUTHEAST_1
val s3 = S3Client.builder().region(region).build()

但是每次我运行它,它都会给我这个错误

java.lang.VerifyError: Verifier rejected class software.amazon.awssdk.http.apache.ApacheHttpClient: void software.amazon.awssdk.http.apache.ApacheHttpClient.lambda$LRMaF_8eLuzzpRjS-Ew4gJswCBw(org.apache.http.client.methods.HttpRequestBase) failed to verify: void software.amazon.awssdk.http.apache.ApacheHttpClient.lambda$LRMaF_8eLuzzpRjS-Ew4gJswCBw(org.apache.http.client.methods.HttpRequestBase): [0x0] 'this' argument 'Reference: org.apache.http.client.methods.HttpRequestBase' not instance of 'Reference: org.apache.http.client.methods.AbstractExecutionAwareRequest' (declaration of 'software.amazon.awssdk.http.apache.ApacheHttpClient' appears in /data/app/com.imincode.earthlings-Jxs426ZYpcjwZtg1zzKjkw==/base.apk!classes3.dex) at software.amazon.awssdk.http.apache.ApacheHttpClient.builder(ApacheHttpClient.java:133) at software.amazon.awssdk.http.apache.ApacheSdkHttpService.createHttpClientBuilder(ApacheSdkHttpService.java:29) at software.amazon.awssdk.core.internal.http.loader.-$$Lambda$-cEpDqlhpsSVBRGa6lPjzgTy1tM.apply(Unknown Source:2) at java.util.Optional.map(Optional.java:211) at software.amazon.awssdk.core.internal.http.loader.DefaultSdkHttpClientBuilder.buildWithDefaults(DefaultSdkHttpClientBuilder.java:41) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.lambda$resolveSyncHttpClient$5$SdkDefaultClientBuilder(SdkDefaultClientBuilder.java:274) at software.amazon.awssdk.core.client.builder.-$$Lambda$SdkDefaultClientBuilder$mSpkyGAugx5W7tgD88eQuJnqvEs.get(Unknown Source:2) at java.util.Optional.orElseGet(Optional.java:263) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.resolveSyncHttpClient(SdkDefaultClientBuilder.java:274) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.finalizeSyncConfiguration(SdkDefaultClientBuilder.java:225) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:158) at software.amazon.awssdk.services.s3.DefaultS3ClientBuilder.buildClient(DefaultS3ClientBuilder.java:27) at software.amazon.awssdk.services.s3.DefaultS3ClientBuilder.buildClient(DefaultS3ClientBuilder.java:22) at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:129)

最佳答案

我在使用时间流数据库时遇到了同样的错误。所以在我的例子中,timestreamWriteClient 接受 ApacheHttpClient.Builder:

ApacheHttpClient.Builder httpClientBuilder =
            ApacheHttpClient.builder();

return TimestreamWriteClient.builder()
            .httpClientBuilder(httpClientBuilder)
            .overrideConfiguration(overrideConfig.build())
            .region(Region.US_EAST_1)
            .build();

并且在运行时,当应用程序尝试创建 apache 客户端时,我遇到了这个错误。因此,在一些调查中,我发现我可以使用另一个 HTTP 客户端 - UrlConnectionHttpClient 并将其传递给 TimestreamWriteClient.Builder。

httpClientBuilder: UrlConnectionHttpClient.Builder = UrlConnectionHttpClient.builder()

但是这个客户端应该单独包含:

implementation 'software.amazon.awssdk:url-connection-client'

可以加版本,在末尾加“:X.Y.Z”,但是我用的是BOM,所以对版本一无所知:

implementation platform('software.amazon.awssdk:bom:2.15.0')

因此,我认为您也可以将此 HTTP 客户端传递给您的 S3 服务构建器,就像我使用 timestreamWriteClient 构建器一样。

关于android - 验证者拒绝类 software.amazon.awssdk.http.apache.ApacheHttpClient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64015553/

相关文章:

android - 将 View 的顶部与 RelativeLayout 中另一个 View 的底部对齐

amazon-web-services - elasticsearch:EC2发现:主节点工作数据节点失败

android - 伴随对象 - Android 是否希望将它们注册为 Activity (?)

java - 在 ListView 上获取复选框项目时出现问题

java - getExternalCacheDir() 清除数据后返回 null

android - 如何在android中禁用特定速度(加速度计)的短信

node.js - AWS EC2 Launch 配置用户数据 - 找不到命令

amazon-web-services - 如何从 NodeJS 中的 Lambda 函数返回 HTML 代码?

android - 使用 PowerMockRunner 测试 LiveData

android - 寻找一种 GC 友好的方式来频繁替换子字符串