2010-12-08 2 views
4

최근에 내 SDK 도구 및 ADT 플러그인이 최신 버전으로 업데이트되었습니다 (Android 2.3도 함께 제공됨). 내 구성에 약간의 변경이 필요했는데 (주로 내가 proguard.config=procfg.txtdefault.properties에 추가하여 proguard에 대한 내장 지원을 사용할 수 있음) 이전의 프로 가드 구성을 build.xml에서 제거했습니다. 자, 내 문제는 이클립스 꽤 긴 오류를 제공하는 것입니다 (내가 질문의 끝 부분에 포함됩니다) 문제는 내가 최근에 라이브러리를 추가하지 않았다는 것입니다. 그리고 다시 컴파일 예상대로 ant 작품을 사용 : Eclipse에서 "Dalvik 형식으로 변환하지 못했습니다."개미가 작동하는 동안

$ ant debug 
Buildfile: /home/felix/workspace/XXX/build.xml 
    [setup] Android SDK Tools Revision 8 
    [setup] Project Target: Android 2.3 
    [setup] API level: 9 
    [setup] 
    [setup] ------------------ 
    [setup] Resolving library dependencies: 
    [setup] No library dependencies. 
    [setup] 
    [setup] ------------------ 
    [setup] 
    [setup] WARNING: Attribute minSdkVersion in AndroidManifest.xml (4) is lower than the project target API level (9) 
    [setup] 
    [setup] Importing rules file: tools/ant/main_rules.xml 

-debug-obfuscation-check: 

-set-debug-mode: 

-compile-tested-if-test: 

-dirs: 
    [echo] Creating output directories if needed... 

-pre-build: 

-resource-src: 
    [echo] Generating R.java/Manifest.java from the resources... 

-aidl: 
    [echo] Compiling aidl files into Java classes... 

-pre-compile: 

compile: 
    [javac] /opt/android-sdk/tools/ant/main_rules.xml:361: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds 
    [javac] Compiling 1 source file to /home/felix/workspace/XXX/bin/classes 

-post-compile: 

-obfuscate: 

-dex: 
    [echo] Converting compiled files and external libraries into /home/felix/workspace/XXX/bin/classes.dex... 

-package-resources: 
    [echo] Packaging resources 
    [aapt] Creating full resource package... 

-package-debug-sign: 
[apkbuilder] Creating XXX-debug-unaligned.apk and signing it with a debug key... 

debug: 
    [echo] Running zip align on final apk... 
    [echo] Debug Package: /home/felix/workspace/XXX/bin/XXX-debug.apk 

BUILD SUCCESSFUL 
Total time: 6 seconds 

그러나, 이클립스 반복 클래스 나 어떤 것에 대해 징징된다

[2010-12-08 15:06:43 - XXX]: Dx 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lcom/android/vending/licensing/AESObfuscator; 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processClass(Main.java:338) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.access$100(Main.java:56) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processOne(Main.java:284) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.run(Main.java:176) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[2010-12-08 15:06:43 - XXX]: Dx at java.lang.reflect.Method.invoke(Method.java:597) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
[2010-12-08 15:06:43 - XXX]: Dx 
UNEXPECTED TOP-LEVEL EXCEPTION: 
java.lang.IllegalArgumentException: already added: Lcom/android/vending/licensing/AESObfuscator; 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.dex.file.DexFile.add(DexFile.java:143) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processClass(Main.java:338) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processFileBytes(Main.java:315) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.access$100(Main.java:56) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:266) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:190) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:122) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processOne(Main.java:284) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.processAllFiles(Main.java:220) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.dx.command.dexer.Main.run(Main.java:176) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
[2010-12-08 15:06:43 - XXX]: Dx at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
[2010-12-08 15:06:43 - XXX]: Dx at java.lang.reflect.Method.invoke(Method.java:597) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(Unknown Source) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:627) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:341) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:140) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238) 
[2010-12-08 15:06:43 - XXX]: Dx at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
[2010-12-08 15:06:43 - XXX]: Dx 
trouble processing: 
[2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/LicenseCheckerCallback) does not match path (classes/com/android/vending/licensing/LicenseCheckerCallback.class) 
...while parsing classes/com/android/vending/licensing/LicenseCheckerCallback.class 
...while processing classes/com/android/vending/licensing/LicenseCheckerCallback.class 
[2010-12-08 15:06:44 - XXX]: Dx 
trouble processing: 
[2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/NullDeviceLimiter) does not match path (classes/com/android/vending/licensing/NullDeviceLimiter.class) 
...while parsing classes/com/android/vending/licensing/NullDeviceLimiter.class 
...while processing classes/com/android/vending/licensing/NullDeviceLimiter.class 
[2010-12-08 15:06:44 - XXX]: Dx 
trouble processing: 
[2010-12-08 15:06:44 - XXX]: Dxclass name (com/android/vending/licensing/PreferenceObfuscator) does not match path (classes/com/android/vending/licensing/PreferenceObfuscator.class) 
...while parsing classes/com/android/vending/licensing/PreferenceObfuscator.class 
...while processing classes/com/android/vending/licensing/PreferenceObfuscator.class 
[2010-12-08 15:06:44 - XXX]: Dx 
... --------------------------------------- ... 
... and so on for every class in my project ... 
... --------------------------------------- ... 
[2010-12-08 15:06:44 - XXX]: Dx229 warnings 
[2010-12-08 15:06:44 - XXX]: Dx2 errors; aborting 
[2010-12-08 15:06:44 - XXX] Conversion to Dalvik format failed with error 1 

