2012-07-10 18 views
10

में एंड्रॉइड_एचओएमई एनवी वैरिएबल नहीं मिलता है, मैं एक एंड्रॉइड ऐप प्रोजेक्ट पर काम कर रहा हूं और यह एक मेवेन प्रोजेक्ट है। जब मैं "स्थापित Maven" इस मैं क्या मिलता है के रूप में चलाने की कोशिश:एंड्रॉइड मेवेन प्लगइन को Eclipse

"लक्ष्य com.jayway.maven.plugins.android.generation2 निष्पादित करने में विफल: android-Maven-प्लगइन: 3.1.1: generate- प्रोजेक्ट एंड्रॉइड-क्लाइंट पर स्रोत (डिफ़ॉल्ट-जेनरेट-स्रोत): कोई एंड्रॉइड एसडीके पथ नहीं मिला। आप इसे पोम फ़ाइल में प्लगइन कॉन्फ़िगरेशन सेक्शन में कॉन्फ़िगर कर सकते हैं ... या ... या कमांड लाइन पर - Dandroid.sdk.path = ... या पर्यावरण परिवर्तनीय ANDROID_HOME -> [सहायता 1] "

अगर मैं अपने एंड्रॉइड_होम पथ को pom.xml में हार्डकोड करता हूं, तो यह ठीक काम करता है लेकिन हम गिट का उपयोग करते हैं और हर किसी के पास अलग-अलग पथ हो सकते हैं android_home.why क्यों नहीं है एंड्रॉइड-मैवेन-प्लगइन ग्रहण में env चर मिलता है?

android_home env चर मेरे पैथ में है। मैंने अपने pom.xml में $ {env.ANDROID_HOME} लिखा लेकिन यह अभी भी काम नहीं करता है।

आश्चर्यजनक रूप से, अगर मैं टर्मिनल (एमवीएन इंस्टॉल) का उपयोग मैवेन इंस्टॉल के रूप में चलाने के लिए करता हूं, तो यह काम करता है!

असल में यह मेरे लिए काफी वैकल्पिक समस्या है लेकिन फिर भी मैं जानना चाहता हूं कि यह प्लगइन ग्रहण में क्यों काम नहीं करता है।

+0

आप m2e-एंड्रॉयड का उपयोग कर रहे हैं? –

+0

मुझे उबंटू में एक ही समस्या का सामना करना पड़ रहा है, क्या आप इस मुद्दे को ठीक करने में सक्षम थे .... मेरी समस्या के बारे में अधिक जानकारी http://stackoverflow.com/questions/12532510/jenkins-maven-android-when-running-throwing -the-error-android-sdk-linux-platfor – Sam

उत्तर

4

आपको एंड्रॉइड_एचओएमई के लिए सिस्टम वैरिएबल बनाने की आवश्यकता है, इसे अपने पैथ में सेट न करें।

+7

मैंने "एसडीके का एंड्रॉइड_एचओएमई = पथ निर्यात किया" और इसे पाथ में जोड़ा। क्या मुझे कुछ और करना चाहिए? उत्तर के लिए धन्यवाद। –

+0

इसे निर्यात करने के बाद इसे PATH में कैसे जोड़ना है, क्या इसे जोड़ने के लिए कोई और तरीका है। – skygeek

0

आपको ग्रहण में एंड्रॉइड डेवलपमेंट टूल्स एसडीके स्थान पथ सेट करने की आवश्यकता है: विंडो -> प्राथमिकताएं पर क्लिक करें और एंड्रॉइड का चयन करें। एसडीके स्थान एंड्रॉइड वरीयताओं के तहत सेट किया जा सकता है।

+0

मैं m2e एंड्रॉइड का उपयोग कर रहा हूं और एसडीके स्थान वरीयताओं के तहत सेट है। लेकिन उत्तर के लिए धन्यवाद, और आपकी प्लगइन। –

0

