Я только начинал работать с Лотти, когда наткнулся на эту ошибку. Я добавил зависимость на свой build.gradle
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'org.jsoup:jsoup:1.11.2'
implementation 'com.airbnb.android:lottie:2.8.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'android.arch.navigation:navigation-fragment:1.0.0-alpha06'
implementation 'android.arch.navigation:navigation-ui:1.0.0-alpha06'
implementation 'com.android.support:design:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
Поскольку я добавил implementation 'com.airbnb.android:lottie:2.8.0', сборка прошла успешно, но я не могу запустить приложение, так как при слиянии манифеста возникла ошибка.
Merging Errors: Error: Attribute application@appComponentFactory value=(androidx.core.app.CoreComponentFactory) from AndroidManifest.xml:22:18-86 is also present at AndroidManifest.xml:22:18-91 value=(android.support.v4.app.CoreComponentFactory). Suggestion: add 'tools:replace = "android:appComponentFactory"' to <application> element at AndroidManifest.xml:14:5-35:19 to override. app main manifest (this file), line 21
Вот мой Manifest.xml:
<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:dist = "http://schemas.android.com/apk/distribution"
xmlns:tools = "http://schemas.android.com/tools"
package = "com.rishav.sanfoundryfer">
<dist:module dist:instant = "true" />
<uses-permission android:name = "android.permission.INTERNET" />
<uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name = "android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name = "android.permission.SYSTEM_ALERT_WINDOW"/>
<application
android:allowBackup = "true"
android:icon = "@mipmap/ic_launcher"
android:logo = "@mipmap/ic_launcher"
android:label = "@string/app_name"
android:supportsRtl = "true"
android:theme = "@style/AppTheme"
tools:ignore = "GoogleAppIndexingWarning">
<activity android:name = ".QuestionActivity"
android:label = "MCQs"/>
<activity android:name = ".TopicActivity"
android:label = "Select Topic"/>
<activity android:name = ".SubjectActivity"
android:label = "Select Subject"/>
<activity android:name = ".MainActivity">
<intent-filter>
<action android:name = "android.intent.action.MAIN" />
<category android:name = "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Тот факт, что ошибка имеет androidx.core.app.CoreComponentFactory, указывает на то, что используются новые пакеты библиотеки поддержки "Jetpack". То, что в вашем манифесте используются «старые» пакеты, указывает на то, что он, вероятно, используется lottie.
Убедиться в этом причина можно, просмотрев библиотеку.
Чтобы решить эту проблему, вы можете использовать старую библиотеку lottie, начать использовать пакеты библиотеки поддержки jetpack или разрешить слияние вручную. Вы можете взглянуть на объединенный манифест, если перейдете к AndroidManifest.xml и переключитесь на вкладку Merged Manifest в нижней части окна.
Предположение:
добавьте 'tools:replace = "android:appComponentFactory"' в элемент <application> в AndroidManifest.xml:14:5-35:19, чтобы переопределить основной манифест (этот файл), строка 21
Я читал это и, очевидно, пытался это сделать. smh Он хотел, чтобы я предоставил, чем его заменить.
добавьте 'tools: replace = "android: appComponentFactory" под этой строкой в ur code tools: ignore = "GoogleAppIndexingWarning" ....
Да, я, очевидно, сделал этого приятеля. Вот что я говорю. После добавления этой строки вам необходимо указать то, чем вы хотите ее заменить.
Кстати, для перехода на AndroidX вы можете нажать Refactor, а затем выбрать переход на AndroidX.