android - Android Studio 中的 Graphhopper 0.3 未编译 : Dex Exception

标签 android dex graphhopper mapsforge

我正在探索在 Android 应用程序中使用 mapsfoge/graphhopper 的可能性,但无法通过 graphhopper 进行编译测试。

根据研究,我认为问题在于 graphhopper 和 mapsforge 之间的依赖关系。

异常(exception)情况:

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-android 上,它被 mapsforge-android 所依赖。奇怪的是,如果我只使用 mapsforge-map-android,应用程序可以正常运行。我也尝试从我的 gradle.build 文件中删除 mapsforge-map-android 行,因为 mapsforge 是通过 graphhopper 引入的,但仍然没有成功。

如果能帮助解决这个问题,我们将不胜感激!

最佳答案

关于我如何解决问题的更新:

我无法准确追踪发生的事情,所以请简单理解以下内容:我的工作(但请注意,根据 github 文档,这是推荐的做事方式)。

我最终从 github 上获取了最新的代码,将其编译成 jars(通过 shell 脚本)。这将创建一个 graphhopper-0.4-SHAPSHOT-android.jar 和 slf4j-android-1.6.1-RC1.jar,我将它们放在项目的 libs 目录中。

注意:我认为问题可能出在 Github 上合并到当前 master 分支的更新尚未推送到 Maven Central。您不能使用 graphhopper 库的 .3,因为这是中央存储库中的唯一版本,您无法像我尝试的那样将 graphhopper 添加到您的 build.gradle。

关于android - Android Studio 中的 Graphhopper 0.3 未编译 : Dex Exception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939873/

相关文章:

android - 如何使用Gradle将其他参数传递给transformClassesWithDexForDebug?

Graphhopper - 如何设置路由配置文件 'foot'

java - 使用 GraphHopper 和 jsprit 构建矩阵

android - 智能手机固件能否嗅探 Android 手机的传出 HTTP 请求?

android - 如何更改带分隔符的 ListView 的 listSeparatorTextViewStyle 颜色

java - 是否可以在 android listview 分隔符中添加 xml 布局?

java - 如何在 Android 上获取短信中的号码?

android - 组装一个dex文件

android - 比 Lollipop 更旧的 API 超过了 64k 限制,但不是更新的

android - Graphhopper 行人路线 android