java – 当我从Android迁移到AndroidX时,在我的项目中实现Google Play服务时出错.可能是什么解决方案?

这是我的app level build.gradle

apply plugin: 'com.android.application'
apply plugin: 'realm-android'
//apply plugin: 'io.fabric'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "threecallistos.jumperr"
        minSdkVersion 17
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
    implementation 'com.google.android.material:material:1.0.0-alpha3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha3'
    implementation 'com.google.android.gms:play-services-maps:15.0.1'
    implementation 'androidx.multidex:multidex:2.0.0'
}

和gradle.properties在这里

org.gradle.jvmargs=-Xmx1536m
android.useAndroidX=true
android.enableJetifier=true

当我删除

implementation 'com.google.android.gms:play-services-maps:15.0.1'

从app.build文件,它工作正常.但我必须使用谷歌地图和服务,所以我在这里和那里搜索,但找不到任何适当的解决方案.
我在github中找到了一个建议

I believe this is because com.google.firebase transitively depends on com.android.support:support-v4. To address this you should be able to set android.enableJetifier=true in your gradle.properties file, which will “automatically convert existing third-party libraries as if they were written for AndroidX”

我已经这样做了但是没有用!

我在构建/运行项目时遇到错误

Program type already present:
android.support.v4.app.INotificationSideChannel Message{kind=ERROR,
text=Program type already present:
android.support.v4.app.INotificationSideChannel, sources=[Unknown
source file], tool name=Optional.of(D8)} Caused by:
com.android.builder.dexing.DexArchiveMergerException: Error while
merging dex archives:

请给我一些解决方案.

解决方法:

有多个问题存在完全不同的错误,实际上这些错误都源于在Android Studio v3.1中迁移到AndroidX库.我得到了各种奇怪的错误,如果不回复支持库就无法解决.因此,对于不同的问题,您可能会看到相同的答案.因为问题是关于在描述和上下文中差异很大的错误,所以它们不是重复的问题,因此应该用这个解决方案回答所有问题.具有讽刺意味的是,这种解释比解决方案更长,并且包含在内以帮助管理员理解.

解决方案是:
Android Studio v3.2可以解决此问题.它还在Refactor菜单下添加了“Migrate to AndroidX”项,以便更轻松地进行迁移.无需解决方法或回滚.迁移到AndroidX库非常重要,因为旧的支持库将在发布稳定的v28支持库后结束.

从测试版渠道更新Android Studio以使用3.2或等到不久的将来发布稳定版本.

编辑:9/25/18 – 现在可以在稳定通道中使用v3.2稳定版本.

上一篇:Android的Fragment网页实战


下一篇:迁移到androidx后没有超级方法getLifecycle()