2

我有这样的设置:

NativeLibrary    CommonJavaComponents
   |      |            |      |
   |      |            |      |
   |     FunctionalLibrary1   |
   |            |             |
    ----------Project---------

一开始有点复杂,但这是我最简单的设置之一。

  • NativeLibrary包含 .so 文件和 jni jar
  • CommmonJavaComponents包含自定义的 Activity/Fragment 祖先和 android-support-v13.jar
  • FunctionalLibrary1使用上述两者并提供项目中使用的额外功能
  • Project直接引用所有3。

我设法通过导出“Android Private Libraries”来编译所有内容。

不幸的是,在我的设备上,我得到了这个:

05-22 16:52:50.110: W/dalvikvm(3215): Unable to resolve superclass of Lcom/test/library/common/activity/LoggingActivity; (50)
05-22 16:52:50.110: W/dalvikvm(3215): Link of class 'Lcom/test/library/common/activity/LoggingActivity;' failed

LoggingActivity存在于CommonJavaComponentsFragmentActivity从 android-support-v13.jar 扩展

有人知道我需要施展什么魔法还是 ADT 22 完全坏了?

编辑

为了简洁:

NativeLibrary、CommonJavaComponents、FunctionalLibrary1 都导出了Android 私有库Project引用所有三个,它编译但仍然显示上述错误。

4

2 回答 2

3

我还得到了 ARCA 的 ClassNotFoundExcpetion。ACRA jar 位于我们的核心库项目之一中,并从该中心位置导入到应用程序项目中。

在我的情况下,在设备上卸载和安装应用程序(如 Graeme 所建议)并没有改变任何东西。如果是这种情况,这将使 App 用户无法进行更新,并且 ADT 22 将无法用于生产用途。

我可以在几个项目中找到问题,因为我们明确地将 jar 文件添加到 Java 构建路径。这种在 libs 文件夹中处理 jars 的 2011 年风格习惯(我猜是在 ADT 17 之前)在我们的应用程序的许多地方都得到了保留。

通过简单地用以下内容替换和标准化所有库项目的 .classpath 文件,我设法让项目使用 ADT 22 和工具 17 运行:

<classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="src" path="gen"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/> <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/> <classpathentry kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/> <classpathentry kind="output" path="bin/classes"/> </classpath>

所有 jar 文件都被删除,并且必须像许多其他人之前所说的那样导出“私人图书馆”。

这是使用 API 目标 17 项目测试的:

android.library=true
target=android-17

如果您发现仍有问题,请尝试对根 App 项目(即您尝试运行的非库项目)执行相同操作


要添加的一件事:在您设法编译并运行您的应用程序后,您可能会在更新 libs 文件夹中的 jar 后在 eclipse 的“问题”视图中看到:

The container 'Android Private Libraries' references non existing library '.../FINARXAndroidWidgets/libs/jackson-core-2.1.1.jar'

用户不能编辑库变量的内容。唯一对我有帮助的是重新启动 Eclipse。

这样做的坏处是它也可能发生在其他人的工作空间中的 SVN/GIT 更新之后。

于 2013-05-24T06:32:09.380 回答
0

卸载应用程序并重新安装似乎已修复它。在更改其依赖库的导出设置时,Android/Eclipse 似乎无法看到发生的更改,因此无法正确重建或重新安装。

为了确认,工作设置涉及Project将其每个依赖库直接引用为Android Libraries. 每个项目(即使包括Project虽然这不应该影响任何东西)都在使用 export Android Private Libraries

与 ADT 16 的更新一样 - 这应该包含一个大的闪烁警告,说“这将破坏你的项目设置 - 请等到你不在发布周期中”

于 2013-05-22T16:24:42.690 回答