当我从 Android 迁移到 AndroidX 时,在我的项目中实现 google play 服务时出错。解决方案可能是啥?

Posted

技术标签:

【中文标题】当我从 Android 迁移到 AndroidX 时,在我的项目中实现 google play 服务时出错。解决方案可能是啥?【英文标题】:While I migrate from Android to AndroidX , Error in implementing google play services in my projects. What might be the solution?当我从 Android 迁移到 AndroidX 时,在我的项目中实现 google play 服务时出错。解决方案可能是什么? 【发布时间】:2019-01-08 00:21:30 【问题描述】:

这是我的应用级别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 中找到了一个建议

我相信这是因为 com.google.firebase 传递依赖于 com.android.support:support-v4。为了解决这个问题,您应该能够在 gradle.properties 文件中设置 android.enableJetifier=true,这将“自动转换现有的第三方库,就好像它们是为 AndroidX 编写的一样”

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

我在构建/运行项目时出错

程序类型已存在: android.support.v4.app.INotificationSideChannel Messagekind=ERROR, text=程序类型已经存在: android.support.v4.app.INotificationSideChannel,来源=[未知 source file], tool name=Optional.of(D8) 原因: com.android.builder.dexing.DexArchiveMergerException:出错时 合并 dex 档案:

请给我一些解决方案。

【问题讨论】:

【参考方案1】:

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

解决办法是: Android Studio v3.2+ 解决了这个问题。它还在 Refactor 菜单下添加了“Migrate to AndroidX”项,以使迁移更容易。无需变通或回滚。迁移到 AndroidX 库很重要,因为旧的支持库将在稳定的 v28 支持库发布后终止。

从 beta 渠道更新 Android Studio 以使用 3.2+ 或等到在不久的将来发布稳定版本。

编辑:9/25/18 - v3.2 稳定版本现已在稳定频道中提供。

【讨论】:

以上是关于当我从 Android 迁移到 AndroidX 时,在我的项目中实现 google play 服务时出错。解决方案可能是啥?的主要内容,如果未能解决你的问题,请参考以下文章

AndroidX迁移-androidx.legacy:legacy-support-v4或androidx.appcompat:appcompat

Android源码中com.android.support依赖迁移到AndroidX库

通过更新到 Android Studio 3.2 迁移到 AndroidX

Android Studio 将 androidx 迁移到 android 8.1 [关闭]

我如何将颤振项目迁移到 androidx:任务“:app:preDebugBuild”的执行失败。 > Android 依赖 'androidx.versionedparcelable

无法解析 android.support.design。迁移到 AndroidX 后