Programming

dex를 실행할 수 없음 : 여러 dex 파일이 Lcom / myapp / R $ array를 정의합니다.

procodes 2020. 2. 23. 12:04
반응형

dex를 실행할 수 없음 : 여러 dex 파일이 Lcom / myapp / R $ array를 정의합니다.


ADT14로 업데이트 한 이후 더 이상 프로젝트를 빌드 할 수 없습니다. 업데이트하기 전에 제대로 작성되었습니다.

오류:

[2011-10-23 16:23:29 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;
[2011-10-23 16:23:29 - myProj] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lcom/myapp/R$array;

비슷한 문제 가보고되었으며 여기에 제안을 시도했습니다.

  • 다시 시작 Eclipse.
  • 프로젝트 정리 및 재 구축- "프로젝트-> 자동 빌드"옵션을 비활성화 한 다음 "청소"및 "빌드"프로젝트를 비활성화 한 다음 실행 해보십시오. "자동 빌드"옵션을 켜기로 재설정
  • Android개발자 도구 재설치
  • Eclipse 재설치 (최신 버전 3.7.1로 업데이트)
  • 파일 시스템에서 가져 오는 새 프로젝트를 만들었습니다.
  • Subversion에서 새 프로젝트를 만들었습니다.

Eclipse를 사용할 때만 발생했기 때문에 동일한 문제가 있었지만 꽤 이상했습니다 (그러나 Ant에서는 괜찮 았습니다). 이것이 내가 고친 방법입니다.

  • 오른쪽 클릭 Project Name
  • 선택 Build Path->Configure Build Path
  • 에서 Java Build Path, 탭으로 이동Order and Export

  • .jar라이브러리를 체크 해제하십시오

때때로 : 주문 및 내보내기 탭에 jar 라이브러리가 없으므로 Android Private Libraries 항목을 선택 해제했습니다. 이제 내 프로젝트가 실행 중입니다.


이전 버전의 도구에서 남은 일부 디렉토리와 파일을 정리 한 후에 문제가 해결되었습니다. ADT Rev 14는 바이너리가 저장되는 위치를 변경 합니다. 전체 bin 디렉토리를 삭제하고 Eclipse를 다시 시작한 후 빌드를 정리하고 강제로 다시 빌드했습니다. 처음에는 트릭을 수행하는 것처럼 보였지만 다음 실행 후 문제가 다시 발생했습니다.

마침내 bin 디렉토리가 프로젝트 빌드 경로에 포함되어 있음을 발견했습니다. 빌드 경로에서 bin을 제외하고 위의 단계를 반복했습니다. 이것은 내 문제를 해결했습니다.


[나를 위해 해결]

Eclipse 프로젝트 특성-> Java 빌드 경로-> 주문 및 내보내기

Android 개인 라이브러리를 선택 취소하십시오.


위의 어느 것도 도움이되지 않았습니다. 결국 간단한 문제였습니다.

FacebookSDK와 ViewPagerIndicator를 라이브러리 프로젝트로 사용하는 프로젝트가 있습니다. 모두 Android API 16을 기반으로 구축되었으며이 두 프로젝트는 Android 지원 라이브러리 vX (X는 16이 아님)를 사용했습니다.

두 프로젝트 모두에 외부 JAR을 추가하고 \ extras \ android \ v4를 가리 켰습니다. 또한 libs 폴더에있는 v4 jar도 제거했습니다.

모든 프로젝트를 정리하고 다시 빌드하십시오.

짜잔!

내가받은 정확한 오류 : dex를 실행할 수 없음 : 여러 dex 파일이 Landroid / support / v4 / view / PagerAdapter를 정의합니다. Dalvik 형식으로 변환하지 못했습니다 : dex를 실행할 수 없습니다 : 여러 dex 파일이 Landroid / support / v4 / view / PagerAdapter를 정의합니다.


이 문제는 저에게 발생했습니다 .gson-2.2.2.jar라는 libs 폴더에 외부 .jar이 있었지만 어떤 이유로 gson-2.2.2.jar와 gson-2.2.2.jar (두 가지)이있었습니다. 1), 나는 단순히 후자를 삭제하고 내 프로젝트는 다시 잘 구축되었습니다.


  1. 일식을 닫습니다.
  2. 프로젝트 폴더 안의 bin 폴더를 삭제하십시오.
  3. 일식을 시작하고 프로젝트를 청소하십시오.
  4. 이제 실행하면 문제가 사라져야합니다

다른 사람들이 언급했듯이, 빌드 경로에 동일한 클래스의 여러 복사본이있을 때 발생합니다. 클래스 경로에 bin /을 포함하면이 문제를 보장 할 수 있습니다.

나를 위해, 이것은 내 libs / 폴더에 android-support-v4.jar을 추가했을 때 발생했으며 어떻게 든 일식은 bin / classes / android-support-v4.jar에 두 번째 사본을 추가했습니다.

bin / classes에서 추가 사본을 삭제하면 문제점이 해결되었습니다. Eclipse가 왜 사본을 작성했는지 확실하지 않습니다.

