Gradle, Android, dan lokasi ANDROID_HOME SDK

152

sunting: (agustus 2016)

Pertanyaan itu berasal dari November 2013 (saat Android Studio masih dalam mode Pratinjau Pengembang),

Saat ini (AS v2.2, Agustus-2016) selama instalasi AS meminta untuk memilih folder SDK (atau instal pada default mereka) dan itu secara otomatis berlaku untuk proyek yang pernah Anda buka.

Itu berarti setiap penyelesaian atau perbaikan yang mungkin tidak relevan karena masalah tidak dapat direproduksi lagi.

pertanyaan asli:

kami memiliki proyek ini dengan beberapa modul yang sudah dikonfigurasi dan dijalankan dengan benar pada PC pengembang lain menggunakan pembungkus. Saya mengkloning submit git lengkap ke mesin saya.

Di bawah ini adalah cetak langsung dari baris perintah saya:

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

jadi, seperti yang Anda lihat ANDROID_HOME ada di sana. Apa lagi yang mereka inginkan? Ada apa di sini

berjalan di Ubuntu 13.04

edit:

Saya sudah membuat file local.properties dengan sdk.dir=<path>di root proyek dan berfungsi. Tapi itu membuat kode lebih sulit untuk port di seluruh sistem dan membangun server, jadi pertanyaannya masih terbuka

Adakah yang tahu mengapa ANDROID_HOME tidak berfungsi dan apa yang harus dilakukan untuk membuatnya berfungsi?

Budius
sumber
1
Cobalah untuk menentukan jalur SDK Anda di file properti lokal, di bawah direktori root proyek Anda. File harus memiliki ini: sdk.dir = <sdk_install_dir>
Gabriele Mariotti
1
Hai @GabrieleMariotti terima kasih atas sarannya. Tetapi saya sudah melakukan ini dan itu berhasil. Tapi itu membuat kode lebih sulit untuk port di seluruh sistem dan membangun server. Saya ingin tahu jika seseorang tahu mengapa ANDROID_HOME tidak berfungsi dan apa yang harus dilakukan untuk membuatnya berfungsi? Saya menambahkan sedikit info ini ke pertanyaan.
Budius
Saya sarankan Anda untuk memposting di komunitas G + ini. plus.google.com/communities/114791428968349268860 Ini adalah Komunitas Google resmi. Biasanya tim Google menjawab dengan cepat.
Gabriele Mariotti
ya, saya akan coba mereka. Terima kasih!
Budius
2
@Budius Saya punya kasus serupa dengan pesan kesalahan. Solusinya adalah menambahkansettings.gradle file ke folder proyek.
JJD

Jawaban:

94

Saya sudah memecahkan masalah. Ini bekerja untuk saya:

Di

/ my_current_project /

Saya telah membuat file bernama local.properties dan memasukkannya ke dalam

sdk.dir = / my_current_path_to / sdk

Di konsol yang perlu saya lakukan

atur ANDROID_HOME = / my_current_path_to / sdk

Semoga ini membantu.

u53r
sumber
8
Itu tidak memperbaiki masalah karena file properti local.prop harus "Lokal" dan tidak dalam versi. (Masalah yang sama seperti Budius: Saya ingin file properti.properti ini di laptop saya untuk membuat build selama pengembangan, Tapi saya tidak ingin file ini di mesin build saya karena jalur sdks tidak sama!)
Tobliug
7
Setidaknya di windows itu berfungsi setelah backslashing string sdk.dir = D: \\ Soft \\ adt-bundle-windows-x86_64-20140702 \\ sdk
Cheburek
@Tobulug: Anda dapat mengontrol file mana di bawah kontrol versi dan tidak menambah atau membatalkan pilihan file lokal
sivi
Menggunakan ekspor alih-alih mengatur memperbaikinya.
AugustoL
1
set salah, saya menggunakan ekspor . Tetapi dengan cara ini, jika Anda mengekspor Variabel ini, Anda tidak memerlukan file local.properties di Folder-Projekt Anda. Untuk mempertahankan pengaturan ini pada setiap reboot, tambahkan commad ekspor ke ~ / .bashrc
suther
52

Pada OSX , IntelliJ tidak akan mengambil variabel lingkungan yang Anda atur di .bash_profile atau .bash_rc dll ...

Coba ini, menggantikan nilai lokasi sdk Anda sendiri:

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

Kemudian mulai kembali IntelliJ dan Bob pamanmu.

Berikut ini adalah referensi untuk masalah tersebut, yang dinyatakan secara lebih umum: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

