Gradle, Android ve ANDROID_HOME SDK konumu


152

düzenleme: (aug-2016)

Bu soru Kasım 2013'ten geliyor (Android Studio hala Geliştirici Önizleme modundayken),

Şu anda (AS v2.2, Ağu-2016) kurulum sırasında AS, SDK klasörünü seçmenizi (veya varsayılan ayarlarına yüklemenizi) ister ve açtığınız projeye otomatik olarak uygulanır.

Bu, sorun artık yeniden üretilemediği için olası bir geçici çözüm veya düzeltmenin önemsiz olduğu anlamına gelir.

orijinal soru:

bu projeyi, bir paketleyici kullanarak başka bir geliştirici bilgisayarda doğru şekilde yapılandırılmış ve doğru şekilde yürütülmüş birkaç modülle sahibiz. Git alt modüllerinin tamamını makineme klonladım.

Aşağıda doğrudan komut satırımın bir baskısı var:

$ ./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
$ 

Gördüğünüz gibi ANDROID_HOME orada. Başka ne istiyorlar? Burada yanlış olan ne?

Ubuntu 13.04 üzerinde çalışıyor

Düzenle:

Zaten sdk.dir=<path>proje kökünde bir local.properties dosyası oluşturdum ve çalışıyor. Ancak bu, sistem n derleme sunucusunda kodun taşınmasını zorlaştırır, bu nedenle soru hala açıktır.

ANDROID_HOME'un neden çalışmadığını ve çalışmasını sağlamak için ne yapması gerektiğini bilen var mı?


1
SDK'nızın yolunu, projenizin kök dizini altındaki bir local.properties dosyasında belirtmeye çalışın. Dosyada şu olmalıdır: sdk.dir = <sdk_install_dir>
Gabriele Mariotti

1
Merhaba @ GabrieleMariotti öneri için teşekkürler. Ama bunu zaten yaptım ve işe yarıyor. Ancak bu, sistem n derleme sunucusunda kodun taşınmasını zorlaştırır. Birinin ANDROID_HOME'un neden çalışmadığını ve çalışmasını sağlamak için ne yapacağını bilip bilmediğini bilmek istiyorum? Bu bilgi bitini soruya ekledim.
Budius

Bu G + topluluğuna mesaj göndermenizi öneririm. plus.google.com/communities/114791428968349268860 Resmi bir Google Topluluğu. Genellikle Google ekibi hızlı bir şekilde yanıt verir.
Gabriele Mariotti

evet, onları deneyeceğim. Teşekkürler!
Budius

2
@Budius Hata mesajı ile benzer bir durum vardı. Çözüm settings.gradledosyayı proje klasörüne eklemekti .
JJD

Yanıtlar:


94

Sorunu çözdüm. Bu benim için çalışıyor:

İçinde

/ My_current_project /

Local.properties adlı bir dosya oluşturdum ve içine koydum

sdk.dir = / my_current_path_to / sdk

Konsolda yapmam gerek

ANDROID_HOME = / my_current_path_to / sdk olarak ayarla

Bu yardımcı olur umarım.


8
Local.properties dosyalarının "Yerel" olması ve sürüm altında olmaması nedeniyle sorunu gidermez. (Budius ile aynı problem: Dizüstü bilgisayarımdaki bu local.properties dosyasının geliştirme sırasında oluşturma oluşturmasını istiyorum, ancak sdks yolu aynı olmadığından bu dosyayı oluşturma makinemde istemiyorum!)
Tobliug

7
En azından pencerelerde ters eğik çizgi dizesinden sonra çalıştı sdk.dir = D: \\ Soft \\ adt-bundle-windows-x86_64-20140702 \\ sdk
Cheburek

@Tobulug: Eğer hangi dosyaların sürüm kontrolü altında kontrol ve ekleyip edemez yerel dosyalar unselect
sivi

Set yerine dışa aktarmayı kullanarak düzelt.
AugustoL

1
set yanlıştı, ihracat kullanıyorum . Ancak bu şekilde, bu Değişkeni dışa aktarırsanız, Projekt Klasörünüzdeki local.properties dosyasına ihtiyacınız yoktur. Her yeniden başlatmada bu ayarı korumak için export-commad'ı ~ / .bashrc
suther

52

OSX'te IntelliJ, .bash_profile veya .bash_rc vb. Ayarladığınız ortam değişkenlerini almaz.

Kendi sdk konumunuzun değerini kullanarak şunu deneyin:

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

Sonra IntelliJ'i yeniden başlatın ve Bob amcanız.

