leandroBorgesFerreira/LoadingButtonAndroid 执行错误

leandroBorgesFerreira/LoadingButtonAndroid Implementation Error

我尝试使用这种按钮样式 this link 但是我遇到了实现错误,我的 build.gradle 是这样的:

这是我的依赖项:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.google.firebase:firebase-core:16.0.7'
implementation 'com.google.firebase:firebase-auth:16.1.0'
implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-storage:16.1.0'
implementation 'com.google.android.gms:play-services-auth:16.0.1'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.volley:volley:1.1.1'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

错误:

ERROR: Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.1] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to element at AndroidManifest.xml:5:5-19:19 to override.

我该如何解决?

我猜是因为他们的最新版本正在使用 AndroidX,但您的应用仍在使用支持库。

所以,我猜有两种可能:

  • 降级库版本

查看他们的发布历史,AndroidX 似乎是在版本 v2.0.0 上引入的。所以,使用旧版本:v.1.14.0。只需使用 implementation 'br.com.simplepass:loading-button-android:1.14.0'

  • 迁移到 AndroidX。

您也可以考虑迁移到 Android X,因为 Android 支持库现已弃用。对于任何情况,您可能需要检查第一个解决方案以确保问题确实是由 AndroidSupport/AndroidX 冲突

引起的

编辑

只是分享更多信息,因为您不知道 AndroidX。

开发 Android 应用程序时,您可能希望构建一个适用于不同 Android 版本的单个 APK。但是,正如您可能想象的那样,不同 Android 版本之间存在一些差异,例如不再使用(弃用)或后来添加的方法等。一个版本中存在但其他版本中不存在的功能等。 因此,您将最终使用 Android 支持库。 它是一个特殊的库,可以帮助您支持多个 Android 版本。不仅如此,ConstraintLayoutRecyclerViewCardView 等一些视图作为库发布。作为 Android 支持库的一部分。

在您的构建 gradle 中,我们可以看到您已经在使用 Android 支持库:

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'

然而,在去年,Android 弃用了支持库并创建了 AndroidX。在某种程度上,它是同一件事..只是不同的名称..

您迟早会将您的应用程序迁移到 Android X,因为支持库将不再更新。

但是,不仅您的应用会迁移到 AndroidX,某些第三方库也会迁移到 AndroidX。在这种情况下,我们的库 LoadingButtonAndroid 在 v.2.0.0 版本中开始使用 android X。但是,由于您还没有迁移您的应用程序,因此您会遇到一些此类冲突。因此,您可以通过使用旧版本的 LoadingButtonAndroid 或将您的应用程序迁移到 AndroidX.

来修复

HERE 您可以找到如何将您的应用程序迁移到 AndroidX。通常,这是一个非常简单的过程。但是,Android Studio 总是忘记更改某些导入,您必须手动从支持库更改为 androidx。

自动或手动迁移到 AndroidX 仅意味着您必须将导入从 android.support.v7.app.AppCompatActivity 更新为 androidx.appcompat.app.AppCompatActivity

如您所见,class 名称相同并且没有代码更改...所有视图都相同..只是它们的包(导入)不同。