अपनी परियोजना की रूट निर्देशिका में स्थानीय.प्रोपर्टीज नामक एक फ़ाइल बनाएं।

सामग्री के साथ;

sdk.dir=c:\\path\\to\\android-sdk 
+0

यह मेरे लिए काम नहीं किया। – Isuru

5

सुनिश्चित करें अपने Android SDK स्थापना ही API वर्शन आप अपने pom.xml पर कॉन्फ़िगर की लाइब्रेरी शामिल हैं।

उदाहरण के लिए, आपके विन्यास एक्सएमएल लग रहा है, तो जैसे:

<plugin> 
    <groupId>com.jayway.maven.plugins.android.generation2</groupId> 
    <artifactId>android-maven-plugin</artifactId> 
    ... 
    <configuration> 
     <sdk> 
      <path>${env.ANDROID_HOME}</path> 
      <platform>8</platform> 
     </sdk> 
     ... 
    </configuration> 
</plugin> 

तो आप एंड्रॉयड एसडीके प्रबंधक के साथ सत्यापित करना चाहिए (या सीधे अपने फाइल सिस्टम की जाँच कर: $ ANDROID_HOME/प्लेटफार्मों) आप एसडीके एपीआई 8 स्थापित होना। बेशक आप पुस्तकालय से मेल खाने के लिए अपने pom.xml को भी बदल सकते हैं।

3

अपने .bashrc या जो भी काम करेंगे में एक ANDROID_HOME चर की स्थापना, लेकिन निर्यात के लिए याद है कि चर इतना है कि यह subprocesses लिए उपलब्ध है। यहां सुझाए गए अन्य तरीकों के साथ एंड्रॉइड_एचओएमई सेट करना आपको कुछ शुरुआती त्रुटियों के माध्यम से प्राप्त करेगा, लेकिन बिना एंड्रॉइड_एचओएमई आपके बिल्ड का निर्यात संभवतः किसी बिंदु पर विफल हो जाएगा।

1

एक और तरीका पर्यावरण चर को pom.xml के लिए रन कॉन्फ़िगरेशन में सेट करना है।

रन कॉन्फ़िगरेशन मेनू पर जाएं, अपने प्रोजेक्ट पोम के लिए उपयोग की गई रन कॉन्फ़िगरेशन का चयन करें।एक्सएमएल और पर्यावरण टैब चुनें और "नया", तो सम्मिलित करें:

  • नाम फील्ड में ANDROID_HOME
  • पथ मूल्य फ़ील्ड में अपना एसडीके को

यह काम करता है, और कहा कि में जिस तरह से वेरिएबल केवल तभी सेट किया जाता है जब आप चयनित प्रोजेक्ट के लिए मेवेन कॉन्फ़िगरेशन लॉन्च करते हैं, और आप विभिन्न प्रोजेक्ट्स के लिए अलग-अलग पथ भी सेट कर सकते हैं, और आपको अपना .bashrc बदलने की आवश्यकता नहीं है। यह विंडोज़ में भी काम करता है।

5

यदि आप लिनक्स का उपयोग कर रहे हैं, तो को .bashrc में निर्यात करना काम नहीं कर सकता है।

export ANDROID_HOME=/home/toro/etc/android-sdk-linux 

मेरे लिए यह केवल काम करता है जब मैं इस तरह /etc/environment फ़ाइल में ANDROID_HOME निर्यात:

ANDROID_HOME=/home/toro/etc/android-sdk-linux 

आप यह काम करता है पाने के लिए कंप्यूटर को पुनः आरंभ करने के लिए है।

आपको पर्यावरण चर के लिए पर्यावरण चर के लिए फिर से लॉग इन करना होगा और फिर से लॉग इन करना होगा। वैकल्पिक रूप से, आप बस इसे स्थानीय स्तर पर स्रोत इसे बाहर का परीक्षण करने के पहले आप ऐसा कर सकता है: अपने आदेश पंक्ति पर $source /etc/environment

