Android ADT에서 제공하는
IsLibrary를 사용하여, Build 후 Link 과정 중에 발생하는 문제 입니다.
ADT Version : 16.0.1
SDK Version : Android 2.2
IDE Version : Eclipse Indigo
Build All 후에 Console에서 Launching 과정 중 다음과 같은 오류가 발생합니다.
eclipse.buildId=M20120208-0800
java.version=1.6.0_25
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=ko_KR
Command-line arguments: -os win32 -ws win32 -arch x86
Error
Mon Jun 11 16:26:47 KST 2012
Unable to execute dex: java.lang.AssertionError. Check the Eclipse log for stack trace.
java.lang.AssertionError
at com.android.dx.dex.code.OutputFinisher.findExpandedOpcodeForInsn(OutputFinisher.java:525)
at com.android.dx.dex.code.OutputFinisher.calculateReservedCount(OutputFinisher.java:466)
at com.android.dx.dex.code.OutputFinisher.reserveRegisters(OutputFinisher.java:402)
at com.android.dx.dex.code.OutputFinisher.finishProcessingAndGetList(OutputFinisher.java:358)
at com.android.dx.dex.code.DalvCode.finishProcessingIfNecessary(DalvCode.java:108)
at com.android.dx.dex.code.DalvCode.getInsns(DalvCode.java:185)
at com.android.dx.dex.file.CodeItem.place0(CodeItem.java:223)
at com.android.dx.dex.file.OffsettedItem.place(OffsettedItem.java:242)
at com.android.dx.dex.file.MixedItemSection.placeItems(MixedItemSection.java:312)
at com.android.dx.dex.file.DexFile.toDex0(DexFile.java:543)
at com.android.dx.dex.file.DexFile.toDex(DexFile.java:216)
at com.android.dx.command.dexer.Main.writeDex(Main.java:574)
at com.android.dx.command.dexer.Main.run(Main.java:218)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:179)
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:745)
at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:634)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:321)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:396)
at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
at org.eclipse.core.internal.resources.Project.build(Project.java:124)
at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:961)
at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:146)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:937)
at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1141)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
일단 메소드 갯수가 65535 개를 넘지 않았습니다.
isLibrary를 기존 것에서 한개 더 추가한 이후에 발생하는 문제 입니다.
혹시 해결법을 아시는 분이 있으시면
부탁드립니다.




자답 입니다.
각 Project Library 중 resource 가 포함된 경우,
다음과 같이 해서 일단 조취를 취했습니다.
1. 사용하지 않는 Resource 파일 제거
2. 사용하지 않는 Resource Data 제거
3. Resource Prefix 적용
4. Resource 포함하지 않은 같은 범위에 Project Library 통합
이상입니다.
임시 방편으로 보이며, 지속적으로 원인을 파악 중 입니다...
도움이 되셨으면 합니다.