【问题标题】:com.android.ant.NewSetupTask not found error after upgrade to SDK v20 toolscom.android.ant.NewSetupTask 升级到 SDK v20 工具后未找到错误
【发布时间】:2013-08-07 10:07:58
【问题描述】:

升级到 v20 SDK 工具后,我在尝试运行我的 Ant 构建时收到此错误。

sdk.dir 属性正确且经过验证(添加到 build.xml 中的输出)。解包 anttasks.jar 似乎最新工具中确实缺少 NewSetupTask。

META-INF/
META-INF/MANIFEST.MF
com/
com/android/
com/android/ant/
com/android/ant/RenderScriptTask.class
com/android/ant/SingleDependencyTask$1.class
com/android/ant/PropertyByReplaceTask.class
com/android/ant/BuildTypedTask.class
com/android/ant/AaptExecTask$1.class
com/android/ant/AaptExecTask$ResFolderInputPath.class
com/android/ant/AaptExecTask$NoCompress.class
com/android/ant/ApkBuilderTask.class
com/android/ant/GetLibraryPathTask.class
com/android/ant/InputPath.class
com/android/ant/RenderScriptTask$OptLevel.class
com/android/ant/TaskHelper.class
com/android/ant/XPathTask.class
com/android/ant/ManifestMergerTask.class
com/android/ant/DependencyHelper$LibraryProcessor.class
com/android/ant/CheckEnvTask.class
com/android/ant/RenderScriptTask$1.class
com/android/ant/ApkBuilderTask$SourceFolderInputPath.class
com/android/ant/DependencyHelper$JarProcessor$1.class
com/android/ant/ComputeDependencyTask.class
com/android/ant/SingleInputOutputTask.class
com/android/ant/GetLibraryPathTask$1.class
com/android/ant/RenderScriptTask$RenderScriptProcessor.class
com/android/ant/SignApkTask.class
com/android/ant/DependencyHelper$JarProcessor.class
com/android/ant/SignApkTask$NullZipFilter.class
com/android/ant/DependencyHelper$AdvancedLibraryProcessor.class
com/android/ant/DependencyGraph.class
com/android/ant/ComputeDependencyTask$1.class
com/android/ant/DexExecTask.class
com/android/ant/MultiFilesTask.class
com/android/ant/AidlExecTask$1.class
com/android/ant/DependencyHelper.class
com/android/ant/AidlExecTask.class
com/android/ant/BuildConfigTask.class
com/android/ant/ApkBuilderTask$1.class
com/android/ant/AaptExecTask.class
com/android/ant/SingleDependencyTask.class
com/android/ant/DependencyGraph$1.class
com/android/ant/ZipAlignTask.class
com/android/ant/GetTypeTask.class
com/android/ant/GetEmmaFilterTask.class
com/android/ant/IfElseTask.class
com/android/ant/DependencyGraph$DependencyStatus.class
com/android/ant/AidlExecTask$AidlProcessor.class
com/android/ant/ComputeProjectClasspathTask.class
com/android/ant/SingleDependencyTask$InputPathFactory.class
com/android/ant/GetTargetTask$1.class
com/android/ant/MultiFilesTask$DisplayType.class
com/android/ant/MultiFilesTask$SourceProcessor.class
com/android/ant/GetProjectPathsTask.class
com/android/ant/SignApkTask$1.class
com/android/ant/GetTargetTask.class
com/android/ant/ComputeDependencyTask$2.class
com/android/ant/GetLibraryPathTask$LeafProcessor.class
anttasks.properties

去哪儿了?

【问题讨论】:

  • 好收获! [您可能希望将答案放入“答案”字段并接受。]

标签: ant sdk


【解决方案1】:

问题源于我使用的是完全自定义的 build.xml 文件。因此,它包含以下自定义 ant 任务定义:

<taskdef name="setup"
    classname="com.android.ant.NewSetupTask"
    classpathref="android.antlibs" />

<taskdef name="aapt"
    classname="com.android.ant.AaptExecTask"
    classpathref="android.antlibs" />

<taskdef name="aidl"
    classname="com.android.ant.AidlExecTask"
    classpathref="android.antlibs" />

<taskdef name="renderscript"
    classname="com.android.ant.RenderScriptTask"
    classpathref="android.antlibs" />

<taskdef name="dex"
    classname="com.android.ant.DexExecTask"
    classpathref="android.antlibs" />

<taskdef name="apkbuilder"
    classname="com.android.ant.ApkBuilderTask"
    classpathref="android.antlibs" />

<taskdef name="zipalign"
    classname="com.android.ant.ZipAlignTask"
    classpathref="android.antlibs" />

<taskdef name="xpath"
    classname="com.android.ant.XPathTask"
    classpathref="android.antlibs" />

<taskdef name="if"
    classname="com.android.ant.IfElseTask"
    classpathref="android.antlibs" />

anttasks.jar 库不再提供其中的一个或多个。在将我的 build.xml 文件与位于 {sdk.dir}/tools/ant/build.xml 的文件进行比较时,我注意到这些定义已替换为以下内容:

<taskdef resource="anttasks.properties" classpathref="android.antlibs" />

替换旧的任务定义。在我的 build.xml 文件中使用这个新的任务 def 语句删除了对丢失任务的引用并修复了我的问题。

【讨论】:

  • 要添加更多细节,这是一件好事(我也从 SDK v20 升级到 v22 并带有完全自定义的 build.xml ANT 文件),而且,您还需要修改 android.antlibs 路径元素,因为某些 JAR 已在 {sdk.dir}/tools/lib 路径下重命名,现在名称为 {sdk.dir}/tools/lib/ant-tasks.jar
【解决方案2】:

检查android-sdks\tools\lib下的anttask.jar。

在您的 build.xml 上,它可能是 anttask.jar,但新 sdk 的名称是 ant-task.jar。 因此,更改 xml 或文件系统上的名称。

【讨论】:

  • 感谢您的回答,它帮助我解决了类似但不完全的问题。
【解决方案3】:

使用[ANDROID_HOME]\android-sdk\tools\ant下更新的build.xml,不需要添加自定义的ant任务定义

【讨论】:

  • 是的,如果您的 build.xml 导入 [ANDROID_HOME]\android-sdk\tools\ant\build.xml,那就是真的。但是,如果您已经完全自定义了 build.xml 文件,您可能不会导入此文件,因此您需要更新任务定义。适当的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 2015-05-19
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多