我知道,androidx and support dependency causing multidex error 我们不能同时使用androidx和android支持。所以我完全迁移到androidx。但是我的依赖库之一使用了android支持“ lottie”。
在上述情况下我们该怎么办?我应该从项目中删除“ lottie”吗?
下面是我的礼物
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.android:lottie:$lottieVersion"
}
答案 0 :(得分:38)
您可以在项目上启用Jetifier
,这实际上将与Android Support Library
-one交换项目依赖项中的AndroidX
依赖项。 (例如,您的Lottie依赖项将从支持更改为AnroidX)
摘自Android Studio文档(https://developer.android.com/studio/preview/features/):
Android Gradle插件提供了以下全局标志, 可以在gradle.properties文件中设置:
- android.useAndroidX:设置为true时,此标志表示您希望从现在开始使用AndroidX。如果该标志不存在, Android Studio的行为就像标志设置为false一样。
- android.enableJetifier:设置为true时,此标志表示您想要工具支持(来自Android Gradle插件) 自动转换现有的第三方库,就像它们 为AndroidX编写。如果该标志不存在,则Android Studio的行为为 如果该标志设置为false。
Jetifier的先决条件:
Android Studio 3.2
要启用jetifier,请将这两行添加到您的gradle.properties
文件中:
android.useAndroidX=true
android.enableJetifier=true
最后,请检查AndroidX的发行说明,因为jetifier
的某些库(例如Dagger Android)仍存在一些问题:https://developer.android.com/topic/libraries/support-library/androidx-rn
答案 1 :(得分:8)
手动添加android.useAndroidX=true
和android.enableJetifier=true
给了我很多时间。因为它引发了一些错误或Suggestion: add 'tools:replace="android:appComponentFactory"' to <application>
要在项目中启用Jet-fire,android Studio中有一个选项
选择您的项目--->右键单击
app ---->重构---->迁移到AndroidX
如下图所示:-
点击迁移到AndroidX 。
它将要求您确认并备份您的项目。
最后一步,它将要求您进行重构。
执行重构后,检查gradle.properties具有android.useAndroidX=true
和android.enableJetifier=true
。如果不是,则将这两行添加到gradle.properties文件中:
android.useAndroidX=true
android.enableJetifier=true
答案 2 :(得分:7)
您不必担心
只需在您的项目中启用Jetifier。
打开gradle.properties
并在两行下面添加。
android.enableJetifier=true
android.useAndroidX=true
它将在运行时将您依赖项的所有支持库都转换为AndroidX(您可能会遇到编译时错误,但应用会运行)。
答案 3 :(得分:5)
在 gradle.properties 文件中添加行
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1.0, maximum-scale=1.0, minimal-ui" />
答案 4 :(得分:2)
我在gradle.properties文件的两行下面添加了
android.useAndroidX=true
android.enableJetifier=true
然后我遇到了以下错误
error: package android.support.v7.app does not exist
import android.support.v7.app.AlertDialog;
^
我已删除导入内容,并在行下方添加了
import static android.app.AlertDialog.*;
以及从AppCompactActivity扩展的类,添加了以下行。 (对于这些错误,您只需要在android studio中按alt + enter即可为您导入正确的库。这样您就可以解决所有错误)
import androidx.appcompat.app.AppCompatActivity;
在xml文件中,如果您使用过任何
<android.support.v7.widget.Toolbar
用androidx.appcompat.widget.Toolbar
然后在您的Java代码中
import androidx.appcompat.widget.Toolbar;
答案 5 :(得分:1)
答案 6 :(得分:0)
我在manifest.xml的application标记中使用了这两行代码,并且有效。
tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"
来源:https://github.com/android/android-ktx/issues/576#issuecomment-437145192
答案 7 :(得分:0)
如果您的项目不是AndroidX(意味着Appcompat)并且出现此错误,请尝试降级触发该错误的依赖项版本,在我的情况下为play-services-location(“ implementation'com.google.android.gms:play- services-location:17.0.0'“),我通过降级为com.google.android.gms:play-services-location:16.0.0'
解决了该问题答案 8 :(得分:0)
我以前遇到过这样的问题,那就是gradle.properties文件不存在,只有gradle.properties.txt,所以我转到项目文件夹,然后复制并粘贴了gradle.properties.txt文件。但是没有.txt扩展名,那么它终于可以工作了。
答案 9 :(得分:0)
在项目文件夹中,在 build.gradle(Module:Application)
在 Refactor 菜单中,单击 Migration to AndroidX 以继续迁移。
之后,如果你打开Project文件夹中的gradle.properties,你会看到如下定义
android.enableJetifier=true
android.useAndroidX=true
答案 10 :(得分:-2)
在gradle.properties
android.useAndroidX = true