programing

여러 덱스 파일에서 Landroid/support/v4/Accessibility Service/AccessibilityServiceInfoCompat를 정의합니다.

muds 2023. 10. 3. 11:38
반응형

여러 덱스 파일에서 Landroid/support/v4/Accessibility Service/AccessibilityServiceInfoCompat를 정의합니다.

.gradle assembleDebug명령줄에서 갑자기 다음 오류가 발생합니다.

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
    at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
    at com.android.dx.command.dexer.Main.run(Main.java:232)
    at com.android.dx.command.dexer.Main.main(Main.java:174)
    at com.android.dx.command.Main.main(Main.java:91)

v4를 grep하면 빌드 폴더 안에 두 개의 파일이 있습니다.

Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches

내 그라들 파일에는 다음 지원 라이브러리만 포함되어 있습니다.

compile 'com.android.support:support-v13:19.0.0'

어떻게 해서든 r7 라이브러리가 포함되어 있는지 당황스럽습니다.달려왔습니다gradle cleanassemblyDebug됩니다를 다시 할 때 됩니다.

빌드 디렉토리 안에서 r7을 grep하면 파일 안에 표시됩니다.

Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches

v13을 포함하지 않으면 다른 것은 컴파일이 되지 않습니다.

하지만 v13에는 v4 지원 라이브러리가 포함되어 있지 않습니까?

플레이 서비스 AAR 번들과 v13 라이브러리 간의 호환성이 떨어집니까?

gradleplease.appspot.com 에서 그래들 파일을 가져왔습니다.

재생 서비스를 제거해도 해결되지 않으며, 같은 오류입니다.

build.gradle 내부의 나의 의존성:

 dependencies {


 // Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'

// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}

(또는 )을 실행하여 종속성 보고서를 생성합니다.당신은 어디가 어디인지 봐야 합니다.r7다음과 같은 출처에서 발생합니다.

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    |    \--- com.google.android:support-v4:r7
|    +--- com.commonsware.cwac:camera:0.5.4
|    \--- com.android.support:support-v4:18.0.+ -> 18.0.0
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

하세요.exclude그 의존성을 차단하기 위한 지시입니다.에는 CWAC-Camera합니다를 합니다.

dependencies {
    compile('com.commonsware.cwac:camera-v9:0.5.4') {
      exclude module: 'support-v4'
    }

    compile 'com.android.support:support-v4:18.0.+'
}

()compile문)의 statement다)다를 나타냅니다.

그러면 종속성 보고서를 다시 실행하면 알 수 있듯이 문제가 해결됩니다.

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    \--- com.commonsware.cwac:camera:0.5.4
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

안드로이드 블록 안에 있는 build.gradle 파일에 다음과 같은 코드를 추가하여 비슷한 오류를 해결하였습니다.

android {
    dexOptions {
        preDexLibraries = false
    }
}

의 그림이 천 마디 말의 가치가 있기 때문입니다.

저와 같은 초보자들이 이 작업을 더 쉽고 빠르게 수행할 수 있도록 하기 위해 by @edsappfactory.com 에 게시된 저에게 적합한 답변을 보여주는 스크린샷입니다.

먼저 Android 스튜디오의 오른쪽에 있는 Gradle 보기를 열고 앱의 항목에서 다음으로 이동합니다.Tasks그리고나서Android 오른쪽 버튼을 클릭합니다.androidDependencies그럼 고르다, 고르다Run:

step 1

번째로 다음과 같은 것을 보게 될 것입니다.

Step 2

입니다를 해야 할지 가 쉽지 게 큰 입니다.gradle작업 또는 위에 게시된 명령.그래서 여기가 그들을 처형하는 곳이기도 합니다.

그래들 명령을 실행하려면:

첫번째:

first

두번째:

second

쉬운 그대로.

여기까지입니다.

감사해요.

또한 Android Studio Gradle 보기로 이동하여 대상 "안드로이드 의존성"을 선택하면 안드로이드 의존성을 볼 수 있습니다.

팁 하나 더:프로젝트와 관련 모듈/라이브러리 프로젝트의 libs 폴더에서 v4 지원 lib를 제거하기 전까지는 이 문제가 있었습니다.

ButterKnife 8.5.1로 업그레이드할 때 이 오류가 발생하기 시작했습니다.여기 다른 대답은 하나도 안 통했어요.

사용했습니다.gradle -q :app:dependencies나무를 보고 난 다음에 갈등을 발견할 때까지 항아리 파일을 뒤지더군요.에이었습니다.com.android.support:support-compat:25.1.0에는 다가 되어 있습니다.com.android.support:support-v4:23.1.1클래스도 포함합니다.

저는 이것으로부터 저의 의존성을 바꿈으로써 그것을 해결했습니다.

compile 'com.jakewharton:butterknife:8.5.1'

다음 항목에 대해:

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'support-compat'
}

아직까지는 버터나이프의 운영에 영향을 미치지 않는 것 같습니다.

편집: ButterKnife의 지원 라이브러리를 ButterKnife와 일치하도록 업그레이드하는 더 나은 해결책이 있습니다.

