チーム開発をするときなどに、自分のコードを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に書き換えて使用してください。
...
MAPS_API_KEY=your_api_key//これを追加
<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
とします。
String api_key = "your_api_key";
...
import 'apikey.dart' //apikey.dartファイルをimport
//これで、main.dart内でapi_keyが呼び出し可能になる
String APIKey = api_key
...
main.dart以外でも、lib配下のファイルであればやり方は同じです。その後に、プロジェクトファイル直下の.gitignore
ファイルにapikey.dart
を追加してください。
apikey.dart
...
#iOS
同様に、ios/Runner
ディレクトリ配下にAPIKeyを格納するファイルを作ります。ここではファイル名はapikey.h
とします。同じくios/Runner
配下にあるAppDelegate.m
へ書き出します。
NSString *maps_api_key = @"your_api_key";
...
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
そして、同様にプロジェクト直下の.gitignore
にapikey.h
を追加します。
apikey.dart
apikey.h
...
Swiftを使っている場合どうなるのかはちょっと謎です...が、他サイトに結構乗っていたので今回は割愛します。
#最後に
Qiitaにはいつも助けられているので、少しでも皆さんのお役に立てば幸いです!
ただこの辺のことはちゃんと理解しているわけではないので、変なことを言っていれば知らせていただけると助かります()