안드로이드 응용 프로그램에서 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 줄을 제거하려고 시도했지만 여전히 운이 없습니다.
이 문제를 해결하는 데 많은 도움을 주실 수 있습니다.
graphhopper-android, graphhopper에 의존해서는 안됩니다. 우리의 안드로이드 앱처럼 로깅과 OSM 작업을 일부 제외 할 수도 있습니다. https://github.com/graphhopper/graphhopper/blob/master/android/pom.xml#L37 – Karussell
감사합니다. 나는 github에서 최신 소스를 다운로드하고, 항아리를 포장 한 다음 프로젝트에 포함될 libs 디렉토리에 이들 소스를 고착하여 수정했다. – SjB