错误:程序类型已存在:androidx.versionedparcelable.ParcelImpl

时间:2018-11-01 04:27:42

标签: android gradle compiler-errors androidx

我正在尝试添加此https://github.com/ArthurHub/Android-Image-Cropper,但是当我添加它时,出现此错误“错误:程序类型已存在:androidx.versionedparcelable.ParcelImpl”

我附上了项目gradle和应用gradle。 (我是android开发的新手,不确定要如何解决。)

我认为这可能与

有关
implementation "com.android.support:appcompat-v7:${supportLibVersion}"
implementation "com.android.support:design:${supportLibVersion}"

但是这些在我的活动布局之一中用于TextInputLayout。 任何帮助将不胜感激。

  // Top-level build file where you can add configuration options common to all sub-projects/modules.

    buildscript {

        repositories {
            google()
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.2.1'
            classpath 'com.google.gms:google-services:4.0.0'

            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }

    allprojects {
        repositories {
            google()
            jcenter()
            maven{
               url  "https://maven.google.com"
            }
        }
    }

    task clean(type: Delete) {
        delete rootProject.buildDir
    }

App Gradle:

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 28
        defaultConfig {
            applicationId "com.something.app"
            minSdkVersion 24
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

        ext {
            supportLibVersion = '27.1.1'  // variable that can be referenced to keep support libs consistent
            }

    dependencies {

        api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'

        implementation "com.android.support:appcompat-v7:${supportLibVersion}"
        implementation "com.android.support:design:${supportLibVersion}"
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
        implementation 'com.android.support:design:28.0.0-rc01'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        implementation 'com.google.firebase:firebase-core:16.0.4'
        implementation 'com.google.firebase:firebase-auth:16.0.4'
        implementation 'com.google.firebase:firebase-database:16.0.3'
        implementation 'com.google.firebase:firebase-storage:16.0.3'
        testImplementation 'junit:junit:4.12'
        implementation 'de.hdodenhof:circleimageview:2.2.0'
        implementation 'com.squareup.picasso:picasso:2.71828'
        implementation 'com.android.support:support-v4:28.0.0'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
        implementation 'com.android.support:design:28.0.0-rc01'



        //implementation 'com.google.android.gms:play-services-maps:16.0.0'
        // implementation 'com.google.android.gms:play-services-analytics:7.3.0'
        implementation 'com.google.android.gms:play-services-maps:16.0.0'
        implementation 'com.google.android.gms:play-services-location:16.0.0'
        implementation 'com.google.android.gms:play-services-analytics:16.0.4'
        implementation 'com.google.android.gms:play-services-places:16.0.0'
    }

    apply plugin: 'com.google.gms.google-services'

5 个答案:

答案 0 :(得分:3)

您使用支持库,而新版本的Image-Cropper库使用了androidx库。

检查change log

因此,您有两个选择,要么可以移至androidx,要么将库版本更改为旧版本

api 'com.theartofdev.edmodo:android-image-cropper:2.7.0'

答案 1 :(得分:2)

我通过将Butterknife依赖项降级到版本8.8.1解决了我的问题

// BUTTERKNIFE
implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

另外,另一种解决方案是我要通过整个项目文件检索利用androidx任何import语句,然后用android.support版本替换它们。

就我而言,我发现-

import androidx.annotation.NonNull;,我替换为import android.support.annotation.NonNull;

答案 2 :(得分:1)

您可以保留最新版本,并将gradle配置为使用AndroidX

api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'

gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

来自文档Using AndroidX

  

请参阅“迁移到AndroidX”以了解如何迁移现有项目。

     

如果要在新项目中使用AndroidX,则需要设置   将SDK编译为Android 9.0(API级别28)或更高版本,并同时设置   以下Android Gradle插件标志在您的   gradle.properties文件。

     

android.useAndroidX:设置为true时,Android插件使用   合适的AndroidX库,而不是支持库。标志是   如果未指定,默认情况下为false。

     

android.enableJetifier:何时   设置为true,Android插件会自动迁移现有的   第三方库通过重写二进制文件来使用AndroidX。的   如果未指定,默认情况下该标志为false。

答案 3 :(得分:0)

您需要使用 api 'com.theartofdev.edmodo:android-image-cropper:2.7.0'

因为 android-image-cropper:2.8.+' 是更新版本,以支持 AndroidX

  

对于 com.android.support ,请使用此

api 'com.theartofdev.edmodo:android-image-cropper:2.7.0'
  

对于 AndroidX ,使用此

api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'

更改日志2.8.0

  • 修复了Android O上的崩溃

  • 更新以支持AndroidX的库

  • 选择非图像文件时处理失败

  • 更多翻译

有关更多信息,请阅读Android Image Cropper的Change log

答案 4 :(得分:0)

如果添加了模型裁切器,请将其删除 并添加

对于com.android.support使用此

api 'com.theartofdev.edmodo:android-image-cropper:2.7.0'

对于AndroidX,请使用此

api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'