【问题标题】:Cannot build apk with Jenkins using androidx libraries无法使用 androidx 库与 Jenkins 一起构建 apk
【发布时间】:2018-12-14 11:54:09
【问题描述】:

自从我迁移到我的应用程序的 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。

感谢您的帮助

【问题讨论】:

  • 请出示你的gradle文件
  • 堆栈跟踪也有助于了解正在尝试使用的内容ArraySet

标签: android jenkins android-support-library androidx


【解决方案1】:

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

android.enableJetifier=true
android.useAndroidX=true

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

【讨论】:

  • 有没有办法让 jenkins 使用这个 gradle.properties 文件?
  • @AmineG 我没有找到让 jenkins 使用这个 gradle 文件的方法,但我所做的是在 gradle :app:assemble 任务中传递这些参数,每个参数之间用 -P 分隔每个键. gradle :app:ProRelease -Pandroid.enableJetifier=true -Pandroid.useAndroidX=true如果您需要更多帮助,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2019-07-15
  • 2020-12-22
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-22
  • 2018-04-23
相关资源
最近更新 更多