我正在探索在android應用程序中使用mapsfoge/graphhopper的可能性,但無法使用graphhopper編譯測試。Android Studio中的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,那麼該應用程序符合並運行良好。我也嘗試從gradle.build文件中刪除mapsforge-map-android行,因爲mapsforge是通過graphhopper引入的,但仍然沒有運氣。
任何幫助解決此問題將不勝感激!
您不應該依賴graphhopper-android,只需要graphhopper。並可能排除一些日誌記錄和OSM的東西,就像我們爲我們的Android應用程序:https://github.com/graphhopper/graphhopper/blob/master/android/pom.xml#L37 – Karussell 2014-09-25 12:59:43
謝謝。我最終通過從github下載最近的源代碼,打包jar包,然後將它們放在我的libs目錄中以包含在項目中來修復它。 – SjB 2014-09-29 15:39:56