Matthew Daumen
sumber
4
FYI solusi ini untuk osx.
Matthew Daumen
4
Ya bekerja untuk saya di elcapitan. launchctl setenv ANDROID_HOME ~/Library/Android/sdk
agmcleod
2
Atau Anda cukup proksi variabel lingkungan seperti launchctl setenv ANDROID_HOME $ANDROID_HOMEdan launchctl setenv JAVA_HOME $JAVA_HOME
Vagif
Hanya FYI, untuk OSX perbaikan ini juga membantu untuk membangun baris perintah melalui gradle, ketika kesalahan yang sama terjadi saat Anda menggunakan shell selain bash (zsh misalnya). Jalankan saja perintah ini dan mulai ulang jendela terminal Anda.
interrupt
30

Dalam kasus saya settings.gradlehilang.

Simpan file dan letakkan di folder tingkat atas di proyek Anda, bahkan Anda dapat menyalin dari proyek lain juga.

Referensi tangkapan layar:

masukkan deskripsi gambar di sini

Semoga ini bisa menghemat waktu Anda.

Hiren Patel
sumber
Atau seseorang tidak menambahkan submodule Anda ke file settings.gradle. Saya punya junior di tim kami yang tidak melakukan ini setelah menambahkan submodule. Tidak yakin bagaimana IntellIJ mereka dikonfigurasi tetapi ini menyia-nyiakan waktu saya yang tidak sepele.
Stevers
25

Ini bekerja untuk saya:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew
giopromolla
sumber
1
Anda juga dapat menambahkan ini pada "ekspor" -baris ke ~ / .bashrc atau ~ / .bash_profile Anda untuk menjadikannya permanen bahkan setelah reboot.
suther
19

Plugin Android Gradle masih dalam versi beta dan ini hanyalah bug. Bagi saya, pengaturan ANDROID_HOME berfungsi, tetapi kami mungkin menggunakan versi yang berbeda (silakan coba lagi dengan versi terbaru dan beri tahu saya jika ini berfungsi atau tidak).

Anda juga perlu mengatur variabel lingkungan ANDROID_SDK serta ANDROID_HOME.

Saya telah melihat masalah dengan ini pada beberapa mesin, jadi kami membuat local.properties dalam kasus-kasus itu - Saya juga memperhatikan bahwa versi terbaru Android Studio akan membuat file ini untuk Anda dan mengisi properti sdk.dir.

Perhatikan bahwa Anda tidak boleh memeriksa local.properties ke dalam kontrol versi, kami telah menambahkannya ke gitignore kami sehingga tidak mengganggu porting kode di seluruh sistem yang Anda identifikasi sebagai masalah potensial.

ZoFreX
sumber
2
Menentukan ANDROID_SDK tidak melakukan apa pun untuk saya.
Perbatasan Heath
Versi Gradle dan plugin Android mana yang Anda gunakan, dan apakah Anda memiliki file properti lokal?
ZoFreX
2
menambahkan sdk.dir=/path/to/android/sdkbekerja untuk saya. Saya menjalankan gradle sebagai bagian dari proyek yang dibuat dengan IntelliJ 13.0.2
Heath Borders
Sepertinya ini adalah bug IntelliJ. youtrack.jetbrains.com/issue/IDEA-119361
Heath Borders
Mungkin juga ada bug di IntelliJ atau Android Studio, tetapi pertanyaan aslinya adalah tentang menggunakan Gradle dari baris perintah, yang tampaknya memiliki bug sendiri (mungkin atau mungkin tidak terkait dengan masalah yang Anda lihat). Sunting: Juga, di sistem saya IntelliJ tidak mewarisi variabel lingkungan dari baris perintah, yang mungkin menjadi masalah Anda?
ZoFreX
16

Untuk alasan apa pun, skrip gradle tidak mengambil nilai ANDROID_HOME dari lingkungan. Coba tentukan di baris perintah secara eksplisit

$ ANDROID_HOME=<sdk location> ./gradlew
Andrew Marshall
sumber
1
Sesuatu tidak akan berhasil - ini bekerja untuk ANDROID_HOME tetapi tidak akan bekerja untuk ANDROID_NDK_HOME. Saya harus menggunakan properti lokal untuk yang terakhir.
Andrew Smart
Solusi ini tidak melakukan apa pun untuk saya (dalam wadah buruh pelabuhan).
IgorGanapolsky
14

Saya menghadapi masalah yang sama, meskipun saya memiliki file properti lokal di modul utama saya, dan variabel lingkungan ANDROID_HOME ditetapkan pada tingkat sistem.

Apa yang memperbaiki masalah ini adalah ketika saya menyalin file local.properties yang ada di modul proyek utama saya ke root dari seluruh proyek (yaitu direktori induk ke modul utama Anda)

Coba salin file local.properties di dalam modul dan direktori root. Harus bekerja

