2015-03-23 5 views
15

के कारण असफल रहा क्योंकि शीर्षक कहता है कि मेरे जेनकींस बिल्डिंग एंड्रॉइड एसडीके को नहीं ढूंढने के कारण वातावरण पथ में स्थित होने के बावजूद विफल रहता है।जेनकिंस बिल्डिंग गायब एंड्रॉइड एसडीके

यहाँ कंसोल लॉग

Started by user anonymous 
Building in workspace /Users/lmnapp/.jenkins/jobs/Android_app_master/workspace 
> git rev-parse --is-inside-work-tree # timeout=10 
Fetching changes from the remote Git repository 
> git config remote.origin.url https://bitbucket.org/xxxxx-xxx/xxxx-android-app.git # timeout=10 
Fetching upstream changes from https://bitbucket.org/xxxx-mob/xxxx-android-app.git 
> git --version # timeout=10 
using .gitcredentials to set credentials 
> git config --local credential.helper store --file=/var/folders/gj/xxxxxxxx/T/xxxxx.credentials # timeout=10 

+ export ANDROID_HOME=/Users/lmnapp/android-sdk-macosx 
+ ANDROID_HOME=/Users/lmnapp/android-sdk-macosx 
+ export ANDROID_SDK=/Users/lmnapp/android-sdk-macosx/platforms 
+ ANDROID_SDK=/Users/lmnapp/android-sdk-macosx/platforms 
+ export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx 
+ PATH=/usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx 
+ export AVD_NAME=jenkinsGoogleApi18_1 
+ AVD_NAME=jenkinsGoogleApi18_1 
+ echo displayPath 
displayPath 
+ echo .... 
.... 
+ echo .... 
.... 
+ echo /usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx 
/usr/bin:/bin:/usr/sbin:/sbin:/Users/lmnapp/android-sdk-macosx/tools:/Users/lmnapp/android-sdk-macosx/platform-tools:/Users/lmnapp/android-sdk-macosx 
+ adb start-server 
[Gradle] - Launching build. 
[workspace] $ /Users/lmnapp/.jenkins/jobs/Android_app_master/workspace/gradlew assembleProductionRelease 
Failed to notify ProjectEvaluationListener.afterEvaluate(), but primary configuration failure takes precedence. 
java.lang.RuntimeException: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable. 
    at com.android.build.gradle.internal.SdkHandler.getAndCheckSdkFolder(SdkHandler.java:103) 
    at com.android.build.gradle.internal.SdkHandler.getSdkLoader(SdkHandler.java:113) 
    at com.android.build.gradle.internal.SdkHandler.initTarget(SdkHandler.java:87) 
    at com.android.build.gradle.BasePlugin.ensureTargetSetup(BasePlugin.groovy:467) 
    at com.android.build.gradle.BasePlugin.access$0(BasePlugin.groovy) 
    at com.android.build.gradle.BasePlugin$_createTasks_closure9.doCall(BasePlugin.groovy:372) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) 
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:278) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1016) 
    at groovy.lang.Closure.call(Closure.java:423) 
    at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40) 
    at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25) 
    at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:83) 
    at org.gradle.listener.BroadcastDispatch.dispatch(BroadcastDispatch.java:31) 
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
    at com.sun.proxy.$Proxy12.afterEvaluate(Unknown Source) 
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:79) 
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:65) 
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:504) 
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:83) 
    at org.gradle.execution.TaskPathProjectEvaluator.configureHierarchy(TaskPathProjectEvaluator.java:47) 
    at org.gradle.configuration.DefaultBuildConfigurer.configure(DefaultBuildConfigurer.java:35) 
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:129) 
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:106) 
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:86) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:80) 
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33) 
    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:36) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26) 
    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:51) 
    at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:171) 
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:237) 
    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:210) 
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35) 
    at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24) 
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:206) 
    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169) 
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33) 
    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22) 
    at org.gradle.launcher.Main.doAction(Main.java:33) 
    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:54) 
    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:35) 
    at org.gradle.launcher.GradleMain.main(GradleMain.java:23) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30) 
    at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:127) 
    at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:55) 

FAILURE: Build failed with an exception. 

* Where: 
Build file '/Users/lmnapp/.jenkins/jobs/Android_app_master/workspace/project/build.gradle' line: 120 

* What went wrong: 
A problem occurred evaluating project ':project'. 
> 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 

के रूप में यू देख सकते है, पथ स्पष्ट रूप से android_home सही ढंग से स्थापित किया है।

मैं इसे जेनकींस में ग्रेडल के माध्यम से बनाने की कोशिश कर रहा हूं।

यह तेह पूर्व निष्पादित खोल आदेशों मैं इस काम के लिए कॉन्फ़िगर किया है

