用于mac os x应用程序开发的aws sdk

时间:2012-02-27 06:17:47

标签: objective-c cocoa amazon-s3 amazon-web-services xcode4.2

我需要为MAC OS X开发一个应用程序,它将把所选文件上传到亚马逊网络服务。但为此我需要aws sdk for mac。我在网上找不到任何东西。是否可以修改AWS SDK for iOS以便它可以用于Mac?

此外,AWS SDK文档没有解释如何将文件上传到S3。有没有人有一个如何做到这一点的例子?

由于

5 个答案:

答案 0 :(得分:7)

我已经创建了一个AWS iOS SDK的分支,可以构建并用于Mac OS X开发。看看:https://github.com/amberdixon/aws-sdk-ios。在自述文件中,我已经包含了有关如何构建AWS iOS SDK框架的Mac OS X版本的说明。 tomandersen repo似乎使用了更旧版本的iOS SDK,我创建的版本更新一些。

答案 1 :(得分:6)

根据a discussion on this topic中的AWS Developer Forums判断,似乎还没有适用于MacOS X的官方AWS开发工具包,但iOS版本已接近可用。该线程的一个贡献者已经为至少一些服务发布了a modified version that allegedly works on MacOS X。我没有任何个人经验,但看起来值得一看。

答案 2 :(得分:5)

previous answer之后,我分叉并修改了适用于iOS的AWS开发工具包的v2.2,现在它为Mac OS X构建(在Yosemite 10.10.3中测试):https://github.com/johnabender/aws-sdk-ios 还要检查tvos分支机构!

它们提供了一个命令行工具,用于将SDK组件打包为.framework个对象。运行Scripts/SdkPackage.sh AWSS3,它将构建S3框架和任何依赖项。运行Scripts/Package.sh以构建所有框架。如果构建它们,构建的框架将在AWS SDK目录的根/build中结束。

但是,他们的文件非常糟糕。例如,如果您想使用访问密钥而不是Cognito身份,则必须完成代码并弄清楚如何(至少可能!)。想列出S3存储桶的内容?祝好运。大多数必需的类甚至没有列在documentation中。并且您必须在项目中包含libz.dylib以使用S3 SDK构建它们 - 它们也不会告诉您。

无论如何,这里有一些代码可以帮助任何人开始:

// This is helpful, also basically undocumented.
AWSLogger.defaultLogger().logLevel = .Verbose

let credentials = AWSStaticCredentialsProvider(accessKey: accessKeyId, secretKey: secretAccessKey)
let config = AWSServiceConfiguration(region: AWSRegionType.USWest2, credentialsProvider: credentials)

let listRequest = AWSS3ListObjectsRequest()
listRequest.bucket = "mybucket"
listRequest.prefix = "folder/"

// The key name allows you to set up multiple, global S3 configurations
// -- in case you'd ever want to do that, in violation of OO programming principles.
// But there's no way to make S3 requests using only a local config.
AWSS3.registerS3WithConfiguration(config, forKey: "s3")

AWSS3.S3ForKey("s3").listObjects(listRequest).continueWithBlock { (task: AWSTask!) -> AnyObject! in
    if task.error != nil {
        NSLog("error %@", task.error)
    }
    if task.result != nil {
        NSLog("finished %@", task.result!.description)
    }
    return nil
}

答案 3 :(得分:0)

正如Caleb所说:OS X没有正式的AWS SDK。

完成S3文件上传的最简单方法是使用ASIHTTPRequest。它是CFNetwork的包装器,易于使用。缺点是没有ARC支持,所以你必须自己处理内存管理......

答案 4 :(得分:0)

我需要AWS SDK for Mac来支持为我的iOS应用程序预先填充数据库,并且对它不存在感到惊讶(考虑到生产它将如何与iOS版本非常相似)。我下载了上面Amber提到的github MacOS SDK以及上面AWS链接中提到的那个。然而,两者都没有直接建立,所以我决定自己修改iOS SDK,以便我能理解这个过程是什么。 以下是我在MacOS 10.9上使用XCode 5.0.2进行DynamoDB的步骤:

1.下载iOS AWS 1.7.0 SDK,复制文件夹并将文件夹重命名为aws-MacOS-sdk-1.7.0(少量条件编译,如果构建脚本中的if / else将取消这一步)

2.Modify src / Scripts / Framework.sh - 这是所有AWS框架的构建工具   - 将所有四个xcodebuild行(30-39)替换为:

`xcodebuild -configuration Release -project "${PROJECT}.xcodeproj" -target "${PROJECT}" -sdk macosx10.9`
  • 用以下方法替换唇线(82-87)

    FRAMEWORK_INPUT_MAC_FILES="build/Release/lib${PROJECT}.a" cp "$FRAMEWORK_INPUT_MAC_FILES" "$FRAMEWORK_DIR/Versions/Current/$FRAMEWORK_NAME"

3.在src文件夹中,每个框架都有一个XCode项目,每个项目都需要:

  • 将项目的基础SDK更改为最新的OS X
  • 将FTarget框架的SDKROOT更改为macosx10.9
  • 确保将当前方案设置为Framework and build
  • 修复编译器错误(我遇到了一些与@property有关的问题,不得不用<UIKit/UIKit.h>替换<Cocoa/Cocoa.h>[[UIDevice currentDevice] systemName]替换为[[NSProcessInfo processInfo] operatingSystemVersionString] < / LI>

为了让DynamoDB正常工作,我必须构建四个框架 - 这是相当轻松的