20
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Flutterで環境変数を利用する方法

Posted at

はじめに

APIキーなど、Gitで管理したくない場合や、環境によって値が変わる情報は、環境変数で管理するのがベターです。今回はその方法をご紹介します。

IDEはVSCode、CI/CDにGithubActionsの利用を想定しています。

パターン

環境変数を取得する場合、取得する場所によって定義方法が変わります。
取得するパターンとしては以下の通り。

  • Dartから利用する場合
  • Android、iOSで利用する場合

前準備

  • Github Actionsで利用する環境変数をリポジトリの「Settings」→「Secrets」で登録しておきます。

Dartで利用する

設定編

ローカル環境(VSCode)で設定する

.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "flutter_mobile",
            "program": "lib/main.dart",
            "request": "launch",
            "type": "dart",
            "args": [
               "--dart-define=API_KEY=<値>"
            ]
        }
    ]
}

Github Actionsで設定する

「Secrets」で登録した変数は、 ${{secrets.<変数名>}} で取得できます。

.github/workflows/deploy.yml(抜粋)
steps:
  - name: build
    run: flutter build apk --dart-define=API_KEY=${{secrets.API_KEY}}

取得編

dart
String.fromEnvironment("API_KEY");

Android、iOSで利用する

設定編

ローカル環境(VSCode)で設定する

.vscode/launch.json
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "flutter_mobile",
            "program": "lib/main.dart",
            "request": "launch",
            "type": "dart",
            "env":{
                "API_KEY": "<値>"
            },
        }
    ]
}

Github Actionsで設定する

.github/workflows/deploy.yml(抜粋)
steps:
  - name: build
    env:
      API_KEY: ${{secrets.API_KEY}}
    run: flutter build apk

取得編

Androidで取得する

build.gradle
System.getenv('API_KEY')

AndroidManifest.xmlで取得したい場合、build.gradleにビルド変数を定義し、そこから取得する必要があります。

build.gradle
android {
  ・・・
  defaultConfig {
    ・・・
    // manifestPlaceholdersを利用して、環境変数から取得した値を任意の変数で定義する
    // ビルド変数名と環境変数名は同じになっていますが、異なっていても問題ないです。
    manifestPlaceholders = [API_KEY: System.getenv('API_KEY')]
  }

次にAndroidManifest.xmlにbuild.gradleに定義したビルド変数を取得します。

AndroidManifest.xml
<application
        android:name="io.flutter.app.FlutterApplication"
        android:label="flutter_mobile"
        android:icon="@mipmap/ic_launcher">

        <meta-data
        android:name="API_KEY"
        android:value="${API_KEY}"/> <!-- ${ビルド変数名}でビルド変数の値を取得できる -->

iOSで取得する

swift
ProcessInfo.processInfo.environment["API_KEY"]
20
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?