问题 用于mac os x应用程序开发的aws sdk [关闭]


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

此外,AWS SDK文档未说明如何将文件上载到S3。有没有人有一个如何做到这一点的例子?

谢谢


3312
2018-02-27 06:17


起源

这根本不是主题。找到适用于Mac OS的AWS开发工具包非常有用。 - Eddie Sullivan


答案:


判断 关于这个主题的讨论 在里面 AWS开发者论坛似乎还没有适用于MacOS X的官方AWS开发工具包,但iOS版本已接近可用。这个帖子的一个贡献者发布了 据称可在MacOS X上运行的修改版本 至少有一些服务。我没有任何个人经验,但似乎值得一看。


4
2018-02-27 07:43



我真正做的就是分叉iOS官方版本,然后做一些非常小的改动 - 只需要满足编译器,就像在任何iOS代码中使用ifdef(不多),并交换一些头文件<UIKit>转到< Cocoa>等。对于大型项目,您可能希望使用自己的fork,因此您可以亲自查看所有更改。我将它用于S3,SimpleDB,SQS和IAM。 - Tom Andersen
这就是我所做的,但是当我调用AmazonS3Client类的listBuckets方法时,我得到一个奇怪的异常。它说:尝试使用appendString来改变不可变对象:我已经在整个SDK中搜索了appendString调用,但是我没有找到任何东西。我发现在第464行的AmazonS3Client中调用NSRunLoop runMode:beforeDate:时会发生错误。任何人都可以帮忙吗? - NSAddict
好的,我已经尝试了你的答案中的修改版本,它适用于这个。还在想为什么它不起作用...... - NSAddict


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


7
2018-06-17 20:12



+1就像一个魅力 - ingh.am
那个时候,我管理它与macOS一起工作而没有太多的代码,但是Amber非常感谢这一点,它会帮助别人...... - Omer Waqas Khan
我找不到框架,你可以把步骤或截图,我怎样才能找到你的建议src / AWSiOSSDK.xcodeproj后我​​找到框架我打开这个项目然后构建但没有找到任何框架:( plz帮助 - Nitin Gohel


以下是 以前的答案,我分叉并修改了适用于iOS的AWS SDK的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 构建所有框架。构建的框架在根中结束/build 您的AWS开发工具包目录(如果您构建它们)。

但是,他们的文件非常糟糕。例如,如果您想使用访问密钥而不是Cognito身份,则必须完成代码并弄清楚如何(至少可能!)。想列出S3存储桶的内容吗?祝你好运。大多数必需的类甚至没有列在 文件。你必须包括 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
}

5
2017-07-06 04:49



你是我整周给出的最大虚拟高五的接收者! - Chris
@jab你能提供一些如何使用它的细节。我下载了一个ZIP存档但无法构建它 - 它抱怨我的Mac不是有效的目标? - Duncan Groenewald
好的,我知道了 !运行脚本!!但是会出现以下错误。 ** BUILD FAILED ** The following build commands failed: CompileC build/AWSMobileAnalytics.build/Debug/AWSMobileAnalytics.build/Objects-normal/x86_64/AWSMobileAnalyticsIOSLifeCycleManager.o AWSMobileAnalytics/Internal/AWSMobileAnalyticsIOSLifeCycleManager.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (1 failure) Error occurred, abort - Duncan Groenewald
你究竟在跑什么?您是否正在尝试为MacOS或tvOS构建?此错误消息不是很有帮助。真正的错误可能出现在最终中止消息之上的页面和页面。 - jab
@jab所以我使用你的源代码构建了框架,并将它们添加到我的项目框架下,而没有为aws sdk运行pod install(因为我被拒绝了,警告消息说他们不支持osx)。现在我收到以下错误消息: 'AWSCore/AWSCore.h' file not found。有什么我想念的吗?非常感谢你! - Chris P


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

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


0
2018-02-27 07:48



ASI基本上已停产。一探究竟。 - Tom Andersen


我需要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`
  • 将lipo线(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项目,对于你需要的每个项目:

  • 将Project的Base SDK更改为最新的OS X.
  • 将FTarget的Framework的SDKROOT更改为macosx10.9
  • 确保将当前方案设置为Framework和build
  • 修复编译器错误(我有一些与@property有关的问题,不得不替换 <UIKit/UIKit.h> 同 <Cocoa/Cocoa.h> 在这里和那里,和 [[UIDevice currentDevice] systemName] 同 [[NSProcessInfo processInfo] operatingSystemVersionString]

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


0
2017-12-15 16:34



我似乎无法摆脱这个错误::'Cocoa / Cocoa.h'文件未找到。 - Shumais Ul Haq
您是否按照我项目自述文件中的说明进行操作?谢谢。 - Amber Haq Dixon