programing

이미 존재하는 프로그램 유형 : android.support.v4.app.BackStackRecord

minecode 2021. 1. 17. 10:48
반응형

이미 존재하는 프로그램 유형 : android.support.v4.app.BackStackRecord


Android Studio를 업그레이드했고 최신 버전에서 많은 문제를 발견했습니다.

유사한 질문이 많이 존재하지만 모든 답변을 확인했지만 어느 것도 나를 위해 일하지 않았습니다!

다음은 코드를 컴파일하는 동안 발생하는 오류입니다.

이미 존재하는 프로그램 유형 : android.support.v4.app.BackStackRecord $ Op Message {kind = ERROR, text = 이미 존재하는 프로그램 유형 : android.support.v4.app.BackStackRecord $ Op, sources = [Unknown source file], tool name = Optional.of (D8)}

내 gradle 파일은 다음과 같습니다.

프로젝트 :

// 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.1.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://jitpack.io"
          }
     }
}

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

:

apply plugin: 'com.android.application'

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

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso- 
    core:3.0.1'
    implementation 'com.github.ViksaaSkool:AwesomeSplash:v1.0.0'
}

내가하는 일이나 내가 잘못한 부분을 이해하기 위해 추가 할 다른 것이 있는지 말해 줄 수 있습니다.


이미 존재하는 프로그램 유형 : android.support.v4.app.BackStackRecord $ Op Message {kind = ERROR, text = 이미 존재하는 프로그램 유형 : android.support.v4.app.BackStackRecord $ Op, sources = [Unknown source file], tool name = Optional.of (D8)}

중복 된 지원 라이브러리로 인해 문제가 발생했습니다. 이 종속성 :

implementation 'com.github.ViksaaSkool:AwesomeSplash:v1.0.0'

이전 버전의 지원 라이브러리를 사용하고 있습니다. 지원 라이브러리가 이미있는 경우 제외하십시오.

// support libraries we want to use
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:support-v4:27.1.1'

// we already have the specific support libraries. So, exclude it
implementation ('com.github.ViksaaSkool:AwesomeSplash:v1.0.0') {    
    exclude group: 'com.android.support'
    exclude module: 'appcompat-v7'
    exclude module: 'support-v4'
}

다음 명령을 사용하여 종속성을 확인해야합니다.

./gradlew app:dependencies

또는 원하는 정확한 버전으로 충돌 라이브러리를 추가하여 항상 지원 라이브러리 버전을 재정의 할 수 있습니다 .


최신 정보

빌드 종속성 추가 문서에 종속성 해결 오류를 수정하는 전체 단계가 있습니다. 여기에서 발췌 :

종속성 해결 오류 수정

앱 프로젝트에 여러 종속성을 추가하면 이러한 직접 및 전이 종속성이 서로 충돌 할 수 있습니다. Android Gradle 플러그인은 이러한 충돌을 정상적으로 해결하려고하지만 일부 충돌로 인해 컴파일 시간 또는 런타임 오류가 발생할 수 있습니다.

오류의 원인이되는 종속성을 조사하는 데 도움이되도록 앱의 종속성 트리를 검사 하고 두 번 이상 표시되거나 버전이 충돌하는 종속성을 찾습니다.

중복 종속성을 쉽게 식별 할 수없는 경우 Android 스튜디오의 UI를 사용하여 다음과 같이 중복 클래스가 포함 된 종속성을 검색해보세요.

  1. 메뉴 모음에서 탐색 > 클래스선택 합니다.
  2. 팝업 검색 대화 상자에서 비 프로젝트 항목 포함 옆의 상자 가 선택되어 있는지 확인하십시오.
  3. 빌드 오류에 나타나는 클래스 이름을 입력하십시오.
  4. 클래스를 포함하는 종속성에 대한 결과를 검사하십시오.

다음 섹션에서는 발생할 수있는 다양한 유형의 종속성 해결 오류와이를 수정하는 방법에 대해 설명합니다.

중복 클래스 오류 수정

클래스가 런타임 클래스 경로에 두 번 이상 나타나는 경우 다음과 유사한 오류가 발생합니다.

Program type already present com.example.MyClass

