无法使用androidx库使用Jenkins构建APK

时间:2018-12-14 11:54:09

标签: android jenkins android-support-library androidx

自从我迁移到androidx应用程序以来,启动任务汇编时Jenkins出现错误。这是错误:

Program type already present: 
android.support.v4.app.INotificationSideChannel$Stub$Proxy

但是我在Android Studio上没有此错误,我可以毫无问题地构建apk。

因此,我尝试从Google Play服务中排除support-v4模块:

implementation( "com.google.android.gms:play-services-maps:16.0.0"){
    exclude module: 'support-v4'
}
implementation ("com.google.android.gms:play-services-location:16.0.0"){
    exclude module: 'support-v4'
}
implementation ("com.google.android.gms:play-services-places:16.0.0"){
    exclude module: 'support-v4'
}

然后生成了apk,但是在启动应用程序时出现此错误:

java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArraySet;
   at com.google.android.gms.common.api.internal.c.<init>(Unknown Source:45)
   at com.google.android.gms.common.api.internal.c.a(Unknown Source:33)
   at com.google.android.gms.common.api.e.<init>(Unknown Source:51)
   at com.google.android.gms.common.api.e.<init>(Unknown Source:13)
   at com.google.android.gms.location.b.<init>(Unknown Source:8)
   at com.google.android.gms.location.f.a(Unknown Source:2)

但是再一次,一切都可以在Android Studio上正常运行,问题只存在于Jenkins,因为迁移到了Androidx。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

Jenkins未使用具有androidx参数的gradle.properties文件:

Mockito.when(myMock.isContractAvailable("0815", Arrays.asList(new String[] {ANYVALUE, "00123", ANYVALUE})).thenReturn(Boolean.TRUE);

这就是为什么在本地计算机上但在Jenkins上工作的原因。