1

Android アプリケーションで mapsfoge/graphhopper を使用する可能性を探っていますが、graphhopper でテストをコンパイルすることができません。

調査に基づいて、問題は 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'
}

問題は、mapsforge-android が依存している svg-android にあるようです。奇妙なのは、mapsforge-map-android を使用するだけで、アプリが準拠して正常に動作することです。また、mapsforge がグラフホッパー経由で取り込まれたため、gradle.build ファイルから mapsforge-map-android 行を削除しようとしましたが、まだ運がありません。

これを解決するための助けをいただければ幸いです。

4

3 に答える 3

2

問題の修正方法の更新:

何が起こっているのかを正確に追跡することができなかったので、次のことを単純に理解してください: 私の回避策 (ただし、これは github docs に従って推奨される方法であることに注意してください)。

最終的に、github から最新のコードを取得し、それを (シェル スクリプトを介して) jar ファイルにコンパイルしました。これにより、graphhopper-0.4-SHAPSHOT-android.jar と slf4j-android-1.6.1-RC1.jar が作成され、プロジェクトの libs ディレクトリに配置されます。

注: この問題は、Maven Central にプッシュされていない、Github の現在のマスター ブランチにマージされた更新がある可能性があると思います。グラフホッパー ライブラリの .3 は使用できません。また、これが中央リポジトリにある唯一のバージョンであるため、私が試みたように、build.gradle にグラフホッパーを追加することはできません。

于 2014-10-01T16:43:25.703 に答える