이 오류는 일반적으로 다음 상황 중 하나로 인해 발생합니다.

  • 바이너리 종속성에는 앱이 직접 종속성으로 포함하는 라이브러리가 포함됩니다. 예를 들어 앱이 라이브러리 A와 라이브러리 B에 대한 직접적인 종속성을 선언하지만 라이브러리 A에는 이미 바이너리에 라이브러리 B가 포함되어 있습니다.

    • 이 문제를 해결하려면 라이브러리 B를 직접 종속성으로 제거하십시오.
  • 앱에 동일한 라이브러리에 대한 로컬 바이너리 종속성과 원격 바이너리 종속성이 있습니다.

    • 이 문제를 해결하려면 바이너리 종속성 중 하나를 제거하십시오.

클래스 경로 간의 충돌 수정

Gradle은 컴파일 클래스 경로를 확인할 때 먼저 런타임 클래스 경로를 확인하고 결과를 사용하여 컴파일 클래스 경로에 추가해야하는 종속성 버전을 결정합니다. 즉, 런타임 클래스 경로는 다운 스트림 클래스 경로에 대한 동일한 종속성에 필요한 버전 번호를 결정합니다.

또한 앱의 런타임 클래스 경로는 앱의 테스트 APK에 대한 런타임 클래스 경로의 종속성을 일치시키기 위해 Gradle이 필요로하는 버전 번호를 결정합니다. 클래스 경로의 계층은 아래 그림에 설명되어 있습니다.

여기에 이미지 설명 입력

A conflict where different versions of the same dependency appears across multiple classpaths migh occur when, for example, your app includes a version of a dependency using the implementation dependency configuration and a library module includes a different version of the dependency using the runtimeOnly configuration.

When resolving dependencies on your runtime and compile time classpaths, Android Gradle plugin 3.3.0 and higher attempt to automatically fix certain downstream version conflicts. For example, if the runtime classpath includes Library A version 2.0 and the compile classpath includes Library A version 1.0, the plugin automatically updates the dependency on the compile classpath to Library A version 2.0 to avoid errors.

However, if the runtime classpath includes Library A version 1.0 and the compile classpath includes Library A version 2.0, the plugin does not downgrade the dependency on the compile classpath to Library A version 1.0, and you still get an error similar to the following:

Conflict with dependency 'com.example.library:some-lib:2.0' in project 'my-library'.
Resolved versions for runtime classpath (1.0) and compile classpath (2.0) differ.

To resolve this issue, do one of the following:

  • Include the desired version of the dependency as an api dependency to your library module. That is, only your library module declares the dependency, but the app module will also have access to its API, transitively.
  • Alternatively, you can declare the dependency in both modules, but you should make sure that each module uses the same version of the dependency. Consider configuring project-wide properties to ensure versions of each dependency remain consistent throughout your project.

Add this in your App module build.gradle:

implementation 'com.android.support:support-v4:27.1.1'

An alternative to the accepted answer is to tell gradle to force the newer version:

final SUPPORT_LIB_VER = '27.1.1'

configurations.all {
    resolutionStrategy { 
        force "com.android.support:appcompat-v7:${SUPPORT_LIB_VER}"
        force "com.android.support:support-v4:${SUPPORT_LIB_VER}"
    }
}

This can be more convenient when you have many dependencies.

see also: Answer to "How can I force Gradle to set the same version for two dependencies?"


Add this line of Code in dependencies section of your gradle file

implementation 'com.android.support:support-v4:28.0.0'

Add this code to gradle according to your "SdkVersion":

implementation 'com.android.support:support-v4:28.0.0'

for example, my SDKVersion is 28 then I use this code:

implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

Also check your libs folder because:

implementation fileTree(dir: 'libs', include: ['*.jar'])

will pick all jars from there too. You might have jars duplicating each other or your lower implementations.

I had duplicates in my libs and got this problem.


In my case, I converted a very old Eclipse project into Android Studio. So, automatic migration used:

dependencies {
    compile files('libs/android-support-v13.jar')
}

Just remove or comment at the line with this library.

When I commented, Gradle scripted executed correctly.


replace you dependencies with it.

implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'
    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'

multiDexEnabled true add the line above in android block in gradle-app its work for me ...


여기에 이미지 설명 입력 I tried those :

  • clean / rebuild
  • Invalidate cash and restart
  • Exclude dependencies from my library in my app.gradle (see below)

implementation (project(':libxmiimp')) {exclude group: 'com.android.support', module: 'support-v4'}

  • Playing with gradle settings (things like multiDex enable true and other)

But my probleme was that Android-support-v4.jar somehow got into my local android library`s lib folder.... Deleting it fixed my problem

ReferenceURL : https://stackoverflow.com/questions/49837344/program-type-already-present-android-support-v4-app-backstackrecord

반응형