Gradle、Android、およびANDROID_HOME SDKの場所


152

編集:(2016年8月)

その質問は2013年11月からです(Android Studioがまだ開発者プレビューモードのとき)。

現在(AS v2.2、2016年8月)ASのインストール中に、ASはSDKフォルダーの選択(またはデフォルトでのインストール)を要求し、開いているどのプロジェクトにも自動的に適用されます。

これは、問題が再現可能ではないため、考えられる回避策や修正は無関係であることを意味します。

元の質問:

このプロジェクトにはいくつかのモジュールがあり、すでに構成されており、ラッパーを使用して別の開発者PCで正しく実行されます。完全なgitサブモジュールを自分のマシンに複製しました。

その下は私のコマンドラインの直接のプリントです:

$ ./gradlew

FAILURE: Build failed with an exception.

* Where:
Build file '/home/budius/project_name/ActionBar-PullToRefresh/library/build.gradle' line: 1

* What went wrong:
A problem occurred evaluating project ':ActionBar-PullToRefresh:library'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.378 secs

$ echo $ANDROID_HOME
/home/budius/Applications/android-studio/sdk
$ 

ご覧のとおり、ANDROID_HOMEがあります。彼らは他に何をしたいですか?ここで何が問題になっていますか。

Ubuntu 13.04で実行

編集:

sdk.dir=<path>プロジェクトルート上にlocal.propertiesファイルを作成しましたが、機能します。しかし、これによりコードをシステムとビルドサーバー間で移植することが難しくなるため、問題は未解決のままです。

ANDROID_HOMEが機能しない理由と、それを機能させるために何をすべきか、誰もが知っていますか?


1
プロジェクトのルートディレクトリの下にあるlocal.propertiesファイルでSDKのパスを指定してみてください。ファイルには次のものが含まれているはずです:sdk.dir = <sdk_install_dir>
Gabriele Mariotti

1
こんにちは@GabrieleMariottiの提案に感謝します。しかし、私はすでにこれを行い、それは機能します。しかし、これにより、コードをシステムとビルドサーバー間で移植することが難しくなります。ANDROID_HOMEが機能しない理由と、それを機能させるために何をすべきかを誰かが知っているかどうか知りたいのですが。この情報を質問に追加しました。
Budius 2013年

このG +コミュニティに投稿することをお勧めします。plus.google.com/communities/114791428968349268860これは公式のGoogleコミュニティです。通常、Googleチームが迅速に回答します。
Gabriele Mariotti 2013年

ええ、私は彼らに試してみます。ありがとう!
Budius 2013年

2
@Budius私はエラーメッセージで同様のケースがありました。解決策は、settings.gradleファイルをプロジェクトフォルダに追加することでした。
JJD 2014年

回答:


94

私は問題を解決しました。これは私にとってはうまくいきます:

/ my_current_project /

local.propertiesという名前のファイルを作成し、中に入れました

sdk.dir = / my_current_path_to / sdk

コンソールで行う必要があります

ANDROID_HOME = / my_current_path_to / sdkを設定します

お役に立てれば。


8
local.propertiesファイルは「ローカル」であり、バージョン管理下ではないため、問題は修正されません。(Budiusと同じ問題:ラップトップのこのlocal.propertiesファイルで開発中にビルドを作成したいが、sdksパスが同じではないため、ビルドマシンでこのファイルを使用したくない!)
Tobliug

7
\\ \\ソフトADT-バンドル-Windowsのx86_64-20140702 \\ SDK:Windows上で少なくともそれは、文字列sdk.dir = Dバックスラッシュの後に働いた
Cheburek

@Tobulug:バージョン管理下のファイルを制御でき、ローカルファイルを追加または選択解除しない
sivi

セットの代わりにエクスポートを使用して修正してください。
AugustoL 2016

1
セットが間違っていたので、エクスポートを使用しました。ただし、この方法でこの変数をエクスポートする場合、Projekt-Folderにlocal.propertiesファイルは必要ありません。リブートのたびにこの設定を維持するには、export-commadを〜/ .bashrcに追加します
16年

52

OSXでは、IntelliJは.bash_profileまたは.bash_rcなどで設定した環境変数を取得しません...

あなた自身のSDKの場所の値を置き換えて、これを試してください:

launchctl setenv ANDROID_HOME /usr/local/opt/android-sdk

