在仍使用android.support。*的主机应用程序中使用AndroidX依赖库

时间:2019-08-08 16:35:18

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

我正在使用具有以下两个依赖项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 FAILED   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'
}

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

1 个答案:

答案 0 :(得分:0)

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

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

2)降级库版本

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

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

例如,如您所见,HERE的Lottie Library已迁移到版本2.6.0的Android X。

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