3

我有两个在 Eclipse 下用 Maven 构建的 Android 项目。一个是项目本身,另一个是测试项目。

当我以 a 运行项目时,Android JUnit Test它会引发错误:

java.lang.RuntimeException: Exception during suite construction
Caused by: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NoClassDefFoundError: com.some.TestClass

查看Logcat我发现此错误的根本原因是:

Lcom.some.TestClass; had used a different Landroid/support/v4/app/FragmentActivity; during pre-verification

在网上挖掘我发现它解决方案的一个类似问题android-support-v4.jar是从测试项目中删除重复项。但这不适用于 Maven 的项目,因为依赖继承。

我发现让它工作的唯一方法是,在启动之前,我必须手动从测试项目的构建路径中删除Maven Dependencies库,并显式地将一个添加Project Reference到目标 Android 项目。

¿ 有没有人知道在没有这个hack的情况下让它工作的方法?

这是我项目中的一个相关片段pom.xml

<groupId>com.some</groupId>
<artifactId>project</artifactId>
<packaging>apk</packaging>
...
<dependencies>
    ...
    <dependency>
        <groupId>com.google.android</groupId>
        <artifactId>support-v4</artifactId>
    </dependency>
    ...
</dependencies>

和测试项目pom.xml

<groupId>com.some</groupId>
<artifactId>project-test</artifactId>
<packaging>apk</packaging>
...
<dependencies>
    ...
    <dependency>
        <groupId>com.some</groupId>
        <artifactId>project</artifactId>
        <packaging>apk</packaging>
    </dependency>

    <dependency>
        <groupId>com.some</groupId>
        <artifactId>project</artifactId>
        <packaging>jar</packaging>
    </dependency>
    ...
</dependencies>
4

1 回答 1

0

最近解决了似乎是同样的问题。这不是特定于android-support-library. 请检查这个答案

于 2013-11-20T18:18:59.587 回答