我正在开发一个库,我需要在那里集成AWS SDK。 我在我的库中只使用了两个AWS SQS服务 -
AWS SDK(iOS和Android)对我的库的整体尺寸影响很大(两个平台都超过50%)。为了说服合作伙伴,我减少图书馆的大小是一项主要要求。
我的问题是 -
注意:我很喜欢AWS的东西。
答案 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();