2012-02-27 66 views
11

我需要開發一個MAC OS X應用程序,它將上傳選定的文件到亞馬遜網絡服務。但爲此,我需要aws sdk for mac。我在網上找不到任何東西。是否可以修改AWS SDK for iOS以便它可以用於Mac?aws sdk for mac os x應用程序開發

另外,AWS SDK文檔沒有說明如何將文件上傳到S3。有沒有人有如何做到這一點的例子?

感謝

+1

這不是題外話的。找到適用於Mac OS的AWS開發工具包會非常有幫助。 – 2016-05-26 18:49:14

回答

4

通過a discussion on this topicAWS Developer Forums來看,似乎沒有成爲一個正式的AWS SDK適用於MacOS X還,但iOS版本已接近可用。該主題的貢獻者之一已經爲至少一些服務發佈了a modified version that allegedly works on MacOS X。我沒有任何親身經歷,但似乎值得一看。

+4

真的我所做的只是叉子iOS的正式版,然後做出一些很細微的變化 - 都在那裏簡單地滿足編譯器,就像使用的ifdef各地的任何iOS的唯一代碼(不要太多),並交換了一些頭,等等。對於一個大型項目,您可能需要使用自己的分支,以便您親自看到所有更改。我將它用於S3,SimpleDB,SQS和IAM。 – 2012-02-27 15:43:44

+0

這就是我所做的,但是當我調用AmazonS3Client類的listBuckets方法時,我遇到了一個奇怪的異常。它說: 試圖改變一個不可改變的對象與appendString: 我已搜查了整個SDK的appendString電話,但我沒有發現任何東西。我發現在調用NSRunLoop runMode時出現錯誤:beforeDate:在AmazonS3Client的第464行。 任何人都可以幫忙嗎? – NSAddict 2012-10-03 08:00:30

+0

好吧,我已經用你的答案修改過的版本來試用它,它可以很好地適用於這個。仍然想知道爲什麼它不工作... – NSAddict 2012-10-03 08:44:03

0

正如迦勒提到:沒有正式的AWS SDK爲OS X

完成使用ASIHTTPRequest S3文件上傳的最簡單方法。它是CFNetwork的包裝,易於使用。缺點是沒有ARC支持,所以你必須自己處理內存管理...

+1

ASI基本上已經停產。一探究竟。 – 2012-02-27 15:40:48

7

我已經創建了一個可以構建和用於Mac OS X開發的AWS iOS SDK的分支。檢查出來:https://github.com/amberdixon/aws-sdk-ios。在自述文件中,我介紹瞭如何構建AWS iOS SDK框架的Mac OS X版本。 tomandersen回購似乎使用iOS SDK的更老的版本,我創建的版本更加流行。

+0

+1的作品就像一個魅力 – 2013-10-22 23:56:08

+0

當時,我設法將其與MacOS的工作,而不與代碼更加混亂,但琥珀感謝很多關於這一點,它會幫助別人...... – 2013-12-16 11:51:34

+0

我找不到框架,你可以請把步驟或屏幕截圖我如何才能找到的框架建立後,你的建議的src/AWSiOSSDK.xcodeproj我打開這個項目再建,但沒有發現任何框架:(plz幫助 – 2015-03-07 10:06:12

0

我需要適用於Mac的AWS開發工具包來支持爲我的iOS應用程序預填充數據庫,並驚訝於它不存在(考慮生成的版本與iOS版本如此相似將會如何微不足道)。我下載了Amber上面提到的github MacOS SDK和上面AWS鏈接中提到的那個。然而,它們都沒有直接構建,所以我決定自己修改iOS SDK,以便我能夠理解這個過程是什麼。 以下是我在MacOS 10.9上使用DynamoDB在XCode 5.0.2中工作的步驟:

1.下載iOS AWS 1.7.0 SDK,複製文件夾並將文件夾重命名爲aws-MacOS-sdk -1.7.0(少量的條件編譯和構建腳本中的if/else將取消該步驟)

2.修改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.In src文件夾中有每個框架中的XCode項目,爲每一個需要:

  • 將項目的基礎SDK更改爲最新的OS X
  • 將FTarget的框架的SDKROOT更改爲macosx10。9
  • 確保當前的計劃設置爲框架,構建
  • 修復編譯器錯誤(我有一大堆的問題@財產的事,曾與[[NSProcessInfo processInfo] operatingSystemVersionString]
更換 <UIKit/UIKit.h><Cocoa/Cocoa.h>在這裏和那裏,和 [[UIDevice currentDevice] systemName]

要獲得DynamoDB工作,我必須建立4個體系 - 這是相當容易

+0

我似乎無法擺脫這種錯誤::「 Cocoa/Cocoa.h' – 2014-04-30 11:16:10

+0

您是否按照我項目的README中的說明操作?謝謝。 – 2014-05-30 18:18:07

4

繼上previous answer,我分叉並修改了AWS SDK V2.2的適用於iOS,因此現在建立適用於Mac OS X(在測試優勝美地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 
} 
+0

您是我整個星期給出的最大虛擬高五的接收者! – Chris 2015-10-02 21:26:01

+0

@jab能否提供一些細節關於如何使用這個。我下載了一個ZIP壓縮文件,但無法構建它 - 它抱怨說我的Mac不是一個有效的目標? – 2015-12-04 11:45:19

+0

好了!運行腳本!儘管獲得以下錯誤。 '**建立失效** 以下製作命令失敗: \t CompileC建立/ AWSMobileAnalytics.build /調試/ AWSMobileAnalytics.build /對象 - 正常/ x86_64的/ AWSMobileAnalyticsIOSLifeCycleManager.o AWSMobileAnalytics /內部/ AWSMobileAnalyticsIOSLifeCycleManager.m正常x86_64的objective-c com.apple.compilers.llvm.clang.1_0.compiler (1個失敗) 發生錯誤,中止' – 2015-12-04 11:48:27