はじめに
FlutterでAmazon Web Serviceを使いたかったのですが、
現時点でDart用のSDKは用意されていません。
そこで何とか使う方法を探ってみてうまくいったので、この記事ではその導入手順について解説します。
dart:js
を使ってAWSのfor JS SDKを叩くやり口もあるかもしれませんが、ここで紹介するのは各プラットフォーム毎にパッケージを導入してそれぞれのネイティブコードを書く戦術です。
環境
- macOS High Sierra 10.13.3
- Xcode 9.2
- Android Studio 3.0.1
手順
公式サイトを参考にしつつ、プラットフォームと連携したプロジェクトを作っていきます。
プロジェクトの作成
デフォルトではAndroidはJAVA、iOSはobjective-Cのコードが生成されます。もしKotlinとSwiftに変えたい場合には以下のようにします。
$ flutter create -I swift -a kotlin {project_name}
iOSプラットフォームサイドにAWS SDKを導入
今回はCarthageを使っていきます。
AWS公式Github
Carthageのセットアップ
Carthageをインストールします。
$ brew install carthage
{Flutterプロジェクトディレクトリ}/ios/
にCartfileを作成します。
$ vi Cartfile
Cartfileの中身は以下のようにします。
github "aws/aws-sdk-ios"
ライブラリをインストールするために、以下のコマンドを走らせます。
$ carthage update
Xcodeでの設定
-
{Flutterプロジェクトディレクトリ}/ios/Runner.xcworkspace
をXcodeで開きます。 - Target > General > Embedded Binariesにある**+ボタン**をクリックします。
- 出てきたウィンドウで**Add Other...**をクリック。
-
{Flutterプロジェクトディレクトリ}/ios/Carthage/Build/iOS/
にframeworkファイルがあるので、使いたいものを選択します。面倒なので*.frameworkを全て選択しました。 - Destination: Copy items if neededはチェックを入れずにFinishをクリック。
/usr/local/bin/carthage copy-frameworks
このステップを飛ばしてもアプリは動くには動きます。
ここまででiOSでの導入は完了となります。
AndroidプラットフォームサイドにAWS SDKを導入
作業としてはiOSより楽です。
セットアップ
- AWS Android SDKをダウンロードします
- ダウンロードしたフォルダの中から必要なライブラリとなるjarファイルを選び、Flutterプロジェクトの
app/libs
下にコピー。 -
app/build.gradle
ファイルのdependencies
欄に 前手順で移動したファイルの分だけcompile files
行を追加します。
ここまででAndroidでの導入は完了です。