export ANDROID_HOME=/Users/lmnapp/android-sdk-macosx 
export ANDROID_SDK=/Users/lmnapp/android-sdk-macosx/platforms 
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME 
export AVD_NAME=jenkinsGoogleApi18_1 

echo displayPath 
echo .... 
echo .... 

echo $PATH 

उत्तर

48

इसे फिक्स्ड।

  1. जेनकींस के लिए जाएं> जेनकींस> कॉन्फ़िगर प्रणाली
  2. चेक "पर्यावरण चर" प्रबंधित
  3. नाम जोड़ें: ANDROID_HOME, मूल्य -
  4. क्लिक> अपने Android SDK dir
  5. नीचे स्क्रॉल "जोड़ें" SAV
+0

धन्यवाद! इससे मुझे मदद मिलती है! – RockerFlower

+0

आपको बहुत बहुत धन्यवाद! इतना आसान लेकिन इस समाधान को ऑनलाइन ढूंढना बहुत मुश्किल था। –

-1

मैं कल्पना है कि आप संस्करण नियंत्रण है कि अपने स्थानीय मशीनों एसडीके फ़ाइल का पथ निहित करने के लिए फाइल अपने local.properties में जाँच करने के लिए (है जो प्रोजेक्ट सेट अप करते समय या प्रोजेक्ट खोलते समय स्वचालित रूप से किया जाता है)। बदलें अपनी local.properties डिफ़ॉल्ट एसडीके पथ के लिए फ़ाइल (जिससे यह अपने आप स्थानीय मशीन पर आधारित परिवर्तन संभाल लेंगे):

sdk.dir=/Applications/android_sdk

चेक कि संस्करण नियंत्रण में बदलने के लिए, और उसके बाद में local.properties डाल आपकी .gitignore फ़ाइल (see here for help)।

+0

मैंने स्थानीय.प्रोपर्टीज फ़ाइल में चेक नहीं किया – jonney

+0

बस अपना खुद का जवाब देखा, और यही वह सुझाव है जो मैं सुझाव देने जा रहा था क्योंकि मैंने सोचा था कि प्री-स्क्रिप्ट विश्व स्तर पर पर्यावरण को सेट नहीं करती है या इसे तक पहुंचने के लिए पर्याप्त लंबे समय तक जीवित रहती है । मेरे पास आमतौर पर स्थानीय रिपोर्पियां होती हैं जब मैं बनाता हूं ताकि आमतौर पर एसडीके पथ को संभाला जा सके। अपने उत्तर को स्वीकार करने के लिए भी न करें ताकि अन्य इसे देख सकें! –

6

समस्या यह है कि आप "निष्पादन खोल" चरण में ANDROID_HOME पर्यावरण चर निर्यात कर रहे हैं। एक बार खोल चरण पूरा हो जाने के बाद, वह वातावरण खत्म हो गया है - चर को बाद के निर्माण चरणों में नहीं ले जाया जाएगा।

यदि आप एक ही निर्माण चरण में ग्रैडल समेत सब कुछ निष्पादित कर रहे थे, तो यह काम करेगा, उदाहरण के लिए

export ANDROID_HOME=/foo/bar/sdk 
./gradlew clean assembleProductionRelease 

लेकिन चूंकि आप एक अलग निर्माण कदम के रूप में Gradle प्लगइन का उपयोग कर रहे वातावरण चर अब उपलब्ध नहीं हैं।

जेनकिंस कॉन्फ़िगरेशन के माध्यम से वैश्विक स्तर पर पर्यावरण चर निर्यात करना जैसा आपने अपने उत्तर में किया है, इसे हल करने का एक तरीका है, हालांकि आप निर्माण के दौरान पर्यावरण चर को इंजेक्ट करने के लिए EnvInject plugin का उपयोग भी कर सकते हैं। इस प्लगइन का उपयोग करके स्थापित चर सभी बिल्ड चरणों के लिए उपलब्ध होंगे।


निर्माण मशीन के लिए, सबसे अच्छा अभ्यास Android SDK स्थापित करने और सर्वर config में वातावरण चर हार्डकोड की तरह कम करने के लिए मैन्युअल रूप से सेटअप की राशि की आवश्यकता, होगा।

मैं आपके ग्राडल बिल्ड में Android SDK Manager plugin जोड़ने की अनुशंसा कर सकता हूं - यह स्वचालित रूप से एंड्रॉइड एसडीके प्लस आपके लिए किसी भी बिल्ड निर्भरता को स्थापित करेगा।

+0

मैंने पहली बार ANDROID_HOME को कॉन्फ़िगर करने का प्रयास किया लेकिन यह त्रुटि हल नहीं हुई "local.properties (Le fichier spécifié introuvable)। मैंने फिर निर्यात को कॉल करके और उसी कॉल में निर्माण करके अपना विचार करने की कोशिश की लेकिन इसने समस्या हल नहीं की। कोई सलाह? – Seynorth

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