4

Android 프로젝트에 Facebook SDK를 통합하려하지만 그렇게 할 수 없습니다. 나는 페이스 북 문서에 언급 된 단계를 따랐다. 하지만 오류가 나타납니다 -Android Studio와 Facebook SDK 통합

FAILURE : 예외가 발생하여 빌드가 실패했습니다.

* What went wrong: 
Execution failed for task ':dexDebug'. 
> com.android.ide.common.internal.LoggedErrorException: Failed to run command: 
    /Applications/Android Studio.app/sdk/build-tools/19.1.0/dx --dex --num-threads=4 --output /Volumes/Data/projects/project_name/build/intermediates/dex/debug /Volumes/Data/projects/project_name/build/intermediates/classes/debug /Volumes/Data/projects/project_name/build/intermediates/dependency-cache/debug /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/bolts-57446fde6c024f562e020fd9e003407a5fc2a578.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/bugsense-3.5-8ab33d75af263f7f86f49230e10099a1c2c9a549.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-0523eab2b91bd947bf3140cde551a15ef204bab4.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-1bf58233e09b0ba3df3b170e5976ea8835ce9dbc.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-50cb56f46834855caa39a5bee8fee3da46d5c1eb.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-5656b1a26fb9cf46c5e761b517ec752c47e7afe7.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/classes-d98d71fc376b8658355216fd82eb5433791f3b1d.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/custom-linkedin-j-android-46399e5197dc53ee00e0370db8440536b745b26a.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/droidText.0.5-809fa4af200fcd621ea1d4d33c187c85ccfb4721.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/gson-2.2.4-1f9beaae96795dd030e7971a8a89b53987904e64.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/libGoogleAnalyticsServices-969197b4a3de6e6538e72f3e6d598b94488ccd57.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/Parse-1.5.0-e86e2456aff7f83bdad45e275836d6a3e12c84c9.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/signpost-commonshttp4-1.2.1.1-ad7399087713b6c6e45b1e45950da833fcc81870.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/signpost-core-1.2.1.1-50384ca3c3962abba499d71f329139d20bac4475.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/signpost-jetty6-1.2.1.1-96a3b59a9846e0434e4213c2f1c063549d7f2b83.jar /Volumes/Data/projects/project_name/build/intermediates/pre-dexed/debug/support-v4-19.0.1-3bf117e59e2e0f41bbf9219f2be90cdcf1dd583d.jar 
    Error Code: 
    2 
    Output: 

    UNEXPECTED TOP-LEVEL EXCEPTION: 
    com.android.dex.DexException: Cannot merge new index 67781 into a non-jumbo instruction! 
     at com.android.dx.merge.InstructionTransformer.jumboCheck(InstructionTransformer.java:108) 
     at com.android.dx.merge.InstructionTransformer.access$800(InstructionTransformer.java:25) 
     at com.android.dx.merge.InstructionTransformer$StringVisitor.visit(InstructionTransformer.java:71) 
     at com.android.dx.io.CodeReader.callVisit(CodeReader.java:114) 
     at com.android.dx.io.CodeReader.visitAll(CodeReader.java:89) 
     at com.android.dx.merge.InstructionTransformer.transform(InstructionTransformer.java:48) 
     at com.android.dx.merge.DexMerger.transformCode(DexMerger.java:840) 
     at com.android.dx.merge.DexMerger.transformMethods(DexMerger.java:811) 
     at com.android.dx.merge.DexMerger.transformClassData(DexMerger.java:783) 
     at com.android.dx.merge.DexMerger.transformClassDef(DexMerger.java:680) 
     at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:540) 
     at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) 
     at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
     at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 
     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 
     at com.android.dx.command.dexer.Main.run(Main.java:230) 
     at com.android.dx.command.dexer.Main.main(Main.java:199) 
     at com.android.dx.command.Main.main(Main.java:103) 

이 내 페이스 북 Gradle을 파일

dependencies { 
    compile 'com.android.support:support-v4:13.0.0' 
    compile files('libs/bolts.jar') 
} 

이며,이 내 프로젝트 Gradle을 파일

dependencies { 
    compile fileTree(dir: 'libs', include: '*.jar') 
    compile project(':libraries:actionbarsherlock') 
    compile project(':libraries:sliding-menu') 
    compile project(':libraries:cwac-touchlist') 
    compile files('libs/Parse-1.5.0.jar') 
    compile 'com.bugsense.trace:bugsense:3.5' 
    compile files('libs/gson-2.2.4.jar') 
    compile project(':facebook') 
} 

이 어떤 제안입니까? 다른 정보가 필요하면 알려주십시오.

답변

1

Android 애플리케이션에는 dex 도구가 Java 클래스 파일을 가져 와서 Android 기기가 직접 실행할 수있는 형식으로 변환하는 빌드 단계가 있습니다. 출력 파일 형식에는 제한이 있습니다. 그 중 하나는 옵션이 "점보 모드"를 켜기로 설정되어 있지 않으면 파일에 포함될 수있는 문자열의 수를 제한하는 것입니다. 점보 모드를 켜도록 플래그를 설정할 수 있습니다.이 오류로 인해 도움이 될 수 있지만 다른 제한도 가까워 질 수 있습니다 (특히 응용 프로그램에있을 수있는 메서드의 총 수에 제한이 있습니다 , 당신이 그것을 여러개의 dex 파일들로 분리하지 않는다면). 당신이 미래의 오류를 보게되면, 그 선을 따라 연구를하십시오. 어떤 경우

는 점보 모드를 사용하는 오류를 보내고 모듈의 build.gradle 파일의 android 블록이 퍼팅 시도 :

dexOptions { 
    jumboMode = true 
} 
3

당신은 확인할 수 있습니다 경우 동일한 JAR 다시 가져오고 있습니다. 다른 항아리에 수입되는 항아리 안에 클래스가 있다고 가정 해보십시오. 그래서 모든 lib/class 파일이 두 번 포함되어 있는지 확인하십시오.

또는 그냥 jar 파일을 가져 귀하의 경우이를 제거하려고 수 있고, 그 중 하나가 오류를 만드는보고, 한 번에 하나를 추가 할 수 있습니다. 필자의 경우, 나는 그랬고, 내가 마지막으로 가져 왔을 때, 앱은 컴파일을했다. 그래서 저는 생각하기에, 저는 아마도 한 번에 많은 사람들에게 수입되었습니다. 그리고 그것은 진짜 문제였습니다. 그러나 이제는 모두 작동합니다.