당신은 이것을 테스트 할 수 있습니다

grep -r YourOffendingClassName YourApp | 병마개


나를 위해 프로젝트-> 빌드 경로-> 빌드 경로 구성-> 라이브러리-> 종속성 제거를 마우스 오른쪽 버튼으로 클릭하십시오.

작동 후.


동일한 클래스 이름을 포함하는 두 개의 jar이있는 경우이 오류가 발생할 수 있습니다. 예를 들어 두 개의 라이브러리가 있습니다 (예 : jsr311-api-1.1.1.jar 및 jersey-core-1.17.1.jar). .rs.ApplicationPath. jsr311-api-1.1.1.jar을 제거하고 정상적으로 작동했습니다.


facebooksdk.jar 을 이미 android-support-v4.jar 에 종속 된 프로젝트에 추가 한 후이 오류가 발생했습니다 . 이후 facebooksdk.jar은 이미 자체 포함 안드로이드 지원-v4.jar를 충돌이 있었다. 프로젝트 Properties / Java Build Path / Libraries 에서 이전 android-support-v4.jar제거하면 문제가 해결되었습니다.


이동 프로젝트 / 속성 및 Java 빌드 경로선택 해제 안드로이드 개인 라이브러리 .

이것은 이런 종류의 오류에 대한 또 다른 경우입니다.

끝난


빌드 경로에서 Android 종속성을 제거하고 작동했습니다.

편집 : 무시하십시오. 내 maven 종속성 및 libs 폴더에 동일한 jar이 있습니다. lib 폴더에서 하나를 제거했습니다.


r14를 설치 했을 가능성 이 있습니다.이 오류는 플랫폼 도구 업데이트로 인해 발생한 것일 수 있습니다. SDK를 다시 설치해야합니다.


나 에게이 문제는 내 프로젝트에 관련된 Android 라이브러리 프로젝트가있는 한 존재합니다. 그래서 모든 라이브러리를 제거하고 당신이 말한대로 할 때 앱을 다시 실행할 수 있습니다. 라이브러리가 있으면 bin-removal-trick 트릭도 작동합니다.

ADT 14를 며칠 동안 사용하고 있는데 왜이 버그가 오늘 처음 나타 났는지 알 수 없습니다. 그래도 나를 행복하게하는 다른 버그가있었습니다.


bin 폴더를 삭제하는 것만으로는 충분하지 않았으며 gen 폴더도 삭제했습니다. 그런 다음 두 번 다시 빌드 한 후 dex 오류 메시지가 사라졌습니다.


프로젝트 탐색기 에서 프로젝트를 선택하고 마우스 오른쪽 단추를 클릭하고 특성 -> Java 빌드 경로 -> 소스 -> 소스 폴더의 출력 폴더 허용 상자를 선택하십시오.


나는 기본적으로 같은 문제에 직면했다. BIN 폴더를 삭제 한 다음 Eclipse에서 주문 및 가져 오기에 사용되지 않는 jar 파일을 제거했습니다. 그 후로 일했습니다.


이 파티에 늦었지만 나중에 다시 찾을 수 있도록 내 경험을 추가했습니다. :)

안드로이드 SDK와 이클립스 애드 인을 업그레이드 한 후이 문제가 발생했습니다. 승급되지 않은 업그레이드는 없습니다!

나에게 문제는 라이브러리 프로젝트와 관련이 있었고 내 응용 프로그램은 표준 Java 프로젝트와 Android 라이브러리 프로젝트를 모두 참조합니다. Java Build Path 설정에 안드로이드 라이브러리 프로젝트 src 및 res 폴더가 소스 목록에 포함되어 있음을 알았습니다 (소스에서 bin을 언급하는 모든 사람들에게 src 및 res도 문제가되었습니다).

따라서 해결책은 다음과 같습니다.

  1. 소스 목록 및 프로젝트 목록에있는 설정의 Java 빌드 경로 섹션에서 참조 된 모든 Android 라이브러리 소스 및 프로젝트 참조를 제거하십시오.
  2. 순수 자바 의존성이 프로젝트 목록에 나열되고 주문 및 내보내기 탭에서 확인되어 클래스가 APK에 포함되도록하십시오.
  3. 모든 Android 라이브러리 종속성이 확인 된 SDK 버전 아래의 라이브러리 섹션에있는 프로젝트 특성의 Android 섹션에 나열되어 있는지 확인하십시오.

다른 솔루션과 함께 모든 것을 하나로 모으기 시작했습니다! 휴!


adt 14에서 15로 업그레이드 할 때이 문제가 발생하여 작동하도록하기 위해 .eclipse 폴더를 삭제하고 (내 설정과 함께) adt 15를 다시 설치했습니다.


bin 디렉토리 삭제에 대한 Terrys 응답 및 ANT 디렉토리의 위치에 대한 Larrys를 읽은 후 :

내 프로젝트 BIN 디렉토리에있는 파일을 BIN / CLASSES로 옮기고 실행 중입니다.

