【问题标题】:AWS iOS/Android SDK size issuesAWS iOS/Android SDK 大小问题
【发布时间】:2021-06-04 19:49:57
【问题描述】:

我现在正在开发一个库,我需要在其中集成 AWS 开发工具包。 我在我的库中只使用了两个 AWS SQS 服务 -

  1. 创建队列
  2. 发送消息(上传一些数据)

AWS SDK(iOS 和 Android)对我的库的总体规模影响是巨大的(在两个平台上都超过 50%)。为了说服合作伙伴,我的首要要求是缩小图书馆的规模。

我的问题是-

  • 是否有任何东西可以直接用于创建队列和上传数据?
  • 我怎样才能为这个用例自己实现 AWS SDK 的轻量级版本?

注意:我不熟悉 AWS 的东西。

【问题讨论】:

  • 所有 AWS API 都基于 REST。您需要做的就是向您正在使用的服务的端点发出请求。 SDK 确实为 REST 服务提供了一些便利和抽象,但它们对使用并不重要。
  • 您还在应用中做什么?您可以(并且可能应该)在服务器端执行此操作。否则,您将在您的应用中分发 您的 密钥。
  • 我们通过将密钥与我们的 Web 服务端点和编码链接来确保密钥安全,因此安全性不是问题。我关心的是如何实现 REST API。我看了文档,它看起来有点复杂,如果有人能把事情分解并用简单的语言解释,那将非常有帮助。

标签: android ios amazon-web-services amazon-sqs aws-sdk


【解决方案1】:

有两种方法可以使用适用于 iOS 的 AWS 开发工具包:通过 CocoaPods 和 AWSiOSSDKv2.framework。如果您使用的是 CocoaPods,则可以使用以下 Podfile 仅导入 Amazon SQS 所需的代码:

source 'https://github.com/CocoaPods/Specs.git'

pod 'AWSiOSSDKv2/SQS'

如果您使用的是AWSiOSSDKv2.framework,您可以从构建设置中的其他链接器标志中删除-ObjC标志。 Xcode 足够聪明,可以只从框架中引入应用程序中使用的目标文件,并且二进制大小对最终应用程序的影响很小。如果您有其他需要-ObjC 标志的框架,您可以在这些框架上使用-force_load 而不是-ObjC

在 Android 方面,我们一直在努力减少 jar 大小,因此请确保您使用的是最新版本的 SDK。适用于 Android 2.1.8(仅限 Amazon SQS)的 AWS 移动开发工具包的大小为:

  • aws-android-sdk-2.1.8-core.jar:2MB
  • aws-android-sdk-2.1.8-sqs.jar: 180KB

我们还随 SDK 一起提供 Proguard 设置建议。请参阅Proguard.html 了解如何使用 Proguard 减小应用程序二进制大小。

附带说明,请确保您已彻底查看从移动设备创建队列的权限。通常,我们不建议从移动设备创建队列,因为移动设备上的任何凭据都可能被恶意用户提取和滥用。唯一的例外是当您“信任”所有最终用户时(例如当您为员工编写企业应用程序时)。

【讨论】:

  • 这个大小对我的要求来说太大了,将来我们还需要使用 s3 服务,所以我认为这不会起作用。让我们的图书馆保持小型对我们来说非常重要。
  • 如何使用aws rest apis来发送256KB大小的消息?
【解决方案2】:

aws-lightweight-client-java 小于 60K(独立,无依赖关系)。这就是您执行这些任务的方式:

Client sqs = Client
  .sqs()
  .regionName("ap-southeast-2")
  .accessKey(accessKey)
  .secretKey(secretKey)
  .build();

String queueUrl = 
  sqs.query("Action", "CreateQueue") 
    .query("QueueName", queueName) 
    .responseAsXml()
    .content("CreateQueueResult", "QueueUrl");

sqs.url(queueUrl) 
    .query("Action", "SendMessage") 
    .query("MessageBody", "hi there") 
    .execute();

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 2015-09-30
    • 2017-04-20
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多