Daha genel olarak belirtilen soruna bir referans: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/


4
FYI bu çözüm osx içindir.
Matthew Daumen

4
Evet benim için elcapitan'da çalıştı. launchctl setenv ANDROID_HOME ~/Library/Android/sdk
agmcleod

2
Ya da launchctl setenv ANDROID_HOME $ANDROID_HOMEve launchctl setenv JAVA_HOME $JAVA_HOME
Vagif

Sadece FYI, OSX için bu düzeltme aynı zamanda bash dışında bir kabuk kullanırken aynı hata oluştuğunda (örneğin zsh) komut satırı derlemesi için yardımcı olur. Sadece bu komutu çalıştırın ve terminal pencerenizi yeniden başlatın.
kesme

30

Benim durumumda settings.gradleeksikti.

Dosyayı kaydedin ve başka bir projeden de kopyalayabilirsiniz, projenizdeki en üst düzey klasöre koyun.

Ekran görüntüsü referansı:

resim açıklamasını buraya girin

Umarım bu zaman kazandırır.


Veya birisi alt modülünüzü settings.gradle dosyasına eklemedi. Ekibimizde bir alt modül ekledikten sonra bunu yapmayan bir çocuğum vardı. IntellIJ'in nasıl yapılandırıldığından emin değilim, ancak bu benim zamanımın önemsiz bir miktarını boşa harcadı.
Stevers

25

Bu benim için çalışıyor:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

1
Ayrıca, yeniden başlattıktan sonra bile kalıcı hale getirmek için yukarıdaki "dışa aktarma" satırını ~ / .bashrc veya ~ / .bash_profile öğenize ekleyebilirsiniz.
suther

19

Android Gradle eklentisi hala beta sürümündedir ve bu sadece bir hata olabilir. Benim için ANDROID_HOME ayarı çalışıyor, ancak farklı sürümlerde olabiliriz (lütfen en son sürümle tekrar deneyin ve çalışıp çalışmadığını bana bildirin).

Ayrıca ANDROID_SDK ortam değişkenini ve ANDROID_HOME'u ayarlamaya değer.

Bazı makinelerde bununla ilgili sorunlar gördüm, bu nedenle bu durumlarda local.properties oluşturuyoruz - Android Studio'nun en son sürümünün bu dosyayı sizin için oluşturacağını ve sdk.dir özelliğini doldurduğunu fark ettim.

Sürüm kontrolünde local.properties öğesini kontrol etmemeniz gerektiğini, kodu doğru bir şekilde potansiyel bir sorun olarak tanımladığınız sistemler arasında taşımayı engellememesi için gitignore'umuza ekledik.


2
ANDROID_SDK tanımlamak benim için hiçbir şey yapmadı.
Heath Borders

Hangi Gradle sürümünü ve Android eklentisini kullanıyorsunuz ve local.properties dosyanız var mı?
ZoFreX

2
ekleme sdk.dir=/path/to/android/sdkbenim için çalıştı. IntelliJ 13.0.2
Heath Borders

Görünüşe göre bu bir IntelliJ hatası. youtrack.jetbrains.com/issue/IDEA-119361
Heath Borders

IntelliJ veya Android Studio'da da bir hata olabilir, ancak orijinal soru, kendi hataya sahip gibi görünen (gördüğünüz sorunla ilgili olabilir veya olmayabilir) komut satırından Gradle'ı kullanmaktı. Düzenleme: Ayrıca, sistemimde IntelliJ ortam değişkenlerini komut satırından devralmaz, hangi sorun olabilir?
ZoFreX

16

Hangi nedenle olursa olsun, sınıf betiği ANDROID_HOME'un değerini ortamdan almıyor. Komut satırında açıkça belirtmeyi deneyin

$ ANDROID_HOME=<sdk location> ./gradlew

1
Bir şeyler sakat - bu ANDROID_HOME için çalışıyor ancak ANDROID_NDK_HOME için çalışmıyor. İkincisi için local.properties kullanmak zorunda kaldım.
Andrew Smart

Bu geçici çözüm benim için hiçbir şey yapmaz (docker kapsayıcısında).
IgorGanapolsky

14

Ana modülümde local.properties dosyası ve sistem düzeyinde ayarlanmış ANDROID_HOME ortam değişkeni olmasına rağmen aynı sorunla karşılaştım.

Ana proje modülümdeki local.properties dosyasını tüm projenin kök dizinine (yani ana modülünüze dizin üst öğesi) kopyaladığımda bu sorun çözüldü

