web-dev-qa-db-ja.com

Android Studiogradleビルドからの環境変数へのアクセス

私の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に入力する方法はありますか?

16
Pavel Dudka

ここで答えが見つかりました: Mac OS Xの環境変数

基本的に、launchdが使用する環境変数もlaunchctl経由で設定する必要があります。これにより、MacOSUIから起動したすべての環境変数を使用できるようになります。

そこで、~/.bash_profileを次のように変更しました。

export MY_CUSTOM_VAR='Hello World'
launchctl setenv MY_CUSTOM_VAR $MY_CUSTOM_VAR
25
Pavel Dudka

Launchctl setenvを使用して、launchd(および拡張機能としてSpotlightから開始されたもの)で使用される環境を設定できます。たとえば、パスを設定するには:

launchctl setenv MY_CUSTOM_VAR /***/***/***

再起動後も変更を保持するには、次のように/etc/launchd.confから環境変数を設定できます。

setenv MY_CUSTOM_VAR /***/***/***

ご覧のとおり OS Xで環境変数を設定しますか?

0
ohmer