편집 1 그런 다음 두 번째 실행에서 실패했습니다 ... doh

편집 2 그래서 닫힌 Eclipse는 파일을 원래 위치로 옮기고 모든 작업을 수행했습니다 ... 음 무엇? 나는 이것이 왜 효과가 있었는지 척하지 않습니다. 변경 사항이 있으면 업데이트됩니다.

편집 3 백업에서 BIN 디렉토리와 BIN / CLASSES에 실제로 중복 파일이 있음을 알았습니다.

그래서 대답은 : 두 위치에있는 파일이 없습니다. 적어도 저에게는 그것이 효과가있었습니다.


eclipse.ini 파일을 수정 하고 최대 메모리 매개 변수를

-Xmx1024m

그런 다음 컴퓨터를 다시 시작하십시오.

그것은 나를 위해 일했다.


내가 믿는 해결책을 찾았습니까 ??

    [2013-04-28 23:56:09 - Dex Loader] Unable to execute dex: Multiple dex files define Lcom/coremedia/iso/AbstractBoxParser$1;

"Lcom / coremedia / iso / AbstractBoxParser $ 1"은 내가 가져온 라이브러리의 위치가되어 문제를 일으켰습니다. com.codemedia.iso.AbstractBoxParser $ 1.class 및 .AbstractBoxParser.class ....를 찾고 해당 jar를 가져 와서 압축을 풀고 두 파일을 모두 제거한 다음 .zip으로 다시 패키지하여 라이브러리에 추가하고 정리하고 작업했습니다! 더 이상 나를 위해 갈등하지! (업데이트 또는 추가 다운로드도 없음)


libs 폴더에 Cordova .jar 파일의 두 가지 버전이 있었는데 사용하지 않는 파일을 삭제했으며 바로 작동했습니다. 내가 전에 그것을 알지 못했기 때문에 이상하고 그것은 전에 일하고 갑자기 작동을 멈췄습니다 ...


ADT R14 업데이트는 클래스가 bin / classes 디렉토리로 이동하는 위치를 변경합니다 ( http://tools.android.com/recent/buildchangesinrevision14 참조 ). ANT를 사용하는 경우 클래스 경로를 bin에서 bin / classes로 변경해야합니다. 이것은 나를 위해 일했습니다.


나를위한 해결책 :

  1. 코드를 백업하십시오!
  2. 프로젝트가 아닌 프로젝트 작업 영역으로 이동하여 다음 명령을 실행하십시오.

    dev1 : workspace $ cd ~ / Documents / workspace / .metadata / .plugins / dev1 : workspace $ rm -rf org.eclipse.core.resources

  3. Eclipse 디렉토리로 이동하여 다음 명령을 입력하십시오.

    dev1 : eclipse $ ./eclipse clear

  4. Eclipse는 빈 작업 공간으로 시작합니다. 프로젝트가 아직 남아 있다고 걱정하지 마십시오. 기존 자원으로 새 프로젝트를 간단하게 만들 수 있습니다.

내가받은 정확한 오류 : [2012-02-07 14 :15: 53-Dex Loader] Dex를 실행할 수 없습니다 : 여러 Dex 파일이 Landroid / support / v4 / view / PagerAdapter를 정의합니다. [2012-02-07 14:15:53-ProjectCloud] Dalvik 형식으로 변환하지 못했습니다 : dex를 실행할 수 없습니다 : 여러 dex 파일이 Landroid / support / v4 / view / PagerAdapter를 정의합니다.


AndroidManifest에 지정된 동일한 패키지 이름을 가진 여러 라이브러리 프로젝트가 있습니다 (따라서 중복 필드 이름은 R.java에 의해 생성되지 않습니다). Manifest.java가 여러 번 작성되지 않도록 오류를 제거하기 위해 모든 라이브러리 프로젝트에 대해 AndroidManifest.xml에서 권한 및 활동을 제거해야했습니다. 잘하면 이것은 누군가를 도울 수 있습니다.


운이없이 다른 제안을 모두 시도한 후 프로젝트 'bin'디렉토리의 모든 내용을 삭제 한 다음 일식을 다시 실행하면 효과가있었습니다.


비 라이브러리 프로젝트를 라이브러리 프로젝트로 변환했지만 libs 폴더에 이전에 빌드 된 jar 파일이있었습니다. 이 jar 파일을 제거하면이 오류가 사라졌습니다.


나는 같은 문제에 직면하고 있었고 내 응용 프로그램에 여러 개의 dex 오류가 두 번로드 된 jar 파일을 푸시하는 동안 보았습니다. 프로젝트 속성-> Java 빌드 경로로 이동하여 두 번로드되는 jar을 선택 취소하십시오.


[나를 위해 해결]

중복 라이브러리 "JAR 파일"을 제거한 다음 BuildConfig.java 파일, 프로젝트 및 해당 작업을 제거하십시오.

참고 : https://stackoverflow.com/questions/7870265/unable-to-execute-dex-multiple-dex-files-define-lcom-myapp-rarray



반응형