AWS iOS / Android SDK大小问题

时间:2015-02-10 00:32:00

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

我正在开发一个库,我需要在那里集成AWS SDK。 我在我的库中只使用了两个AWS SQS服务 -

  1. 创建队列
  2. 发送消息(上传一些数据)
  3. AWS SDK(iOS和Android)对我的库的整体尺寸影响很大(两个平台都超过50%)。为了说服合作伙伴,我减少图书馆的大小是一项主要要求。

    我的问题是 -

    • 我是否已经存在可以直接用于创建队列和上传数据的内容?
    • 如何针对此用例自行实施类似轻量级AWS SDK的内容?

    注意:我很喜欢AWS的东西。

2 个答案:

答案 0 :(得分:1)

有两种方法可以使用AWS SDK for iOS:通过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的AWS Mobile SDK(仅限Amazon SQS)的大小为:

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

我们还通过SDK发布了Proguard设置建议。有关如何使用Proguard减少应用二进制文件大小的信息,请参阅Proguard.html

作为旁注,请确保您已彻底审核了从移动设备创建队列的权限。通常,我们不建议从移动设备创建队列,因为恶意用户可以提取和滥用移动设备上的任何凭据。唯一的例外是你信任"所有最终用户(例如,当您为员工编写企业应用程序时)。

答案 1 :(得分:0)

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();