Gradle و Android وموقع SDK ANDROID_HOME


Answers

في OSX ، لن يلتقط IntelliJ متغيرات البيئة التي قمت بتعيينها في .bash_profile أو .bash_rc الخ ...

جرّب ذلك ، واستبدل قيمة موقع sdk الخاص بك:

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

ثم إعادة تشغيل IntelliJ وبوب عمك.

في ما يلي إشارة إلى المشكلة ، موضحة بشكل عام: https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

Question

تحرير: (أغسطس 2016)

هذا السؤال من تشرين الثاني 2013 (بينما كان Android Studio لا يزال في وضع معاينة المطور) ،

حاليًا (AS v2.2 ، أغسطس 2016) أثناء التثبيت AS يطلب اختيار مجلد SDK (أو تثبيته على الإعداد الافتراضي) وينطبق تلقائيًا على أي مشروع يتم فتحه.

وهذا يعني أن أي حل بديل أو إصلاح محتمل غير ذي صلة لأن المشكلة لا يمكن إعادة إنتاجها بعد الآن.

السؤال الأصلي:

لدينا هذا المشروع مع وحدات متعددة تم تكوينها بالفعل وتنفيذها بشكل صحيح على كمبيوتر مطور آخر باستخدام غلاف. أنا استنسعت god submodules كاملة في الجهاز الخاص بي.

يوجد أسفلها مباشرة سطر الأوامر الخاص بي:

$ ./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 هناك. ماذا يريدون؟ ما هو الخطأ هنا.

يعمل على أوبونتو 13.04

تصحيح:

لقد قمت بالفعل بإنشاء ملف local.properties مع sdk.dir=<path> على جذر المشروع ويعمل. ولكن هذا يجعل من الصعب إدخال التعليمات البرمجية عبر أنظمة الخادم n ، بحيث يبقى السؤال مفتوحًا.

أي شخص يعرف لماذا ANDROID_HOME لا يعمل وماذا تفعل لجعله يعمل؟




هذا يعمل بالنسبة لي:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew



جئت عبر نفس المشكلة عند فتح مستودع git المستنسخة. تتم إضافة ملف local.properties تلقائيًا إلى ملف .gitignore كما هو محدد لبيئة الإنشاء لكل جهاز وبالتالي فهو ليس جزءًا من الريبو.

الحل هو استيراد المشروع بدلاً من فتحه فقط بعد استنساخه من git ، هذا الاستوديو android forces لإنشاء ملف local.properties الخاص بجهازك:

ملف >> مشروع الاستيراد >>




قد يكون ملف local.properties الخاص بك مفقودًا. إذا كان الأمر كذلك ، فقم بإضافة ملف باسم "local.properties" داخل /local.properties وقم بتوفير موقع sdk كالتالي.

sdk.dir = C: \ المستخدمين \\ APPDATA \ المحلية \ الروبوت \ SDK




واجهت نفس الخطأ ولكن في حالتي كنت استنساخ مشروع ، تم بناء المشروع المستنسخ مع الروبوت API 22 الذي لم أقم بتثبيته في ذلك الوقت (كان لي API 24 و 25 مثبتا) ........ لذلك واضطررت إلى تنزيل أدوات sdk لـ API 22




تثبيت Build-Tools 23.0.1 بدلاً من 23.0.2 إصلاح هذه المشكلة بالنسبة لي.




لقد قمت للتو بحل المشكلة نفسها بالضبط بإضافة ANDROID_HOME كمتغير نظام واسع. في Ubuntu ، يجب أن تكون في ملف / etc / profile أو في ملف نصي shell في /etc/profile.d/

ثم الخروج وتسجيل الدخول مرة أخرى ، يجب أن يتعرف Gradle الآن على متغير ANDROID_HOME.




لأي سبب من الأسباب ، لا يقوم البرنامج النصي gradle برفع قيمة ANDROID_HOME من البيئة. حاول تحديد ذلك في سطر الأوامر بشكل صريح

$ ANDROID_HOME=<sdk location> ./gradlew



مجرد حذف sdk.dir داخل ملف local.preoperties وتعيين متغير البيئة ANDROID_HOME . عملت معي.




كيف تفعل ذلك على 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; echo $JAVA_HOME; echo $ANDROID_HOME;

5) إذا كان الإخراج الخاص بك هو:

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

إذن أنت جيد.

و RESTART استوديو الروبوت!

و ، تأكد من أن لديك جافا :)

java -version

و Gradle :)

gradle --version




في windows ، قمت بتعيين ANDROID_HOME = E: \ android \ adt-bundle-windows-x86_64-20131030 \ sdk ثم يعمل كما هو متوقع.

عندما تكون في Linux ، تحتاج إلى تعيين sdk.dir.

يستخدم البرنامج النصي اثنين من المتغيرات المختلفة.




لقد ذكرت أن تعيين الإصدارات 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 طريقة واجهة تعامل المستخدم الرسومية للتعامل مع هذا ، لكنني لن أعلم أنني استخدم محررًا مختلفًا. كما لا يمكنني الادعاء بأن الحل عام ، ولكنه "يعمل من أجلى" (tm).




هذا السؤال من تشرين الثاني 2013 (بينما كان Android Studio لا يزال في وضع معاينة المطور) ،

حاليًا (AS v2.2 ، أغسطس 2016) أثناء التثبيت AS يطلب اختيار مجلد SDK (أو تثبيته على الإعداد الافتراضي) وينطبق تلقائيًا على أي مشروع يتم فتحه.

وهذا يعني أن أي حل بديل أو إصلاح محتمل غير ذي صلة لأن المشكلة لا يمكن إعادة إنتاجها بعد الآن.




لدي نفس المشكلة ، يبدو أن رمز عينة لا يمكن العثور على بيئة أندرويد ، بدلا من محاولة إصلاح ذلك فقط إزالة نموذج التعليمة البرمجية من settings.gradle ثم التثبيت يسير على ما يرام.

بعد ذلك فقط استيراد المشروع في الكسوف وهذا كل شيء :)




Links