failed to create task or type checkenv Cause The name is undefined

16,758

Solution 1

<checkenv /> is required for the Android build, it's in a library in the Android SDK directory. I had the same problem and discovered the cause was a bad directory in the local.properties file required by build.xml and buildAndroid.xml. Here's a sample of my local.properties file:

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.

# location of the SDK. This is only used by Ant
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=/Users/myusername/android-sdk-macosx

This gets generated automatically when I'm in Eclipse, but when Eclipse is closed and I'm working with ant at the command line, it was not updated and had some other user's information that had been committed to SVN and I checked out with an svn update.

I updated it to point to my own Android SDK directory and everything started working.

Hope that helps!

Solution 2

The problem is not with anttasks.properties or emma_ant.properties(at least for me). I fixed it differently. My target build.xml had these lines

<property file="local.properties"/>
<property file="project.properties"/>
<property file="ant.properties"/>

Curiously enough, the local.properties was missing from the build.xml folder, whereas the other two were present. Luckily, I had already had it because of my previous attempt with Android Studio i.e. in StudioProjects/<my project>/local.properties. In other words it is automatically created by Android Studio. If you don't have it, this is its content:

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Fri Apr 22 21:28:15 EEST 2016
ndk.dir=home/<user>/android-ndk-r11c
sdk.dir=home/<user>/Android/Sdk

So, you basically can create it yourself specifying the paths of your SDK and possibly NDK.

I hope it helps.

Share:
16,758
tanzeelrana
Author by

tanzeelrana

Updated on July 25, 2022

Comments

  • tanzeelrana
    tanzeelrana almost 2 years

    I know there are some questions related to this but what Im trying to do is a bit different.

    my 2 targets that I have specified in my project config options are

    clean debug

    both of them are available by default so I dont have to write new code for any additional targets. but my build is still failed.

    Started by user anonymous
    [EnvInject] - Loading node environment variables.
    Building in workspace /var/lib/jenkins/jenkins-data/jobs/anttest1/workspace
    Checkout:workspace / /var/lib/jenkins/jenkins-data/jobs/anttest1/workspace - hudson.remoting.LocalChannel@4603278f
    Using strategy: Default
    Last Built Revision: Revision 17b9fd2ee52d01e7a425822f353222445e3a82c7 (EventMatrix_Cordova_App/HEAD, EventMatrix_Cordova_App/master)
    Fetching changes from 1 remote Git repository
    Fetching upstream changes from EventMatrix_Cordova_App
    Seen branch in repository EventMatrix_Cordova_App/HEAD
    Seen branch in repository EventMatrix_Cordova_App/master
    Commencing build of Revision 17b9fd2ee52d01e7a425822f353222445e3a82c7 (EventMatrix_Cordova_App/HEAD, EventMatrix_Cordova_App/master)
    Checking out Revision 17b9fd2ee52d01e7a425822f353222445e3a82c7 (EventMatrix_Cordova_App/HEAD, EventMatrix_Cordova_App/master)
    Warning : There are multiple branch changesets here
    [mysteryshopper_version2] $ ant -file build.xml -Dlabel=anttest1-42 clean
    Buildfile: /var/lib/jenkins/jenkins-data/jobs/anttest1/workspace/mysteryshopper_version2/build.xml
      **[taskdef] Could not load definitions from resource anttasks.properties. It could not be found.
      [taskdef] Could not load definitions from resource emma_ant.properties. It could not be found.**
    
    -**check-env**:
    
    BUILD FAILED
    /usr/local/lib/android-sdk-linux/tools/ant/build.xml:392: Problem: **failed to create task or type checkenv**
    Cause: The name is undefined.
    Action: Check the spelling.
    Action: Check that any custom tasks/types have been declared.
    Action: Check that any <presetdef>/<macrodef> declarations have taken place.
    
    
    Total time: 0 seconds
    Build step 'Invoke Ant' marked build as failure
    Finished: FAILURE
    

    can someone help me on this ??

    • Mark O'Connor
      Mark O'Connor almost 11 years
      Your ANT installation on Jenkins cannot find the 3rd party android jar containing the checkenv task. See tools.android.com/tech-docs/ant-tasks
    • tanzeelrana
      tanzeelrana almost 11 years
      the results that you can see are from jenkins that is installed on my company's server. I tried the same thing on my own computer and it perfectly worked fine. just a quick question, Is this 3rd party android jar file inside the android-sdk-linux folder ? because I think its a permission or read issue. I had the same issue with the android-sdk-linux/tools/ant/build.xml file. I fixed it by allowing the other user to read/write and execute.
    • tanzeelrana
      tanzeelrana almost 11 years
      If I allow other users(in my case jenkins) the read/write and execute permission to android-sdk-linux folder and all its sub directories, will that be a problem ? because my senior "does not want to open that folder to the world" .
  • tanzeelrana
    tanzeelrana almost 11 years
    still the same. can you check the permissions on yyour android-sdk-macosx folder and tell me I guess I have a write issue
  • AWT
    AWT almost 11 years
    permissions on that folder are drwxr-x---@
  • AWT
    AWT almost 11 years
    Also, make sure you are using Apache ant 1.8.x.
  • tanzeelrana
    tanzeelrana almost 11 years
    org.jenkins-ci.plugins:ant:1.2
  • tanzeelrana
    tanzeelrana almost 11 years
    there is no option to upgrade to 1.8.x
  • AWT
    AWT almost 11 years
    Can you try it using a newer version of Ant? Or are you forced to use this version because of the jenkins requirement?
  • tanzeelrana
    tanzeelrana almost 11 years
    I did the same thing on my own computer it worked perfectly fine but when I run it on jenkins on my company's server it fails. the only difference that i can see is that on my computer I have /home/tanzeelrana/android-sdk-linux/tools/lib/anttasks.jar whereas on my company's server this file has a ame ant-tasks.jar
  • tanzeelrana
    tanzeelrana almost 11 years
    If you go to jenkins website they say that the latest release is 1.2 wiki.jenkins-ci.org/display/JENKINS/Ant+Plugin how are you using the 1.8.x version of ant on your computer?
  • AWT
    AWT almost 11 years
    I would set the directory in local.properties to point to the AndroidSDK directory on the server. I am not familiar with Jenkins, unfortunately, so I'm not sure how to troubleshoot it from that side.
  • tanzeelrana
    tanzeelrana almost 11 years
    I set the dir in local.properties to point to my AndroidSDK dir and now Im using 1.8.2 ant but the problem still remains the same. the permissions on the sdk folder are as follo : drwxr-xr-x 5 root root 4096 Jun 10 12:46 android-sdk-linux
  • Sagotharan
    Sagotharan over 10 years
    @tanzeelrana this answer is not solve problem for me,. :-(,. i had same error which you face. give a solution. i set the sdk.dir=E:\\JEGADEES\\Android\\adt-bundle-windows-x86_64-201‌​31030 path in my local.properties file also.