次にIntelliJを再起動し、Bobはあなたの叔父です。

これが問題への参照であり、より一般的に述べられています:https : //emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/


4
参考までに、このソリューションはosx用です。
Matthew Daumen、2015

4
ええ、私のためにelcapitanで働いた。launchctl setenv ANDROID_HOME ~/Library/Android/sdk
agmcleod 2015

2
またはあなたの環境変数は、単にプロキシのようにすることができますlaunchctl setenv ANDROID_HOME $ANDROID_HOMElaunchctl setenv JAVA_HOME $JAVA_HOME
Vagif

参考までに、OSXの場合、この修正は、bash以外のシェル(zshなど)を使用しているときに同じエラーが発生した場合に、gradleを使用したコマンドラインのビルドにも役立ちます。このコマンドを実行して、ターミナルウィンドウを再起動してください。
割り込み

30

私の場合settings.gradleは行方不明でした。

ファイルを保存して、プロジェクトの最上位フォルダーに配置します。別のプロジェクトからコピーすることもできます。

スクリーンショットのリファレンス:

ここに画像の説明を入力してください

これがあなたの時間を節約することを願っています。


または、誰かがサブモジュールをsettings.gradleファイルに追加しませんでした。私のチームには、サブモジュールを追加した後でこれを行わなかったジュニアがいました。彼らのIntellIJがどのように構成されているかはわかりませんが、これは私の時間のかなりの量を無駄にしました。
スティーバーズ

25

これは私にとってはうまくいきます:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

1
これを上記の「export」行を〜/ .bashrcまたは〜/ .bash_profileに追加して、再起動後も永続的にすることができます。
サザー

19

Android Gradleプラグインはまだベータ版であり、これは単にバグである可能性があります。私にとって、ANDROID_HOMEの設定は機能しますが、バージョンが異なる場合があります(最新バージョンで再試行して、機能するかどうかをお知らせください)。

ANDROID_HOMEだけでなく、環境変数ANDROID_SDKも設定する価値があります。

一部のマシンでこの問題が発生したため、これらのケースではlocal.propertiesを作成しています。また、Android Studioの最新バージョンがこのファイルを作成し、sdk.dirプロパティに入力することにも気付きました。

local.propertiesをバージョン管理にチェックインしてはいけないことに注意してください。gitignoreにlocal.propertiesを追加して、潜在的な問題として正当に特定されたシステム間でのコードの移植を妨げないようにしています。


2
ANDROID_SDKを定義しても、何もしませんでした。
ヒースボーダー

GradleのどのバージョンとAndroidプラグインを使用していますか?local.propertiesファイルはありますか?
ZoFreX 2014

2
追加sdk.dir=/path/to/android/sdkは私のために働いた。IntelliJ 13.0.2で作成されたプロジェクトの一部としてGradleを実行しています
Heath Borders

これはIntelliJバグのようです。youtrack.jetbrains.com/issue/IDEA-119361
Heath Borders

IntelliJまたはAndroid Studioにもバグがある可能性がありますが、元の質問はコマンドラインからGradleを使用することに関するものでした。編集:また、私のシステムでは、IntelliJはコマンドラインから環境変数を継承しません。
ZoFreX 2014年

16

何らかの理由で、gradleスクリプトは環境からANDROID_HOMEの値を取得していません。コマンドラインで明示的に指定してみてください

$ ANDROID_HOME=<sdk location> ./gradlew

1
ANDROID_HOMEでは機能しますが、ANDROID_NDK_HOMEでは機能しません。後者にはlocal.propertiesを使用する必要がありました。
Andrew Smart

この回避策は、(dockerコンテナー内では)私には何もしません。
IgorGanapolsky 2016年

14

メインモジュールにlocal.propertiesファイルがあり、ANDROID_HOME環境変数がシステムレベルで設定されていましたが、同じ問題に直面しました。

この問題を修正したのは、メインプロジェクトモジュールにあるlocal.propertiesファイルをプロジェクト全体のルート(つまり、メインモジュールの親ディレクトリ)にコピーしたときです。

モジュール内のlocal.propertiesファイルとルートディレクトリをコピーしてみてください。うまくいくはずです。


1
IDEによってlocal.propertiesファイルが自動生成されると思いました。このファイルを他のディレクトリに手動でコピーまたは移動する必要があるのはなぜですか?
IgorGanapolsky 2016年

