ADT 22多个库问题

时间:2013-05-22 16:04:25

标签: android adt

我有这样的设置:

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

起初稍微复杂,但这是我最简单的设置之一。

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

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

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

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位于CommonJavaComponents,并从android-support-v13.jar扩展FragmentActivity

有人知道我需要执行什么魔法,或者ADT 22是否只是简单破碎?

编辑

简明扼要:

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

2 个答案:

答案 0 :(得分:3)

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

在我的情况下,在设备上卸载和安装应用程序(由Graeme建议)并未改变任何内容。如果情况确实如此,这将使App用户无法进行更新,而ADT 22将无法用于生产。

我可以在几个项目中追踪问题,因为我们明确地将jar文件添加到Java Build Path。这个2011年在libs文件夹中处理jar的习惯(我猜在ADT 17之前)已经在我们的应用程序的许多地方保留了。

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

<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文件都被删除,“Private Libraries”必须像许多其他人之前所说的那样导出。

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

android.library=true
target=android-17

如果您查看剩余问题,请尝试对根应用程序项目(即您尝试运行的非库项目)执行相同的操作


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

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

用户无法编辑库变量的内容。唯一帮助我的是重启eclipse。

关于这一点的坏处是,它可能也发生在其他人工作区的SVN / GIT更新之后。

答案 1 :(得分:0)

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

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

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