joecizac
sumber
1
Saya pikir file local.properties dihasilkan secara otomatis oleh IDE. Mengapa perlu menyalin atau memindahkan file ini secara manual ke direktori lain?
IgorGanapolsky
13

Saya menemukan masalah yang sama ketika membuka repositori git kloning. File local.properties secara otomatis ditambahkan ke file .gitignore karena khusus untuk lingkungan build dari setiap mesin dan karenanya bukan bagian dari repo.

Solusinya adalah mengimpor proyek alih-alih hanya membukanya setelah Anda mengkloningnya dari git, ini memaksa android studio untuk membuat file local.properties khusus untuk mesin Anda:

File >> Impor Proyek >>

Bulwinkel
sumber
12

MAC OSX:

  1. Buka Terminal dan edit file:

~/.bash_profile

menambahkan:

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

  1. Lari:

    source ~/.bash_profile

  2. Mulai ulang Terminal dan Android Studio

Javier Armendariz
sumber
8

Cara melakukannya di MAC OSX:

1) Buka Terminal, dan Edit: vi ~/.bash_profile Jika tidak ada file di sana, tambahkan saja.

2) Tambahkan (Ubah ke NAMA PENGGUNA ANDA dan tambahkan ini):

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

3) Lari source ~/.bash_profile .

4) Lari echo $JAVA_HOME; echo $ANDROID_HOME;

5) Jika output Anda adalah:

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

Jadi kamu baik-baik saja.

dan RESTART studio android!

Dan, Pastikan Anda memiliki java :)

java -version

Dan gradle :)

gradle --version

Nimitack
sumber
di pikir Anda hilang:export ANDROID_HOME
To Kra
1
Saya mengatur ANDROID_HOMEdan kemudian mengeksekusi source ~/.bash_profile, ini permeant (mengeksekusi sourcebaik jika Anda tidak ingin keluar dan masuk atau reboot). Dalam kasus Anda, dengan export ANDROID_HOME, setelah memulai ulang atau masuk, variabel lingkungan ANDROID_HOMEdi mac akan hilang.
Nimitack
7

Salin properti.prop ke folder root dan jalankan kembali.

Santiago Medina Chaverra
sumber
4

Ini bekerja untuk saya (Ubuntu):

Tambahkan ANDROID_HOME=/path/to/android-sdkke/etc/environment .

Mulai ulang.

setiap lelaki
sumber
Saya bingung tentang hal ini selama berhari-hari dan hanya hal ini yang berhasil. Terima kasih Pak.
Zygro
3

di windows, saya mengatur ANDROID_HOME = E: \ android \ adt-bundle-windows-x86_64-20131030 \ sdk Kemudian berfungsi seperti yang diharapkan.

Ketika di Linux, Anda perlu mengatur sdk.dir.

Script menggunakan dua variabel yang berbeda.

richard
sumber
1
Saya menambahkannya, ditambahkan dalam file location.properties tetapi masih menghadapi masalah yang sama
Suneel Prakash
1
Di Windows, pastikan Anda lolos dari garis miring terbalik di jalur. Saya harus memasuki jalan sepertisdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
Xsasan
2

Saya memiliki masalah yang sama, tampaknya kode sampel tidak dapat menemukan lingkungan android, sebagai gantinya untuk mencoba memperbaikinya saya hanya menghapus kode sampel dari settings.gradle dan kemudian instalasi berjalan dengan baik.

setelah itu baru impor proyek gerhana dan itu saja :)

Guillermo Gutiérrez
sumber
2

Di Linux, coba jalankan studio.sh dari terminal dan atur ANDROID_HOME di terminal ini. Ini berhasil untuk saya.

Naren
sumber
2

Jika Anda menggunakan windows plantform, coba jalankan Android Studio sebagai Administrator

Megoc
sumber
1

Hapus saja sdk.dir di dalam file local.preoperties dan atur variabel lingkungan ANDROID_HOME . Ini berhasil untuk saya.

PraveenMax
sumber
File local.properties dihasilkan secara otomatis oleh IDE. Apakah itu seharusnya dirusak?
IgorGanapolsky
1

ekspor ANDROID_HOME = / xxx / xxx / di shell, lalu gunakan oleh System.env.ANDROID_HOME dalam file gradle.

PS: jangan lupa kata kunci 'ekspor' untuk menjadikan ANDROID_HOME global.

Jindowin
sumber
Jawaban exportdalam ini penting untuk diperhatikan. Saya telah ANDROID_HOMEmendefinisikan, dan bahkan menambahkannya ke PATH, tetapi jika tidak export ANDROID_HOME, gradle tidak akan dapat menemukannya.
lase
1

File properti lokal Anda mungkin hilang. Jika demikian tambahkan file bernama 'local.properties' di dalam /local.properties dan berikan lokasi sdk sebagai berikut.

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