Local.properties dosyasını modüllerin ve kök dizinin içine kopyalamayı deneyin. Çalışmalı.


1
Local.properties dosyasının IDE tarafından otomatik olarak oluşturulduğunu düşündüm . Neden bu dosyayı el ile kopyalamanız veya diğer dizinlere taşımanız gerekiyor?
IgorGanapolsky

13

Klonlanmış bir git deposunu açarken aynı problemle karşılaştım. Local.properties dosyası, her makinenin oluşturma ortamına özgü olduğundan ve bu nedenle repo'nun bir parçası olmadığından .gitignore dosyasına otomatik olarak eklenir.

Çözüm, git'ten klonlandıktan sonra projeyi açmak yerine projeyi içe aktarmaktır, bu, android stüdyosunu makinenize özgü local.properties dosyasını oluşturmaya zorlar:

Dosya >> Projeyi İçe Aktar >>


12

MAC OS X:

  1. Terminal'i açın ve dosyayı düzenleyin:

~/.bash_profile

eklemek:

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

  1. Çalıştırmak:

    source ~/.bash_profile

  2. Terminal'i ve Android Studio'yu yeniden başlatın


8

MAC OSX'te nasıl yapılır:

1) Terminali açın ve Düzenle: vi ~/.bash_profile Orada dosya yoksa ekleyin.

2) Ekle (KULLANICI ADINIZI değiştirin ve ekleyin):

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

3) Koş source ~/.bash_profile .

4) Koş echo $JAVA_HOME; echo $ANDROID_HOME;

5) Çıktınız:

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

Yani iyisin.

ve RESTART android stüdyosu!

Ve java olduğundan emin olun :)

java -version

Ve gradle :)

gradle --version


eksik olduğunu düşünüyorum:export ANDROID_HOME
Kra

1
Ben set ANDROID_HOMEyürütmek sonra ve source ~/.bash_profilebu geçirgen olan (yürütmek, sourceÇıkış yapmak istemiyorsanız iyi ve veya yeniden başlatma). Sizin durumunuzda, export ANDROID_HOMEyeniden başlatma veya giriş yaptıktan sonra ANDROID_HOMEmac'taki ortam değişkeni kaybolacaktır.
Nimitack


4

Bu benim için çalıştı (Ubuntu):

Ekle ANDROID_HOME=/path/to/android-sdkiçin /etc/environment.

Yeniden Başlatma.


Günlerce bu şeye boğuldum ve sadece bu şey çalıştı. Teşekkürler bayım.
Zygro

3

Windows'da ANDROID_HOME = E: \ android \ adt-bundle-windows-x86_64-20131030 \ sdk ayarladım. Beklediğim gibi çalışıyor.

Linux'tayken sdk.dir dosyasını ayarlamanız gerekir.

Komut dosyası iki farklı değişken kullanır.


1
Ben ekledim, location.properties dosyasına ekledim ama yine de aynı sorunla karşı karşıyayım
Suneel Prakash

1
Windows'ta, yoldaki ters eğik çizgilerden kaçtığınızdan emin olun. Gibi yol girmek zorunda kaldımsdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
Xsasan

2

Ben de aynı sorun var, ben sadece örnek kod ayarları.gradle kaldırmak ve daha sonra yükleme iyi gider düzeltmek için denemek için örnek kod android ortamı bulamıyor gibi görünüyor.

bundan sonra sadece tutulması projeyi almak ve hepsi bu :)


2

Linux'ta, bir terminalden studio.sh dosyasını çalıştırmayı deneyin ve bu terminalde ANDROID_HOME'u ayarlayın. Bu benim için çalıştı.


2

Windows bitki formu kullanıyorsanız, lütfen Android Studio'yu Yönetici olarak çalıştırmayı deneyin


1

Sadece silmek sdk.dir local.preoperties dosyasının içinde ve set ANDROID_HOME ortam değişkeni. Benim için çalıştı.


local.properties dosyası IDE tarafından otomatik olarak oluşturulur. Kurcalanması mı gerekiyor?
IgorGanapolsky

1

ANDROID_HOME = / xxx / xxx / öğesini dışa aktarın, ardından System.env.ANDROID_HOME tarafından sınıflandırma dosyasında kullanın.

Not: ANDROID_HOME'u global yapmak için 'dışa aktar' anahtar kelimelerini unutmayın.


exportBu cevap nota önemlidir. Bunu ANDROID_HOMEtanımlamıştım ve hatta buna ekliyordum PATH, ama eğer yapmazsanız export ANDROID_HOME, gradle onu bulamaz.
lase

