我在使用android maven插件执行检测测试时遇到问题。 我遵循“libraryprojects”示例到最后的细节,但是, 我的设置有一点点差异〜我正在添加android支持jar 外部依赖。
我的设置如下:
APK lib项目(greendroid具体)
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r6</version>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
APK项目
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>greendroid</groupId>
<artifactId>GreenDroidFragment</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>apklib</type>
</dependency>
APK测试项目(这里是问题....)
<dependency>
<groupId>com.google.android</groupId>
<artifactId>support-v4</artifactId>
<version>r6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.android</groupId>
<artifactId>android-test</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.jayway.android.robotium</groupId>
<artifactId>robotium-solo</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.**</groupId>
<artifactId>**</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>apk</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.**</groupId>
<artifactId>**</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
问题是delvik在运行检测测试时无法找到或链接支持jar。
我的问题是,如何告诉delvik在测试APK中针对主应用程序APK 解决所需文件?从理论上讲,设置测试APK中提供的所需依赖项(android-support jar)的范围应该有效,但它不会。
以下是我尝试过的一些场景:
通过将android支持jar打包为APK测试项目的一部分,delvik抱怨说它无法解析编译后的代码。这是因为主APK的dex输出与测试APK的dex输出不同。
W/dalvikvm(328): Class resolved by unexpected DEX:
Lcom/**/android/**/GenerateOtpFragment;(0x44edffb0):0x121de0 ref
[Landroid/support/v4/app/Fragment;] Landroid/support/v4/app/Fragment;(0x44edffb0)
由于未将Android支持包装为APK测试项目的一部分,因此delvik无法找到已编译的代码。在提供范围或完全排除依赖关系时会发生这种情况。
W/ClassPathPackageInfoSource(632): Cannot load class. Make sure it is in your apk.
Class name: 'android.support.v4.os.ParcelableCompatCreatorHoneycombMR2'.
Message: android.support.v4.os.ParcelableCompatCreatorHoneycombMR2
我唯一能想到的是以某种方式手动告诉APK测试项目使用delvik链接机制解决主APK项目中的android-support依赖关系。
任何想法都会非常感激, -Michael