+0

आम तौर पर इस तरह के envs को सेट न करें (यानी आप डेस्कटॉप ऐप्स से उपयोग करना चाहते हैं) .bashrc में - यही कारण है कि यह आपके लिए काम नहीं करता है। डेबियन में उदाहरण के लिए मैंने आखिरकार .xsessionrc से सिस्टम वाइड एनएनवी के लिए .bash_env फ़ाइल को सोर्स करने के लिए इसे दबा दिया - यह लॉगिन पर * एक बार * सोर्स किया गया है और सभी निर्यातों को आगे के टर्मिनलों द्वारा विरासत में प्राप्त किया जाना चाहिए और आपको डेस्कटॉप एप्लिकेशन के लिए भी उपलब्ध होना चाहिए। क्या आप इन मानों को लॉगिन शैल (जैसे एसएसएचइंग) में भी उपलब्ध करना चाहते हैं, तो आप अपने .bash_profile से उसी .bash_env को स्रोत करेंगे (जिसे लॉगिन पर सोर्स नहीं किया गया है और डेस्कटॉप एनएनवी पर कोई प्रभाव नहीं पड़ता है)। – RichieHH

+0

लिनक्स एनवी में लॉगआउट करने की कोई आवश्यकता नहीं है, बस स्रोत .bash_profile करें। मैक में : स्रोत .profile। – issamux

3

, चलाएँ:

mvn clean install -- Dandroid.sdk.path="/Applications/Android Studio.app/sdk/"

अन्य तरीकों में से कोई भी वास्तव में काम किया। (स्थापित करने ANDROID_HOME कुछ भी नहीं है)

1

प्रलेखन से

आप <sdk><path>...</path></sdk> या <properties><android.sdk.path>...</android.sdk.path></properties> या कमांड लाइन -Dandroid.sdk.path=... के प्रयोग पर का उपयोग कर pom.xml फ़ाइल में android-maven-plugin विन्यास अनुभाग में या स्थापित करने के माहौल उसे कॉन्फ़िगर कर सकते हैं परिवर्तनीय ANDROID_HOME

समाधान 1

मैं एक Android एसडीके प्रणाली चर ANDROID_SDK (ANDROID_HOME के बजाय) कहा जाता है परिभाषित और मेरे pom.xml में यह इस तरह से संदर्भित किया है:

<groupId>...</groupId> 
    <artifactId>...</artifactId> 
    <version>...</version> 
    <packaging>apk</packaging> 
    <name>...</name> 
    <description>...</description> 

    <properties> 
    <android.sdk.path>${env.ANDROID_SDK}</android.sdk.path> 
    ... 
    </properties> 

समाधान 2

एक विकल्प के रूप में आप इसे android-maven-plugin अनुभाग में भी कॉन्फ़िगर कर सकते हैं:

<plugin> 
<extensions>true</extensions> 
<groupId>com.jayway.maven.plugins.android.generation2</groupId> 
<artifactId>android-maven-plugin</artifactId> 
<version>${android-maven-plugin.version}</version> 
<configuration> 
    <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile> 
    <assetsDirectory>${project.basedir}/assets</assetsDirectory> 
    <resourceDirectory>${project.basedir}/res</resourceDirectory> 
    <nativeLibrariesDirectory>${project.basedir}/src/main/native</nativeLibrariesDirectory> 
    <sdk> 
    <android.sdk.path>${env.ANDROID_SDK}</android.sdk.path> 
    <platform>16</platform> 
    </sdk> 
    <undeployBeforeDeploy>true</undeployBeforeDeploy> 
</configuration> 
</plugin> 

समाधान 3

आप कमांड लाइन Maven के लिए एक तर्क पारित करने से एसडीके सेट कर सकते हैं तीसरा विकल्प के रूप में:

mvn clean install -Dandroid.sdk.path="C:\\Program Files (x86)\\Android\\android-sdk"

संबंधित मुद्दे