외부 JAR에서 "1번 오류와 함께 Dalvik 형식으로 변환하지 못했습니다.
이클립스의 안드로이드 앱에서 다음과 같은 오류가 발생합니다.
치 않은 예를 들어 다음과 같습니다.
파일.java. 파일의 이미되었습니다.파일: Log/xmlPull/v1/XmlPullParser;
....
Dalvik . Dalvik 형식입니다.
이 오류는 특정 외부 JAR 파일을 프로젝트에 추가할 때만 나타납니다.가능한 해결책을 찾기 위해 오랜 시간을 찾았지만, 어느 것도 작동하지 않습니다.
심지어 1.5(현재 사용하는 버전) 대신 안드로이드 1.6으로 바꾸려고 했습니다.
프로젝트 » 속성 » Java 빌드 경로 » 라이브러리로 이동하여 "Android X"를 제외한 모든 항목을 제거합니다.Y"(내 경우 Android 1.5).확인을 클릭합니다.프로젝트 » 정리 » 아래에서 선택한 프로젝트 정리로 이동하여 프로젝트를 선택하고 확인을 클릭합니다.그러면 되겠군요.
프로젝트 폴더 어딘가에 JAR 파일이 있을 수도 있습니다(Admob JAR 파일을 src 폴더에 복사했습니다). 그런 다음 Java Path Library로 추가했습니다.패키지 탐색기 아래에 표시되지 않아 눈치채지 못하지만, 두 번 카운트되어 무서운 달빅 오류 1이 발생합니다.
다른 가능한 이유는 패키지 이름 충돌일 수 있습니다.가 있다고 해 보겠습니다.com.abc.xyz
그리고 이름이 붙은 클래스.A.java
및 프로젝트(가된 다른 프로젝트(이 프로젝트의 종속성에 추가됨)com.abc.xyz.A.java
그러면 똑같은 오류가 발생할 것입니다.즉, 동일한 파일에 대한 여러 참조가 있습니다.A.java
그리고 제대로 만들 수 없습니다.
실수로 또는 의도적으로 클래스 경로 파일의 내용을 수동으로 편집/추가한 경우 다른 방법으로 이 문제가 발생할 수 있습니다.경우에 따라 Java 문서를 생성하기 위해 클래스 경로 파일에 Android.jar 경로를 수동으로 추가할 수 있습니다.javadoc 생성 후 코드를 제거하면 잘 작동합니다.아직도 발생하는 사람이 있다면 이것도 확인 부탁드립니다.
저는 그 문제를 해결했습니다.
JAR 파일 충돌입니다.
빌드 경로에 동일한 패키지와 클래스가 포함된 JAR 파일이 두 개 있는 것 같습니다.
smack.jar
그리고.android_maps_lib-1.0.2
JAR 파일 중 하나에서 이 패키지를 삭제하면 문제가 해결되었습니다.
Windows 7 솔루션:
했습니다.
SDK 디렉토리 [Android SDK 파일]\tools\proguard\bin\proguard.bat
다음 행을 편집하면 문제가 해결됩니다.
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*
로.
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
서명된 Android 애플리케이션을 내보내는(비) 동안 메뉴 > "프로젝트" > "자동으로 빌드"를 해제하면 이 문제를 쉽게 해결할 수 있습니다(이클립스 Android Developer Tools, 빌드: v22.0.1-685705).그 후에 다시 켜는 것을 잊지 마세요.
ADT 버전 12 이상을 사용하는 경우 4.4 -> 4.6에서 프로가드를 업데이트해야 합니다(여기에 설명됨).또한, 당신은 떠나야 합니다...원본 형식의 \bin\proguard.bat 파일입니다.
웹에서 다운로드하고 lib 폴더를 다운로드한 패키지에서 에 복사하기만 하면 됩니다.
[Android SDK 설치 디렉토리]\tools\proguard\lib
EDIT(새로운 솔루션):
이전 솔루션은 바이패스에 불과합니다.저는 마침내 영구적으로 문제를 해결할 수 있었습니다.저의 경우 제 프로젝트와 제 프로젝트에서 참조되는 Facebook 프로젝트에서 안드로이드-support-v4 파일이 일치하지 않았습니다.
Lint Check(Android Tools / Run Lint: Android Tools / Lint 실행)를 수행하여 이 오류를 발견했습니다.일반 오류 확인)
이전 솔루션:
저는 이 사이트에서 가능한 모든 해결책을 시도해 보았습니다. 도움이 되지 않았습니다!!!
드디어 여기서 답을 찾았습니다: https://groups.google.com/forum/ #!topic/actionbarsherlock/drzI7pEvKd4
쉬운 단계:
프로젝트로 이동 -> 자동으로 빌드 선택 취소
프로젝트로 이동 -> 치료..., 라이브러리 프로젝트와 앱 프로젝트 모두 치료
자동으로 빌드가 비활성화된 상태에서 앱을 서명된 APK로 내보내기
다음은 또 다른 시나리오와 솔루션입니다.
최근에 이클립스용 ADT를 업데이트한 후 이 문제가 발생한 경우:
- 앱 프로젝트에서 라이브러리 프로젝트를 가리키는 연결된 소스 폴더("LibraryName_src" 형식의 이름 있음)를 확인합니다.
- 이러한 프로젝트를 모두 선택하고 마우스 오른쪽 단추를 클릭한 다음 "빌드 경로"->"빌드 경로에서 제거"를 선택합니다.
- 프로젝트에서 폴더 연결 해제도 선택한 후 "예"를 누릅니다.
- 프로젝트를 정리, 재구축 및 재배치합니다.
그 이유는 이전 버전의 ADT가 Library 프로젝트 소스 폴더를 "하위" 프로젝트에 연결했으며 현재 ADT/Dex 조합이 해당 솔루션과 더 이상 호환되지 않기 때문인 것 같습니다.
편집: 이것은 Android Dev Blog 항목, 특히 이 항목을 통해 확인됩니다. 8번째 단락 이후를 참조하십시오.
프로젝트로 이동한 다음 "자동으로 빌드" 선택을 취소합니다.그런 다음 프로젝트를 내보내면 오류가 사라집니다.
추가한 경우에도 이 문제가 발생할 수 있습니다.Android.jar
파일을 빌드 경로에 저장합니다. 이클립스에서 실수로 빠른 수정을 했을 수도 있습니다.프로젝트 -> 빌드 경로 -> 빌드 경로 구성 -> Android.jar, 제거를 마우스 오른쪽 버튼으로 클릭하여 제거합니다.
이 오류가 발생할 때마다 프로젝트를 간단히 청소하는 것이 효과가 있었습니다.
4시간 동안 모든 솔루션을 테스트한 후 오늘 찾은 유일한 솔루션은 다음과 같은 다양한 솔루션의 조합입니다.
Delete
- 의 합니다.
\bin
그리고.\gen
- 를 라브러리참다제거합다니로 합니다.
.classpath
프로젝트 파일입니다. - 명줄을여용다시시작하사령:
eclipse -clean
Import
- 프로젝트를 마우스 오른쪽 버튼으로 클릭 - 선택
Properties
>Java Build Path
>Libraries
그리고 다른 모든 것을 제거합니다.Android XX.Y
- 마내침.
clean
프로젝트, 자동 빌딩 대기 또는Build
그것 - 발사하고 이제 작동합니다!적어도 나에겐...
저는 한 번에 모든 단계와 많은 조합을 시도했지만, 모든 단계의 연속만이 한 번에 이루어졌습니다!다시는 이런 일에 직면하지 않기를...
아직 이 문제가 있고 위의 답변을 시도했지만 여전히 오류가 발생한 다른 사람들(제 경우였습니다)에 대해서만 제 해결책은 Eclipse에서 프로젝트를 삭제하고 다시 가져오는 것이었습니다.
이로 인해 Android 라이브러리가 참조된 라이브러리에 다시 추가되어 현재 두 개의 Android JAR 파일이 참조되어 있으므로 그 중 하나를 삭제하고 이제 정상적으로 컴파일할 수 있습니다.
솔루션:Eclipse IDE에서 프로젝트를 삭제한 후 다시 가져온 다음 위의 솔루션을 확인합니다.
오늘 저도 이 문제에 부딪혔습니다.치료 및 재구축을 해도 문제가 해결되지 않았습니다.프로젝트를 삭제하고 다시 가져오는 것도 도움이 되지 않았습니다.
저는 마침내 제 .class 파일에 대한 잘못된 추가 사항으로 거슬러 올라갔습니다.플러그인 도구가 다른 문제를 해결하려고 할 때 플러그인 도구에 의해 추가된 것 같습니다. "1번 오류와 함께 달빅 형식으로 변환 실패" 빌드 오류가 제거되었습니다.
<classpathentry kind="lib" path="C:/dev/repository/android-sdk-windows/platforms/android-3/android.jar">
<attributes>
<attribute name="javadoc_location" value="file:/C:/dev/repository/android-sdk-windows/docs/reference"/>
</attributes>
<accessrules>
<accessrule kind="nonaccessible" pattern="com/android/internal/**"/>
</accessrules>
빌드 경로에 추가 JAR 참조가 표시되었습니다.제가 이것을 삭제했고, 이제 작동합니다.
제 문제는 ADT 버전 12.0과 ProGuard 통합으로 인해 발생했습니다.이 버그는 문서화되어 있으며 솔루션은 문서화되어 있습니다.
솔루션은 여기에 있습니다.
Proguard를 최신 버전으로 업데이트하여 해결되었습니다.
- 나의 보호자의 길은.
C:\Program Files (x86)\Android\android-sdk\tools\proguard\
- 여기서 새 버전을 다운로드했습니다.
- bin 및 lib 폴더를 모두 교체했습니다.
감사합니다!
프로젝트에서 셜록 액션바 라이브러리를 사용할 때 이 문제를 해결한 적이 문제는 있습니다.당신은 다음 단계를 할 수 있습니다, 그것은 저를 위한 일입니다.
- 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
- 대화상자가 나타나면 왼쪽 메뉴에서 'Java 빌드 경로'를 선택합니다.
- 오른쪽 패널에서 'Android 종속성' 및 'Android 개인 라이브러리'를 제거한 후 확인을 클릭합니다.
- 프로젝트 정리(메뉴 프로젝트 --> 정리 선택)
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Android Tools -> 프로젝트 속성 수정을 선택합니다.
- 프로젝트를 다시 정리합니다.
- 컴퓨터를 재부팅하세요.
- 이클립스 열기 및 앱 내보내기
그게 당신에게 도움이 되길 바랍니다.
나의 경우에는 실제로 OpenFeint API 프로젝트에 문제가 있습니다.라이브러리 프로젝트로 OpenFint를 추가했습니다.
.
빌드 경로에도 추가됩니다. ADT 도구 16은 이 시나리오에서 오류를 발생시킵니다.
프로젝트를 마우스 오른쪽 버튼으로 클릭하고 빌드 경로를 클릭한 다음 빌드 경로를 구성한 다음 이미지를 보고 프로젝트 OpenFint를 여기서 제거하면 모든 작업이 완료됩니다. :)
다른 걸 찾았어요Android는 다음을 사용합니다./libs
JARfiles.JAR 파일입니다.저는 항상 JAR 파일에 오류가 있을 때 "1번 오류로 Dalvik 형식으로의 변환 실패" 오류를 여러 번 보았습니다.
이제 나는 새로운 JAR 파일을 새로운 버전으로 업그레이드했습니다./libs
디렉터리 및 클래스 경로를 새 버전으로 전환합니다.그것이 달빅 오류를 일으켰습니다.
중 하나를 했을 때/libs
폴더, 오류가 사라졌습니다.보아하니 안드로이드는 모든 JAR 파일을 선택합니다./libs
Java 빌드 경로에서 지정한 항목에 관계없이 사용할 수 있습니다.정확히 기억은 안 나지만 안드로이드가 사용하기 시작한 것 같아요./libs
기본적으로 Android 4.0(아이스크림 샌드위치, ICS)으로 시작합니다.
일반적으로 빌드 경로에 불필요한 JAR 파일이 있을 때 이 문제가 발생하는 것으로 보입니다.
저는 IntelliJ IDEA를 작업하는 동안 이 문제에 직면했습니다.저는 런타임에 컴파일되는 JUNit 및 Mockito 라이브러리를 추가했기 때문에 이러한 일이 발생했습니다.모듈 속성에서 "테스트"로 설정해야 했습니다.
이전에 제안된 솔루션 중 어떤 것도 저에게 효과가 없었습니다.저의 경우, 라이브러리 소스 코드 폴더를 참조하는 것에서 라이브러리 JAR 파일을 사용하는 것으로 전환할 때 문제가 발생했습니다.처음에는 Android 응용 프로그램 프로젝트 속성\ Android 페이지\ 라이브러리 섹션에 Android 라이브러리 프로젝트가 나열되어 있었고, 라이브러리는 라이브러리 원본 디렉터리에 대한 링크로 프로젝트 탐색기 트리에서도 비교되었습니다.
애초에 저는 프로젝트 트리에서 디렉터리 링크를 삭제하고 빌드 경로에 JAR 라이브러리를 추가했지만 이로 인해 예외가 발생했습니다.
올바른 절차는 다음과 같습니다(빌드 경로를 다시 변경하고 라이브러리 소스에 대한 참조를 다시 저장한 후).
응용 프로그램 프로젝트 속성\ Android 페이지에서 실제로 참조를 제거하여 라이브러리 원본 디렉터리 링크를 제대로 제거합니다.
평소와 같이 응용 프로그램 프로젝트 빌드 경로에 JAR 라이브러리를 추가합니다.
나열된 솔루션 중 어떤 것도 저에게 효과가 없었습니다.
제가 고민했던 부분은 다음과 같습니다.
먼저 "libs"라는 소스 폴더에 jSoup 외부 JAR 파일을 넣고 마우스 오른쪽 단추로 클릭하여 프로젝트 경로에 jSoup 외부 JAR 파일을 추가했습니다.이로 인해 Dalvik 변환 오류가 발생했습니다.JAR 파일에서 클래스를 "이미 포함"했다고 합니다.프로젝트의 디렉토리를 둘러보니 "이미 포함된" 곳이 사실이었습니다.bin
디렉토리입니다.는 JAR 파일을 JAR 했습니다.bin
이클립스에서 디렉터리를 만들고 프로젝트를 새로 고쳤으며 오류가 사라졌습니다!
위의 모든 해결책이 저에게 효과가 없었습니다.사전 컴파일된 .jar는 사용하지 않습니다.저는 LVL과 Dalvik 오류를 사용하고 있습니다. 모든 것이 시장 라이센스 라이브러리와 관련되어 있습니다.
메인 프로젝트를 삭제하고 다시 가져오기(기존 소스에서 새 프로젝트 만들기)하여 문제가 해결되었습니다.
저도 같은 문제를 겪었고, 이 해결책들 중 어느 것도 효과가 없었습니다.마지막으로 콘솔에서 오류가 중복된 클래스(기존 프로젝트에 하나, 추가된 jar 파일에 하나) 때문이라는 것을 확인했습니다.
java.lang.IllegalArgumentException: already added: package/MyClassclass;
[2011-01-19 14:54:05 - ...]: Dx1 error; aborting
[2011-01-19 14:54:05 - ...] Conversion to Dalvik format failed with error 1
따라서 프로젝트에 중복된 클래스가 있는 jar를 추가하는지 확인합니다.해당하는 경우 해당 항목 중 하나를 제거합니다.
그것은 나에게 효과가 있었다.
프로젝트를 청소한다고 해서 이 문제가 해결되지 않는 경우가 많습니다.
하지만 이클립스에서 프로젝트를 닫고 다시 여는 것은 그런 경우에 그것을 고치는 것처럼 보입니다.
이 문제에 부딪혔지만 해결책은 두 가지였습니다. 1.) 프로젝트 -> 속성 -> Android에서 Android 대상 버전을 추가해야 했습니다. 2.) 모든 Google '타사 추가 기능'이 없었습니다.사용 가능한 패키지 -> 타사 추가 기능 -> Google Inc.에서 AVD SDK 관리자를 클릭합니다.저는 모든 SDK를 다운로드했고 그것이 제 문제를 해결했습니다.
나는 안드로이드 1.6을 사용하고 있으며 외부 JAR 파일이 하나 있었습니다.모든 라이브러리를 제거하고 프로젝트를 마우스 오른쪽 버튼으로 클릭한 후 Android Tools -> *Fix Project Properties(Android 1.6에 추가된 프로젝트 속성)를 선택한 다음 외부 JAR 파일을 다시 추가했습니다.
이클립스의 Android-Maven 플러그인이 몇 개의 프로젝트(Android 라이브러리 프로젝트 포함)에서 두 번이나 참조된 과도 참조와 참조를 인식하지 못하고 두 번 이상 포함했기 때문에 이 문제에 부딪혔습니다.메이븐이 이 모든 것을 처리하기로 되어 있지만, 저는 단 한 번만 모든 것을 포함시키기 위해 호커스포커스를 사용해야 했습니다.
예를 들어, 저는 글로벌 멘토-구글 및 글로벌 멘토-안드로이드(후자는 안드로이드 라이브러리)에서도 사용되는 핵심 라이브러리 글로벌 멘토-코어를 가지고 있었습니다. 멘터-안드로이드에서pom.xml
종속성을 "제공됨"으로 표시하고 과도적으로 포함된 다른 라이브러리에서 제외해야 했습니다.
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-core</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- android-maven-plugin can't seem to automatically keep this from being
included twice; it must therefore be included manually (either explicitly
or transitively) in dependent projects -->
<scope>provided</scope>
</dependency>
으로 그러면최신서에청종서▁thenation▁the에신.pom.xml
코어 라이브러리를 명시적으로 포함하지 않고 하나의 포함 경로만 허용하기 위해 올바른 속임수를 사용해야 했습니다.
<!-- android-maven-plugin can't seem to automatically keep this from being
included twice -->
<!-- <dependency> -->
<!-- <groupId>com.globalmentor</groupId> -->
<!-- <artifactId>globalmentor-core</artifactId> -->
<!-- <version>1.0-SNAPSHOT</version> -->
<!-- </dependency> -->
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-google</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<!-- android-maven-plugin can't seem to automatically keep this from
being included twice -->
<exclusion>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.globalmentor</groupId>
<artifactId>globalmentor-android</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
내 경우에는
project->properties->properties-> 순서대로 빌드 경로 지정 -> 내보내기 탭 -> Android-support-v4.
프로젝트를 정리하기만 하면 됩니다.
이 방법이 작동하지 않으면 다른 솔루션을 사용해 보십시오.
언급URL : https://stackoverflow.com/questions/2680827/conversion-to-dalvik-format-failed-with-error-1-on-external-jar
'programing' 카테고리의 다른 글
루비는 모든 단어의 첫 글자를 대문자로 표시합니다. (0) | 2023.06.04 |
---|---|
Gem 파일이 설치된 위치를 찾는 방법 (0) | 2023.06.04 |
get_Range 워크시트가 예외를 발생 (0) | 2023.05.25 |
git bloss'는 무엇을 합니까? (0) | 2023.05.25 |
Cassandra, Membase, Hadoop, MongoDB, RDBMS 등 중에서 선택하는 방법은 무엇입니까? (0) | 2023.05.25 |