Java项目赢得';不能为Android正确编译到JAR

Java项目赢得';不能为Android正确编译到JAR,java,android,ant,jar,Java,Android,Ant,Jar,在我正在开发的一个应用程序中,我遇到了一个Java库的问题,它在这里- 当我运行构建android包的ant android时,它构建得很好,Eclipse可以很好地读取Jar 但在我的设备上,它说dalvik找不到任何类,并最终抛出ClassDef异常 我以前用过jar,所以我想知道是不是我的ant文件坏了也许你没有把jar放在libs目录而不是lib目录?这里有一个类似的问题首先,要使用ant for Android构建apk,您必须使用ant debug或ant release,我不知道a

在我正在开发的一个应用程序中,我遇到了一个Java库的问题,它在这里-

当我运行构建android包的ant android时,它构建得很好,Eclipse可以很好地读取Jar

但在我的设备上,它说dalvik找不到任何类,并最终抛出ClassDef异常


我以前用过jar,所以我想知道是不是我的ant文件坏了

也许你没有把jar放在
libs
目录而不是
lib
目录?这里有一个类似的问题

首先,要使用ant for Android构建apk,您必须使用
ant debug
ant release
,我不知道
ant Android
做什么以及为什么要使用它,但这个命令不是ant for Android的标准方法的一部分,这是肯定的

Ant只是一个构建工具,如果开发人员用Ant提供构建解决方案,并不意味着他的应用程序是针对Android的

在Android下,所有非本机库的内容都转换为DEX对象,这类似于Dalvik的字节码,你的应用程序中没有jar或其他容器

这个问题可能对你有帮助


本主题中有很多概念性错误,您可能希望在使用Android平台之前先对其进行研究。

我将在eclipse中打开您的应用程序项目(该项目依赖于运行时未找到的Java库),并将Java库生成的jar文件添加到其构建路径中。然后执行

android -s update project -p .
与应用程序的Manifest.xml文件位于同一目录中,以便生成ant构建文件

在此之后,您应该能够通过以下操作使用ant构建应用程序

ant debug


我通过确保Ant编译到Java的
1.6
,这是我在Eclipse中为应用程序设计的目标,从而解决了这个问题。

Eclipse不应该为android构建apk而不是jar吗?android应用程序从不以任何方式、形状和形式使用jar。它是一个库,所以是的。@user827992你错了,请删除您的comment@Alex请打开一本书或阅读有关Android的文档,谢谢。我在过去ADT改变其规则时已经遇到过这个问题,但它的方向是正确的。我已经研究Android平台两年多了,所以我非常清楚我在做什么。我知道Ant做什么,以及标准的Android Ant设置是如何工作的。然而,我正在构建一个用于Android的标准Java库。@JoeSimpson这是答案,我不能写一些与实际不同的东西,如果你确信这一点,请解释为什么它不起作用。Dalvik机器只不理解DEX字节码语言,你提供的是一个jar文件,你希望它能工作,你不是认真的。我在Google I/O上也听了很多演讲,我从来没有听说过Dalvik从罐子里读东西,我不知道你在学什么,但它不是Android。@JoeSimpson我想帮你,但你一直朝着错误的方向走,你有一个不起作用的应用程序,你仍然相信,如果安卓团队的一位工程师的谈话不能让你相信我不知道什么能让你相信,那么看看这个吧。这个应用程序已经切换了库,并且以前一直在工作。我的问题是,jar文件在Android中工作。它已被广泛使用,例如,请帮助我了解我可以做我想做的事。Android SDK可以将JAR文件编译成DEX字节码。去和安卓工程师谈谈,他们会告诉你同样的事情。我不使用ant构建应用程序,只使用库。我在应用程序中使用Eclipse,因此我认为
android update project
不起作用,那么将jar文件添加到项目构建路径就足够了。我在我的一个项目中使用了gson。我只是将gson jar文件添加到构建路径,生成的apk按预期工作,gson正在运行时使用。。我的jar文件位于项目的“libs”目录中。我将它们符号链接到另一个由不同项目共享的位置。也许位置不对?但这应该会给您生成错误,而不是运行时的错误。位置正确,文件位于libs/twitter-android.jar中
ant release