compile('com.android.support:appcompat-v7:25.2.0')
compile('com.android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'

CommonsWare의 답변을 안드로이드 라이브러리 프로젝트에 적용할 수 없다는 것을 알게 될 경우 수정해야 할 토막글이 여기에 있습니다.

컴파일(project(':your Android 라이브러리') { 제외 모듈: 'support-v13' }

문제를 발견하게 될 것입니다.

지원되지 않는 Gradle DSL 메서드 'exclude()'를 찾았습니다.

컴파일 프로젝트(':Android 라이브러리')를 사용하는 경우 { 제외 모듈: 'support-v13' }

다른 점은 "프로젝트" 이전의 팔찌 "("""")입니다.

exclude module: 'support-v4'

프로젝트 종속성을 가진 저에게는 적합하지 않지만, 제가 그것을 작동시킬 수 있는 유일한 방법은 다음 구문을 통해서였습니다.

configurations {
    dependencies {
        compile(project(':Android-SDK')) {
            compile.exclude module: 'support-v4'
        }
    }
}

여기서 :Android-SDK는 프로젝트 이름입니다.

같은 문제가 있었는데 라이브러리 때문에 제 앱에 방법이 너무 많았던 것 같습니다. http://developer.android.com/tools/building/multidex.html

해결 방법:

android {
   defaultConfig {
   ...
   multiDexEnabled = true
   }
}

여기 더보기 오류:작업 ':app:dexDebug'에 대해 실행하지 못했습니다. > comm 명령이 0이 아닌 종료 값 2로 완료되었습니다.

저도 같은 오류가 있었는데 최근에 v4를 사용하던 것이 v13으로 바뀌었기 때문입니다.그래서 제가 해야 할 일은 프로젝트를 청소하는 것이었습니다.

레거시 프로젝트에서도 같은 오류가 있었습니다.제 잘못은 지원 라이브러리가 두 번 포함되었다는 것입니다.한번은 구글 플레이 서비스 lib 안에, 또 다른 하나는 독립형으로.

이렇게 고쳤습니다.

BAD build.gradle:

dependencies {
   compile files('libs/android-support-v4.jar') 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.android.gms:play-services:3.2.65'
}

빌드가 좋음.gradleadle:

dependencies {
   // compile files('libs/android-support-v4.jar')  // not needed 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.android.gms:play-services:3.2.65'
}

누군가에게 도움이 되었으면 좋겠습니다 :-)

사용하고 있습니다.com.google.android.gms:play-services-analytics:8.3.0그리고.android-support-v13.jar그리고 얻을 수 없었습니다.exclude module: 'support-v4'일하기 위해.

저에게 효과가 있었던 것은 그 제품을 사용하는 것이었습니다.android-support-v13인 것android-support-v13.jar일.

즉 대신에

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile files('libs/android-support-v13.jar')

}

사용했습니다.

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile ('com.google.android:android-support-v13')

}

제 경우에는 버전 불일치로 인해 문제가 발생했습니다.

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

솔루션은 간단했습니다. 모든 것을 버전 25로 만드십시오.

유사한 덱스 문제 해결 방법

gradle.build에 포함된 내용:

compile files('libs/httpclient-4.2.1.jar')
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

제거할 때 문제가 해결되었습니다.

compile files('libs/httpclient-4.2.1.jar') 

이제 제 그라들은 다음과 같습니다.

apply plugin: 'com.android.application'

android {

compileSdkVersion 24
buildToolsVersion "24.0.3"

defaultConfig {
    applicationId "com.mmm.ll"
    minSdkVersion 16
    targetSdkVersion 24
    useLibrary  'org.apache.http.legacy'
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {

compile 'com.google.android.gms:play-services:6.1.+'
compile files('libs/PayPalAndroidSDK.jar')
compile files('libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar')
compile files('libs/picasso-2.1.1.jar')
compile files('libs/gcm.jar')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}

JAR 파일과 컴파일된 gradle 프로젝트에 중복이 있었습니다.

따라서 종속성과 동일한 클래스를 가진 병 파일을 주의 깊게 찾습니다.

그리고 중복을 제거.
저는 이게 통했어요.

Eclipse에서 프로젝트를 가져온 경우.

1. The select project 
2. Go to File -> **Project Structure**
3. Select app in **module** section on left hand panel
4. Select **Dependency** tab
5. Your able to see jars you have added in eclipse project for v4 and v13.
6. Remove that jar by clicking on minus sign at bottom after selection
7. Click on Plus sign select **Library Dependency** 
8. Choose V4 and V13 if added
9. Press Ok and Clean and Rebuild your project

안드로이드 스튜디오로 이클립스 프로젝트를 가져온 후 직면한 시나리오.

이게 도움이 되길..

이것은 성가신 문제입니다. 근본 사례를 찾는 데 시간이 걸릴 수 있습니다.진행하는 방법은 @CommonsWare 답변입니다.

저는 최근 이 문제에 직면했고 해결하기가 어려웠습니다.

문제는 build.gradle에 "+" 버전으로 라이브러리를 포함하고 있다는 것이었습니다.최신 버전의 라이브러리에는 오래된 덱스와 뱅 중 하나가 포함되어 있습니다.

이전 버전의 도서관으로 돌아가서 풀었습니다.

안드로이드 종속성을 실행하여 실제로 무슨 일이 일어나고 있는지 확인하는 것이 좋습니다.빌드 폴더에서 검색하는 것도 좋습니다.

무엇보다도 안드로이드 스튜디오 2.2는 이 문제를 추적할 수 있는 내장 기능을 제공합니다.

해피코딩 가이즈

Android Studio에서 build.gradle(프로젝트 파일과 모듈 build.gradle 파일 모두 확인)로 이동하여 중복된 종속성을 검색합니다.

프로젝트에 필요 없는 것은 삭제합니다.

그래들 캐시에서 모든 파일을 삭제하면 문제가 해결되었습니다.

리눅스의 경우:

rm -rf ~/.gradle/caches/*

com.android 컴파일을 제거했습니다.지원:support-v4:18.0.+' 종속성이 있으며 작동합니다.

저의 리액티브 프로젝트에서 문제를 간단히 추가해서 해결할 수 있었습니다.

configurations {
        all*.exclude group: 'com.android.support', module: 'support-compat'
        all*.exclude group: 'com.android.support', module: 'support-core-ui'
    }

안드로이드\app\build.gradle 파일 끝에

마지막으로 모듈 그라들 파일에 이 속성들을 수정하여 해결하였습니다.

  1. 컴파일 Sdk 버전 25
  2. targetSdk버전 25
  3. com. android를 편집합니다.지원:appcompat-v7:+'
  4. com. android를 편집합니다.지원: recyclerview-v7:+'

를 추가할 .react-native-palette제 여기 제다가 .

./gradlew app:dependencies
+--- project :react-native-palette
|    +--- com.facebook.react:react-native:0.20.+ -> 0.44.2
|    |    +--- javax.inject:javax.inject:1
|    |    +--- com.android.support:appcompat-v7:23.0.1
|    |    |    \--- com.android.support:support-v4:23.0.1
|    |    |         \--- com.android.support:support-annotations:23.0.1 -> 24.2.1
...
|    \--- com.android.support:palette-v7:24.+ -> 24.2.1
|         +--- com.android.support:support-compat:24.2.1
|         |    \--- com.android.support:support-annotations:24.2.1
|         \--- com.android.support:support-core-utils:24.2.1
|              \--- com.android.support:support-compat:24.2.1 (*)
+--- com.android.support:appcompat-v7:23.0.1 (*)
\--- com.facebook.react:react-native:+ -> 0.44.2 (*)

해결책을 까지를 .com.android.support:appcompat버전 인android/app/build.gradle, 이것이 도움이 되었으면 합니다.

dependencies {
    compile project(':react-native-palette')
    compile project(':react-native-image-picker')
    compile project(':react-native-camera')
    compile fileTree(dir: "libs", include: ["*.jar"])
    // compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.android.support:appcompat-v7:24.2.1"
    compile "com.facebook.react:react-native:+"
}

여러개의 출품작은 큰 문제가 아닌것 같습니다. 버전 불일치는

일이 잘 풀렸어요.compile file('...')minSdkVersion을 21로 늘리고 멀티덱스를 사용하도록 설정하여 충돌합니다.그것이 최선의 해결책인지는 확실하지 않지만 제 경우에는 제가 해결할 수 있는 유일한 방법입니다.

참고: 대상compile file('...')당신은 그것을 넣을 수 없는 것처럼 보입니다.exclude조항이 있어서 그 옵션을 사용할 수 없었습니다.

저도 같은 문제가 있었는데, 제 솔루션은 지원 버전 '27을 바꾸고 있습니다.+'(27.1.0) ~ '27.0.1'

저도 같은 문제가 있었습니다.제 프로젝트에서 저는 다음과 같은 의존 관계를 가지고 있었습니다.

  • appcompat-v7
  • 안드로이드-지원-v13

기존의 이유로 구글 메이븐 레포에서 앱 컴파트트를 가져온 반면 안드로이드 지원은 로컬 .jar였습니다.

이를 파악하고 이 로컬 참조를 메이븐 참조로 대체하자 빌드 문제가 해결되었습니다.

제 app/build.gradle의 차이점은 다음과 같습니다.

enter image description here

저는 이 문제를 project.properties에 추가하여 모든 문제를 해결했습니다.

cordova.system.library.7=com.android.support:appcompat-v7:27.1.0

다음 오류를 수신했습니다.

작업 ':app:transformDexArchiveWithDexMergerForDebug'에 대해 실행에 실패했습니다.

com. androidbuild.api. transform.변환예외: com.android.dex.덱스 예외:여러 덱스 파일에서 Landroid/support/constraintSet$1을 정의합니다.

수정 : 빌드로 이동 -> 프로젝트 정리

언급URL : https://stackoverflow.com/questions/20989317/multiple-dex-files-define-landroid-support-v4-accessibilityservice-accessibility

반응형