【问题标题】:Use AndroidX dependent library in host application which still uses android.support.*在仍使用 android.support.* 的主机应用程序中使用 AndroidX 依赖库
【发布时间】:2019-12-16 10:22:36
【问题描述】:

我正在使用具有以下两个依赖项AndroidX 的第三方库:

implementation 'androidx.navigation:navigation-fragment:2.1.0-alpha02'
implementation 'androidx.navigation:navigation-ui:2.1.0-alpha02'

在编译仍使用android.support.* 的主机应用程序时,出现以下错误:

AAPT:错误:属性 'com.x.y.android.debug:defaultNavHost' 没找到。

AAPT:错误:找不到属性“com.x.y.android.debug:startDestination”。

为了解决这个问题,我在主机应用中添加了相应的 AndroidX 库,但遇到以下错误:

任务 :App:transformDexArchiveWithExternalLibsDexMergerForChaseDebug 失败 D8:程序类型已经存在:com.google.android.material.internal.package-info

请注意:该库已使用 this link 进行反向喷射

./jetifier-standalone -r -i myAndroidXLib.aar -o supportLibVersion.aar

我已经尝试在gradle.properties 文件中添加以下行:

android.useAndroidX = true
android.enableJetifier=false

已经尝试从包装信息中排除:

packagingOptions {
     exclude 'com.google.android.material.internal.package-info'
}

上述两种解决方案都不起作用。有什么建议吗?

【问题讨论】:

  • 您不能在不使用 AndroidX 的应用中使用 AndroidX 库。

标签: android migration android-support-library androidx android-jetifier


【解决方案1】:

我可以看到两种解决方案:

1) 将您的应用迁移到 AndroidX。

2) 降级库版本

大部分库都比 AndroidX 更老。因此,过去,他们使用支持库。他们最近迁移。因此,您可以将您的 gradle 设置为使用旧版本(在它们迁移到 AndroidX 之前)。

您可以通过检查他们更新build.gradle 的版本来找到此类信息。

例如,Lottie Library 在2.6.0 版本中迁移到Android X,如您所见HERE

因此,对于 Lottie,您可以使用 v2.5.6 版本,这是 v2.6.0 之前的最后一个稳定版本

【讨论】:

  • 感谢您提出解决方案。但是,迁移应用程序有一个很大的风险因素,我目前不打算采取。而且,由于该库已经在 v1.0.0 上,因此无法降级该库。 :(
  • 迁移到 AndroidX 应该不是问题。 AndroidX 只是一个名称不同的支持库。你能分享一个图书馆的链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多