2014-09-19 2 views
1

안드로이드 응용 프로그램에서 mapsfoge/graphhopper를 사용할 가능성을 모색 중입니다. 그러나 graphhopper로 컴파일 할 수는 없습니다.안드로이드 스튜디오의 Graphhopper 0.3 컴파일되지 않음 : Dex 예외

연구 결과에 따르면, 문제는 graphhopper 및 mapsforge 내의 종속성과 관련이 있다고 생각합니다.

Execution failed for task ':app:dexDebug'. 
Error Code: 
    2 
Output: 

UNEXPECTED TOP-LEVEL EXCEPTION: 
com.android.dex.DexException: Multiple dex files define Lcom/applantation/android/svg/ParserHelper; 
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) 
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) 
    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) 

내 응용 프로그램의 builde.gradle : 여기

는 예외

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.1.0" 

    defaultConfig { 
     applicationId "com.test.maptest" 
     minSdkVersion 10 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:19.1.0' 
    compile 'org.mapsforge:mapsforge-map-android:0.4.3' 
    compile 'com.graphhopper:graphhopper-android:0.3' 
} 

문제가 SVG-안드로이드, mapsforge - 안드로이드에 의해 의존되어 함께 것 같습니다. 이상한 점은 mapsforge-map-android를 사용하면 앱이 정상적으로 작동하고 올바르게 실행된다는 것입니다. 또한 mapsforge가 graphhopper를 통해 가져 왔으므로 gradref.build 파일에서 mapsforge-map-android 줄을 제거하려고 시도했지만 여전히 운이 없습니다.

이 문제를 해결하는 데 많은 도움을 주실 수 있습니다.

+0

graphhopper-android, graphhopper에 의존해서는 안됩니다. 우리의 안드로이드 앱처럼 로깅과 OSM 작업을 일부 제외 할 수도 있습니다. https://github.com/graphhopper/graphhopper/blob/master/android/pom.xml#L37 – Karussell

+0

감사합니다. 나는 github에서 최신 소스를 다운로드하고, 항아리를 포장 한 다음 프로젝트에 포함될 libs 디렉토리에 이들 소스를 고착하여 수정했다. – SjB

답변

2

내가 문제를 해결하는 방법에 대한 업데이트가 :

내가 무슨 일이 일어 정확히 추적, 그래서 단순히 그것이 무엇인지 다음을 할 수 없습니다 :주의 할지라도 내 작품을 주위에 (이것은이다 github 문서에 따라 일을하는 것이 좋습니다).

github에서 최신 코드를 가져 와서 jar 파일로 컴파일했습니다 (쉘 스크립트를 통해). 이것은 graphhopper-0.4-SHAPSHOT-android.jar와 slf4j-android-1.6.1-RC1.jar 파일을 생성하고이를 프로젝트의 libs 디렉토리에 저장합니다.

참고 : Maven Central에 푸시되지 않은 Github의 현재 마스터 분기에 병합 된 업데이트가있을 수 있습니다. Graphhopper 라이브러리의 .3은 사용할 수 없으며, 중앙 저장소의 유일한 버전이기 때문에 시도했던 것처럼 build.gradle에 graphhopper를 추가 할 수 없습니다.

1

나는 그걸 가지고 조금 놀았으며 여기에 결과가 있습니다.

compile 'org.mapsforge:mapsforge-map-android:0.5.0-rc1' 
compile ('com.graphhopper:graphhopper:0.3') { 
    exclude group: 'log4j', module: 'log4j' 
    exclude group: 'org.slf4j', module: 'slf4j-log4j12' 
    exclude group: 'org.slf4j', module: 'slf4j-api' 
    exclude group: 'com.google.protobuf', module: 'protobuf-java' 
    exclude group: 'org.openstreetmap.osmosis', module: 'osmosis-osm-binary' 
    exclude group: 'org.apache.xmlgraphics', module: 'xmlgraphics-commons' 
} 
0

내가 그것을 고정 @Blehi 응답 할 수있는 동일한 문제 및 감사했다 : 좋은 것은 당신이 소스를 컴파일 할 필요가 없다는 것입니다. 문제는 주로 Android Studio가 제외 그룹을 올바르게 처리하지 못한다는 사실에있었습니다. 그래서 0.3 버전의 그래프 호퍼는 다음과 같습니다.

dependencies { 
    compile files('libs/mapsforge-core-0.4.3.jar') 
    compile files('libs/mapsforge-map-0.4.3.jar') 
    compile files('libs/mapsforge-map-android-0.4.3.jar') 
    compile files('libs/mapsforge-map-reader-0.4.3.jar') 
    compile files('libs/slf4j-android-1.6.1-RC1.jar') 
    compile ('com.graphhopper:graphhopper:0.3') { 
     exclude group: 'log4j', module: 'log4j' 
     exclude group: 'org.slf4j', module: 'slf4j-log4j12' 
     exclude group: 'org.slf4j', module: 'slf4j-api' 
     exclude group: 'com.google.protobuf', module: 'protobuf-java' 
     exclude group: 'org.openstreetmap.osmosis', module: 'osmosis-osm-binary' 
     exclude group: 'org.apache.xmlgraphics', module: 'xmlgraphics-commons' 
    } 
} 
관련 문제