私のAndroid Gradleビルドでは、.bash.profile
から設定した環境変数にアクセスする必要があります。コマンドラインからビルドすると正常に機能します-Gradleスクリプトはすべての変数を見ることができます。
ただし、ビルドをAndroid Studioから実行しようとすると-環境変数がなくなります。
これが私が直面していることの大まかな写真です:
1)~/.bash.profile
を介してカスタム環境変数を設定します。
export MY_CUSTOM_VAR='Hello World'
2)build.gradle
で、この環境変数を出力するタスクを作成します。
task printVar << {
println System.getenv("MY_CUSTOM_VAR")
}
3)コマンドラインからprintVar
を実行します。出力は正しいです-env変数が設定されています:
出力:Hello World
4)printVar
from Android Studio。環境変数設定されていません。出力が空
常識によれば、export MY_CUSTOM_VAR='Hello World'
を実行することで、この変数をシェルプロセス(およびそのサブプロセス)で使用できるようにします。そして、コマンドラインからAndroid Studioを起動すると(環境を継承するため)、動作する可能性があります。しかし、Android Studioをドックから起動するので(ちなみに私はMacを使用しています)-それは私の~/.bash.profile
について何も知らない独自の環境を持っています。
カスタム環境変数をAndroid Studioに入力する方法はありますか?
ここで答えが見つかりました: Mac OS Xの環境変数
基本的に、launchd
が使用する環境変数もlaunchctl
経由で設定する必要があります。これにより、MacOSUIから起動したすべての環境変数を使用できるようになります。
そこで、~/.bash_profile
を次のように変更しました。
export MY_CUSTOM_VAR='Hello World'
launchctl setenv MY_CUSTOM_VAR $MY_CUSTOM_VAR
Launchctl setenvを使用して、launchd(および拡張機能としてSpotlightから開始されたもの)で使用される環境を設定できます。たとえば、パスを設定するには:
launchctl setenv MY_CUSTOM_VAR /***/***/***
再起動後も変更を保持するには、次のように/etc/launchd.confから環境変数を設定できます。
setenv MY_CUSTOM_VAR /***/***/***
ご覧のとおり OS Xで環境変数を設定しますか?