13

クローンされたgitリポジトリを開くと、同じ問題に遭遇しました。local.propertiesファイルは、各マシンのビルド環境に固有であり、したがってリポジトリの一部ではないため、.gitignoreファイルに自動的に追加されます。

解決策は、gitからクローンを作成した後にプロジェクトを開くだけでなく、プロジェクトをインポートすることです。これにより、android studioはマシンに固有のlocal.propertiesファイルを作成します。

ファイル>>プロジェクトのインポート>>


12

MAC OSX:

  1. ターミナルを開いてファイルを編集します。

~/.bash_profile

たす:

export ANDROID_HOME=~/Library/Android/sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools

  1. 実行:

    source ~/.bash_profile

  2. ターミナルとAndroid Studioを再起動します


8

MAC OSXでそれを行う方法:

1)ターミナルを開いて編集:vi ~/.bash_profileファイルがない場合は、追加します。

2)追加(ユーザー名に変更してこれを追加):

#Java var home: JAVA_HOME="/usr/libexec/java_home" ANDROID_HOME="/Users/<YOUR USER NAME>/Library/Android/sdk"

3)を実行しますsource ~/.bash_profile

4)実行 echo $JAVA_HOME; echo $ANDROID_HOME;

5)出力が次の場合:

/usr/libexec/java_home /Users/<YOUR USER NAME>/Library/Android/sdk

だからあなたは良いです。

Androidスタジオを再起動してください!

そして、あなたがjavaを持っていることを確認してください:)

java -version

そしてgradle :)

gradle --version


あなたが行方不明だと思う:export ANDROID_HOME
Kra

1
私は設定ANDROID_HOMEしてから実行しますsource ~/.bash_profile、これは透過的です(sourceログアウトしてログインしたり再起動したくない場合は、実行が良いです)。あなたの場合、を使用するとexport ANDROID_HOME、再起動またはログイン後に、ANDROID_HOMEmac の環境変数がなくなります。
Nimitack


4

これは私のために働きました(Ubuntu):

に追加ANDROID_HOME=/path/to/android-sdk/etc/environmentます。

リブート。


私は何日もこのことに悩まされ、このことだけがうまくいきました。ありがとうございます。
Zygro 2018

3

Windowsでは、ANDROID_HOME = E:\ android \ adt-bundle-windows-x86_64-20131030 \ sdkを設定すると、期待どおりに機能します。

Linuxでは、sdk.dirを設定する必要があります。

スクリプトは2つの異なる変数を使用します。


1
私はそれを追加し、location.propertiesファイルに追加しましたが、同じ問題に直面しています
Suneel Prakash

1
Windowsでは、パスのバックスラッシュをエスケープしてください。私はパスを入力しなければなりsdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
ませんでした

2

私は同じ問題を抱えていますが、サンプルコードがandroid環境を見つけることができないようです。代わりに、settings.gradleからサンプルコードを削除するだけで修正を試みると、インストールは正常に行われます。

その後、Eclipseでプロジェクトをインポートするだけです。それだけです:)


2

Linuxでは、ターミナルからstudio.shを実行して、このターミナルでANDROID_HOMEを設定してみてください。これでうまくいきました。


2

Windows PlantFormを使用している場合は、管理者としてAndroid Studioを実行してみてください


1

ただ、削除sdk.dirを local.preopertiesファイル内と設定ANDROID_HOMEの環境変数を。それは私のために働いた。


local.propertiesファイルはIDEによって自動生成されます。改ざんされることになっていますか?
IgorGanapolsky 2016年

1

シェルでANDROID_HOME = / xxx / xxx /をエクスポートしてから、gradleファイルのSystem.env.ANDROID_HOMEで使用します。

PS:ANDROID_HOMEをグローバルにするには、 'export'キーワードを忘れないでください。


exportこの答えでは注意することが重要です。私はANDROID_HOME定義し、さらにそれをに追加してPATHいましたが、そうしないとexport ANDROID_HOME、gradleはそれを見つけることができません。
リース

1

local.propertiesファイルが欠落している可能性があります。その場合、「local.properties」という名前のファイルを/local.properties内に追加し、次のようにSDKの場所を指定します。

sdk.dir = C:\ Users \\ AppData \ Local \ Android \ Sdk


1

