升级到ADT 22后,库不会再添加到APK

Sim*_*ays 236 eclipse android adt

我有一个相当大的Android App项目,它引用了几个库项目.一切都很好,直到我将eclipse ADT插件升级到最新版本(v22).我当然也升级了SDK.我在eclipse中没有看到任何编译错误,但是当我在手机上运行项目时,我得到一个NoClassDefFoundError.

java.lang.NoClassDefFoundError: org.acra.ACRA
....
Run Code Online (Sandbox Code Playgroud)

方舟库包含在引用库中的项目(在libs文件夹)中的一个,我可以看到它在Package Explorer中的"Android的私人图书馆",也正如我所说的,没有编译错误.该项目在没有升级ADT的其他人的计算机上运行良好.

我已经尝试了很多东西,包括但不限于:

  • 重新安装android SDK
  • 下载一个新的ADT包
  • 删除我的所有代码,从git再次获取它
  • 将相关库复制到应用程序项目
  • 注释掉使用这个库的代码 - 我只是为下一个库得到了同样的错误

一切都没有成功,所以我在这里真的很绝望.

如果有人能给我一个如何解决这个问题的提示,我会很高兴.

Com*_*are 337

他的adt-dev帖子中引用波士顿的街道:

升级时,并不总是检查新"Android私有库"的"订购和导出".android-support-v4.jar现在位于"Android私有库"部分.

要解决此问题,请转到"订购和导出"并选中"Android私有库".然后刷新/清理/重建.

在为库项目完成此"修复"之后,您可能需要关闭并重新打开任何依赖项目,因为他们可能不会立即看到此"修复".

给这一点,运气好,它将解决你的问题.

在此输入图像描述

  • CommonsWare就像最初的先驱之一,非常感谢你!:) (32认同)
  • @Phillip:AFAIK,这是所有项目.更确切地说,我想,所有的项目都有`libs /`中的东西,但你也可以检查它,以防你几个月后添加到libs /`的东西而忘记了这一点. (9认同)
  • 是仅仅是我,或者让每个使用Eclipse和库的开发人员都进入他们的所有图书馆项目并将"Android私人图书馆"标记为已导出,这听起来是错误的吗?这让我觉得我们都误以为Google首先添加了这个新的"功能".也许我们不应该将图书馆标记为已导出.也许我们应该将任何丢失的jar文件直接添加到我们的"libs"文件夹中.例如:这将允许我的库项目使用最新的android-support-v4.jar [v13],而ABS内部使用android-support-v4-12.jar. (3认同)
  • @swooby:"只是我,或者让每个使用Eclipse和库的开发人员都进入他们的所有图书馆项目并将"Android私人图书馆"标记为已导出,这听起来是错的吗?" - 它是"错误的"只要它是一个bug,由编写工具的人承认."也许我们应该将任何丢失的jar文件直接添加到我们的"libs"文件夹中" - 哦,你也需要这样做,就像过去一年中所做的那样.但是,您仍然必须选中此复选框. (2认同)

小智 10

仅仅检查Android私有库是不够的,我还必须在Android SDK Manager中安装Android SDK Build-tools.