kinath_ru
sumber
1

Saya telah menetapkan ANDROID_HOME = [PATH_OF_MY_ANDROID_SDK] ke variabel lingkungan saya. Solusi itu bekerja untuk saya.

Pravin Abhale
sumber
0

Saya baru saja menyelesaikan masalah yang sama persis dengan menambahkan ANDROID_HOME sebagai variabel sistem lebar. Di Ubuntu harus di / etc / profile atau di file skrip shell di /etc/profile.d/

Lalu keluar dan masuk lagi, sekarang Gradle harus mengenali variabel ANDROID_HOME.

Joe3112
sumber
0

Saya menemukan masalah yang sama. Entah bagaimana, saya tidak memiliki folder build di proyek saya. Dengan menyalin folder ini dari proyek lain ke proyek saya, saya mengalami masalah dengan, ini memperbaiki masalah ini.

Horatio
sumber
0

Menginstal Build-Tools 23.0.1 alih-alih 23.0.2 memperbaiki masalah ini untuk saya.

TheBetterJORT
sumber
0

solusi:

1 tambahkan "sdk.dir = path_of_sdk"

2 jalankan gradlew dengan variabel evn seperti berikut:

$ ANDROID_HOME = path_of_sdk ./gradlw

RoFF
sumber
0

Anda mengatakan bahwa membuat versi local.properties menimbulkan masalah bagi Anda. Saya telah meretas sebuah skrip yang menggunakan alat baris perintah android untuk menyegarkan file local.properties di mesin yang terlibat dalam produksi. The android pembaruan proyek perintah, selain local.properties menghasilkan banyak sampah yang tidak diinginkan (setidaknya untuk saya) yang merupakan alasan bagi semua orang rm perintah pada akhir script.

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

Script ini adalah hal pertama yang kami jalankan di mesin baru mana pun yang kami kode. Itu harus dijalankan di direktori proyek root. Tentu saja, studio android mungkin memiliki cara GUI untuk menangani ini, tapi saya tidak akan tahu karena saya menggunakan editor yang berbeda. Saya juga tidak dapat mengklaim bahwa solusinya umum, tetapi "Bekerja Untuk Saya" (tm).

Remorker Mali
sumber
0

Saya telah menghadapi masalah yang sama di Ubuntu (keduanya local.propertiesdan ANDROID_HOMEtelah ditambahkan), tetapi gagal tetap ada. Jadi solusinya adalah menambahkan baris berikut

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

langsung ke studio.shskrip (di dalam/usr/local/android-studio/bin )

Mungkin itu akan sangat membantu.

Lukas
sumber
0

saya mengalami kesalahan yang sama tetapi dalam kasus saya saya kloning proyek, proyek kloning dibangun dengan Android API 22 yang saya tidak menginstal pada saat itu (saya telah menginstal API 24 dan 25) ........ jadi saya harus mengunduh alat SDK untuk API 22

Didi Pepple
sumber
0

Untuk Windows:

  1. Tambahkan ANDROID_HOME ke Variabel Lingkungan: ANDROID_HOME = C: / Pengguna / YOUR_USERNAME / AppData / Lokal / Android / sdk
  2. Tambahkan% ANDROID_HOME% \ platform-tools ke PATH.
J. Jerez
sumber
0

Pada sistem saya (Ubuntu 20,04 setelah dua pembaruan versi dari 19,04) gejalanya seolah-olah gradle(4.4.1 diinstal dari APT repos) mengabaikan ANDROID_HOMEvariabel lingkungan, sambil mengambil sdk.dirnilai darilocal.properties jika saya membuat satu.

Alasannya tampaknya adalah javaperintah yang dimaksud openjdk version "11.0.7". Setelah saya menginstal openjdk-8-jdkpaket dan melakukan update-alternatives --config javauntuk membuat default javamenjadi versi 8 ( "1.8.0_252"), gradlemulai berfungsi seperti yang diharapkan.

Ruslan
sumber
-3

Pertanyaan itu berasal dari November 2013 (saat Android Studio masih dalam mode Pratinjau Pengembang),

Saat ini (AS v2.2, Agustus-2016) selama instalasi AS meminta untuk memilih folder SDK (atau instal pada default mereka) dan itu secara otomatis berlaku untuk proyek yang pernah Anda buka.

Itu berarti setiap penyelesaian atau perbaikan yang mungkin tidak relevan karena masalah tidak dapat direproduksi lagi.

Budius
sumber
Itu tidak benar. Saat ini saya sedang mencoba untuk menyelesaikan masalah yang sama, masih belum berhasil, mencoba banyak solusi yang mungkin diposting di sini.
AndroidDev