私が設定しているANDROID_HOME = [PATH_OF_MY_ANDROID_SDK]を、私の環境変数に。その解決策は私にとってはうまくいきます。


0

ANDROID_HOMEをシステム全体の変数として追加することで、まったく同じ問題を解決しました。Ubuntuでは、/ etc / profileまたは/etc/profile.d/のシェルスクリプトファイルにあります。

次にログアウトして再度ログインすると、GradleはANDROID_HOME変数を認識します。


0

私は同様の問題に遭遇しました。どういうわけか、プロジェクトにビルドフォルダーがありませんでした。このフォルダを別のプロジェクトから問題があったプロジェクトにコピーすることで、この問題は修正されました。


0

23.0.2ではなくBuild-Tools 23.0.1をインストールすると、この問題が解決しました。


0

ソリューション:

1「sdk.dir = path_of_sdk」を追加

2次のようにevn変数を使用してgradlewを実行します。

$ ANDROID_HOME = path_of_sdk ./gradlw


0

local.propertiesをバージョン管理すると問題が発生するとおっしゃっていました。私は、androidコマンドラインツールを使用して、プロダクションに関与するマシン全体でlocal.propertiesファイルを更新するスクリプトをハッキングしました。Androidのアップデートプロジェクトのほかに、コマンドlocal.propertiesはすべての人のための理由である(少なくとも私にとっては)不要なゴミをたくさん作り出すのrmスクリプトの最後にコマンドを。

#!/bin/bash
scname="$0"
echo "${scname}: updating local properties..."
ln -fs src/main/AndroidManifest.xml
android update project -t 24 -p "$(pwd)"
echo "${scname}: ...done"
echo "${scname}: removing android update project junk ..."
rm -v project.properties
rm -v build.xml
rm -v proguard-project.txt
rm -v AndroidManifest.xml
echo "${scname}: ...done"

このスクリプトは、コーディングする新しいマシンで最初に実行するものです。ルートプロジェクトディレクトリで実行する必要があります。もちろん、android studioにはGUIでこれを処理する方法があるかもしれませんが、別のエディターを使用しているため、私にはわかりません。また、このソリューションが一般的であるとは言えませんが、「Works For Me」(tm)です。


0

私はUbuntuの上で同じ問題に直面している(両方local.propertiesANDROID_HOME追加されました)が、ビルドは持続できません。したがって、回避策は次の行を追加することです

export ANDROID_HOME=/home/<user>/Android/Sdk export PATH=$PATH:/home/<user>/Android/Sdk/tools

studio.shスクリプトに直接(内部/usr/local/android-studio/bin

多分それは役に立つでしょう。


0

同じエラーが発生しましたが、私の場合、プロジェクトのクローンを作成していましたが、クローンプロジェクトは、Android API 22でビルドされましたが、そのときにインストールしませんでした(API 24および25がインストールされていました)。 API 22のSDKツールをダウンロードする必要がありました


0

Windowsの場合:

  1. ANDROID_HOMEを環境変数に追加します。ANDROID_HOME = C:/ Users / YOUR_USERNAME / AppData / Local / Android / sdk
  2. %ANDROID_HOME%\ platform-toolsをPATHに追加します。

0

私のシステム(19.04からの2つのバージョンアップグレード後のUbuntu 20.04)では、gradle(APTリポジトリからインストールされた4.4.1)がANDROID_HOME環境変数を無視sdk.dirしているlocal.propertiesかのように、作成した場合から値を取得するような症状がありました。

その理由は、java参照されたコマンドであったように思われましたopenjdk version "11.0.7"openjdk-8-jdkパッケージをインストールしupdate-alternatives --config java、デフォルトjavaをバージョン8("1.8.0_252")にした後、gradle期待どおりに動作し始めました。


-3

その質問は2013年11月からです(Android Studioがまだ開発者プレビューモードのとき)。

現在(AS v2.2、2016年8月)ASのインストール中に、ASはSDKフォルダーの選択(またはデフォルトでのインストール)を要求し、開いているどのプロジェクトにも自動的に適用されます。

これは、問題が再現可能ではないため、考えられる回避策や修正は無関係であることを意味します。


不正解です。私は現在同じ問題を解決しようとしていますが、まだうまくいきません。ここに掲載されている多くの可能な解決策を試しました。
AndroidDev 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.