1

Local.properties dosyanız eksik olabilir. Bu durumda, /local.properties içine 'local.properties' adlı bir dosya ekleyin ve sdk konumunu aşağıdaki gibi sağlayın.

sdk.dir = C: \ Kullanıcılar \\ AppData \ Local \ Android \ SDK


1

Ben belirledik ANDROID_HOME = [PATH_OF_MY_ANDROID_SDK] benim ortam değişkeni için. Bu çözüm benim için çalışıyor.


0

Ben sadece sistem geniş bir değişken olarak ANDROID_HOME ekleyerek aynı sorunu çözdüm. Ubuntu'da / etc / profile veya /etc/profile.d/ içindeki bir kabuk komut dosyasında olmalıdır.

Sonra oturumu kapatın ve tekrar giriş yapın, şimdi Gradle ANDROID_HOME değişkenini tanımalıdır.


0

Benzer bir sorunla karşılaştım. Her nasılsa, projemde bir oluşturma klasörü yoktu. Bu klasörü başka bir projeden projeme kopyalayarak sorun yaşadım, bu sorun düzeltildi.



0

çözümleri:

1 "sdk.dir = path_of_sdk" ekleyin

2 aşağıdaki gibi evn değişkeni ile gradlew yürütmek:

$ ANDROID_HOME = path_of_sdk ./gradlw


0

Local.properties sürümünün sizin için sorun yarattığını söylediniz. Üretimde yer alan makineler arasında local.properties dosyasını yenilemek için android komut satırı aracını kullanan bir komut dosyasını birlikte ele aldım. Android güncelleme proje komutu, yanında local.properties herkes için nedenidir (en azından benim için) istenmeyen çöp bir sürü üretir rm komut sonunda komutları.

#!/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"

Bu komut dosyası, kodladığımız herhangi bir yeni makinede çalıştırdığımız ilk şeydir. Kök proje dizininde çalıştırılmalıdır. Tabii ki, android stüdyosu bununla uğraşmak için bir GUI yoluna sahip olabilir, ancak farklı bir editör kullandığımı bilmiyorum. Ayrıca çözümün genel olduğunu iddia edemem, ama "Benim İçin Çalışıyor" (tm).


0

Ben Ubuntu aynı sorunla karşı karşıya gelmiş (hem local.propertiesve ANDROID_HOMEeklenmiş), ancak yapı devam başarısız. Bu yüzden geçici çözüm aşağıdaki satırları eklemektir

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

doğrudan studio.shbetiğe (içeride/usr/local/android-studio/bin )

Belki yardımcı olacaktır.


0

aynı hatayla karşılaştım ama benim durumumda bir proje klonlama, klonlanmış proje ben o zaman yüklemedim Android API 22 ile inşa edildi (i yüklü API 24 ve 25 vardı) ........ yani API 22 için sdk araçlarını indirmek zorunda kaldım


0

Pencereler için:

  1. ANDROID_HOME'u Ortam Değişkenlerine ekleyin: ANDROID_HOME = C: / Kullanıcılar / YOUR_USERNAME / AppData / Local / Android / sdk
  2. PATH öğesine% ANDROID_HOME% \ platform-tools ekleyin.

0

Sistemimde (19.04'ten iki sürüm yükseltmesinden sonra Ubuntu 20.04), belirtiler gradle(4.4.1 APT depolarından yüklendi) ANDROID_HOMEortam değişkenini yoksaydı , bir tane oluşturduysam sdk.dirdeğeri topladı local.properties.

Nedeni bu javakomuta atıfta bulunmuş gibi görünüyordu openjdk version "11.0.7". openjdk-8-jdkPaketi yükledikten ve update-alternatives --config javavarsayılanı javasürüm 8 ( "1.8.0_252") yapmak için yaptım , gradlebeklendiği gibi çalışmaya başladı.


-3

Bu soru Kasım 2013'ten geliyor (Android Studio hala Geliştirici Önizleme modundayken),

Şu anda (AS v2.2, Ağu-2016) kurulum sırasında AS, SDK klasörünü seçmenizi (veya varsayılan ayarlarına yüklemenizi) ister ve açtığınız projeye otomatik olarak uygulanır.

Bu, sorun artık yeniden üretilemediği için olası bir geçici çözüm veya düzeltmenin önemsiz olduğu anlamına gelir.


Bu yanlış. Şu anda aynı sorunu çözmeye çalışıyorum, hala şans yok, burada yayınlanan birçok olası çözümü denedim.
AndroidDev
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.