【Flutter】重要キーを隠す方法
本記事を書いた理由
APIキー等の重要なキーを隠したかったから。
参考:https://www.youtube.com/watch?v=5C0MFSIH5qI&t=300s
手順
①必要パッケージのインストール
②.envファイルの作成
③env.dartファイルの作成
④env.g.dartファイルの作成
⑤.gitignoreファイルの編集
⑥.envファイルの削除
①必要パッケージのインストール
以下はいつもの場所に記述する
・envied
下記二つは以下画像の箇所に記述する
・envied_generator
・build_runner
②.envファイルの作成
下記画像を参考に以下の流れでファイルやフォルダを作成する
①新規で「scripts」フォルダを作成する
②新規で「env」フォルダを作成する
③新規で「.env」ファイルを作成する
④.envファイル内に、秘匿化したいAPIキー等の情報を記載する
Example_APIKEY=000000000aaaaaaaaa
③env.dartファイルの作成
libフォルダ内に「env.dart」ファイルを作成する
「obfuscate: true」の記述を行うことで、この後生成する「env.g.dart」ファイル中に記載されるキー情報が難読化される為セキュリティが向上する
import 'package:envied/envied.dart';
part "env.g.dart";
(path: 'scripts/env/.env')
abstract class Env {
//varNameに設定する名前は「.envファイル」内に記載している「キーの名前」を記入する
(varName: 'Example_APIKEY', obfuscate: true)
static String pass1 = _Env.pass1;
}
記入したては、"env.g.dart"や_Envの箇所にエラーが出ますが気にせず次のフェーズへ...
④env.g.dartファイルの作成
ターミナルで以下コードを入力 → エンターキー押下
すると、env.g.dartファイルが自動生成される
flutter pub run build_runner build --delete-conflicting-outputs
⑤.gitignoreファイルの編集
.gitignoreファイル内の48行目に以下コードを記載する
# 開発中のコードから秘密情報を漏らさないための処理
.env
env.g.dart
⑥.envファイルの削除
env.g.dartファイルとenv.dartファイルができあがれば、.envファイルは不要なのでセキュリティ上削除をしておく。
上記手順後に別ファイルで重要キーを使う
//「Env.pass1」のように使う
String apiKey = Env.pass1;
トラブルシューティング
env.g.dartファイルの作成で以下コマンドをターミナルに打ち込んでさらにその下のエラーが発生した場合、、、
flutter pub run build_runner build --delete-conflicting-outputs
Environment variable not found for field `pass1`.
このような場合は以下を実行すると解決した
1.enviedコードを利用せずに一度もbuid_runnerを実行していない状態で実行するとこのエラーが出る
2.解決方法としては、一度このenv.dartをコメントアウトしてからbuid_runnerを実行。その後再びenv.dartを復元してからbuid_runnerを実行する
参照元:https://qiita.com/mutaka/items/c2e6c1ee1b728ed855b3#解決方法
Discussion