왜 이런 일이? 존재하지 않는 이유는 무엇입니까 classes/에서 찾고 있습니까?

프로젝트는 어제까지 아무런 문제없이 작동했으며, ant을 통해 컴파일 된 경우에도 여전히 작동합니다.


편집 :가 평소 Fix project propertiesClean project이 작동하지 않습니다.


편집 2 : 오류는오고 계속. 나는 .jar을 가지고 있지 않습니다. 또한 ProGuard를 사용하고 있습니다. 어떤 시점 개미뿐만 아니라 (오류를 기억할 수없는) 작동이 중지에서, 나는

touch `find .` 

를하고 일이 잠시 동안 다시 (이클립스와 개미 둘 다) 작업을 시작했다. 이제 Eclipse에서 오류를 다시 발생시킵니다. 무슨 일이야!?


편집 3 : 문제가 ProGuard에서 통합으로 자리 잡고 보인다. proguard.config 지시문을 default.properties에서 삭제하고 프로젝트 새로 고침 + 정리를 주석 처리하면 항상 작동합니다. 디버그 모드에서 빌드 할 때 이클립스가 ProGuard를 통해 코드를 난독 화/최적화하지 않아야하기 때문에 매우 이상합니다. 또한 ProGuard 구성은 Ant를 통해 잘 작동합니다.


편집 4 : 이클립스 + 개미 + ProGuard에서 = 함께 지내 없습니다. Eclipse를 닫으면 proguard.config 지시문의 주석을 제거하고 Ant를 사용하여 빌드하고 proguard.config 지시문을 주석 처리하고 Eclipse를 열면 Eclipse에서 오류가 발생합니다. 개미가 뭔가를 남겨두고있는 것처럼 보일 것입니다. 깨끗한 프로젝트를한다면 잘 작동합니다.

+0

어떤 ADT 버전을 사용하고 있습니까? '8.0.0'은 더 이상 최신 버전이 아니며'8.0.1'은 몇 시간 전에 릴리스되었습니다. –

+0

헤즈 업에 감사드립니다. 방금 업데이트했지만 문제가 해결되지 않았습니다. – Felix

+0

@Octavian 실제로, Eclipse의 두 번째 다시 시작과 더 많은 '클린 프로젝트'작업 후에 현재 작동하고있는 것 같습니다. 답변을 수락 할 수 있도록 의견을 게시하십시오. – Felix

답변

4

Eclipse와 Ant가 함께 어울리지 않는 것이 문제였던 것 같습니다. 개미를 전혀 사용하지 않고 이클립스 이 제대로 작동하려면이되는 것 같습니다. (마법사를 사용하여 난독 화 된 패키지 &)를 내보낼 수도 있습니다.

결론적으로 Ant + Eclipse = 큰 아니오.

2

몇 시간 전으로 8.0.1 인 최신 ADT 버전으로 업데이트해야합니다.

+0

오류가 다시 나타나서이 대답의 승인을 취소했습니다. 이것은 ADT와 관련이 없습니다. – Felix

+0

흥미 롭습니다. –

5

"ant clean"을 실행 한 다음 Eclipse에서 프로젝트를 정리하십시오. "bin"및 "gen"디렉토리가 삭제되기 때문에 이것을 수행하기 전에 Proguard 생성 파일 (/ bin/proguard)을 저장하십시오. 짜증나는 해결책이지만, 그것이 내가이 문제를 어떻게 다루었는지를 보여줍니다.

+0

+1은 '개미 청소'에 대해 알지 못했습니다 – Felix

0

FY 나는 ant를 사용하여 내 응용 프로그램 중 하나를 빌드 할 때 동일한 오류 메시지를 가져올 수있었습니다. 그러나 제 경우에는 libs 폴더에 2 개의 jar 파일 버전을 남겼습니다. 두 jar 파일은 문제를 일으킨 수정 된 개미 스크립트 (권장 사항 : Can't build and run an android test project created using "ant create test-project" when tested project has jars in libs directory 기반)에 포함되어 있습니다. 제 이클립스 프로젝트는 지정된 2 개의 라이브러리 중 하나만 가지고 있으므로 문제가 발생하지 않았습니다.

내 솔루션은 간단하고 효과적이었습니다. 2 개의 jar 파일 중 하나를 .jazz라는 다른 확장자로 바꿨으며, ant를 사용하여 프로젝트를 성공적으로 빌드 할 수있었습니다.

1

동일한 문제가있었습니다.

내 작업 솔루션 :
1 개미 청소, 덱스 오류를 제거하는 것은
2 (오류 AADT?) 프로젝트를 이클립스에 libs와의 및 .jar를 추가

나는 아무런 문제가 사용할 때 proguard 설정에.

+0

개미 청소 방법을 어떻게 생각합니까? –

0

참고로 우리는/libs/폴더에 jar가 걸려서이 문제가 발생했습니다. 이클립스에서는 모든 것이 잘 구현되었지만, 빌드 슬레이브는 중복 클래스 정의에 대해 불평했다. 일반 .java와 동일한 클래스가 있었고/libs /의 .jar 파일은 빌드 경로에 포함되어 있지 않았지만 Jenkins 빌드 서버의 ant 빌드 스크립트처럼 보였습니다. /libs /에서 삭제했습니다. 모든 것이 정상으로 돌아 왔습니다.

0

같은 라이브러리의 인스턴스가 여러 개 빌드 경로에 포함되어있는 경우 이런 일이 발생합니다.

관련 문제