Flutterでの開発でAPIKeyを隠してGithubにあげる方法


チーム開発をするときなどに、自分のコードをGithubなどにあげたい!→でもAPIKeyを隠さないと...というときがあると思います。そうした時に、これが最も手っ取り早くAPIKeyを隠す方法だと思ったので共有します。
※私が作っていたアプリが地図系なので、APIKeyの名前もそんな感じになってますが、お構いなく好きに名前つけてもらって大丈夫です()

Android

基本的な設定

https://www.entwicklernotizen.de/blog/how-to-handle-secret-api-keys-in-flutter-for-android-and-i-os/
android/app/src/main/AndroidManifest.xmlへのAPIKeyの書き込みについてはこれを参考にしてください。ここから先のコードは、your_api_keyという文字列を自分のAPIKeyに書き換えて使用してください。

android/local.properties
...
MAPS_API_KEY=your_api_key//これを追加
AndroidManifest.xml
<manifest...
  <application...
    <meta-data...
      android:name="com.google.android.geo.API_KEY"
      android:value="${MAPS_API_KEY}"
    />
    ...
  />
  ...
/>

lib/main.dartへの書き出し

libディレクトリ配下のファイルへの書き出しについては、lib配下にファイルを作ってそれをimportすることによって書き出しを行います。ファイル名はapikey.dartとします。

apikey.dart
String api_key = "your_api_key";
main.dart
...
import 'apikey.dart' //apikey.dartファイルをimport
//これで、main.dart内でapi_keyが呼び出し可能になる
String APIKey = api_key
...

main.dart以外でも、lib配下のファイルであればやり方は同じです。その後に、プロジェクトファイル直下の.gitignoreファイルにapikey.dartを追加してください。

.gitignore
apikey.dart
...

iOS

同様に、ios/Runnerディレクトリ配下にAPIKeyを格納するファイルを作ります。ここではファイル名はapikey.hとします。同じくios/Runner配下にあるAppDelegate.mへ書き出します。

apikey.h
NSString *maps_api_key = @"your_api_key";
AppDelegate.m
...
import "apikey.h"//これを追加

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [GMSServices provideAPIKey:maps_api_key];//ここにapikey.hで定義したmaps_api_keyを追加
  [GeneratedPluginRegistrant registerWithRegistry:self];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}

@end

そして、同様にプロジェクト直下の.gitignoreapikey.hを追加します。

.gitignore
apikey.dart
apikey.h
...

Swiftを使っている場合どうなるのかはちょっと謎です...が、他サイトに結構乗っていたので今回は割愛します。

最後に

Qiitaにはいつも助けられているので、少しでも皆さんのお役に立てば幸いです!
ただこの辺のことはちゃんと理解しているわけではないので、変なことを言っていれば知らせていただけると助かります()