Добавление библиотеки в Android Studio делает «НЕОЖИДАННОЕ ИСКЛЮЧЕНИЕ ТОП-УРОВНЯ»

1

Я пытаюсь добавить библиотеки из maven, в частности, библиотеки Crouton. Я могу добавить его, синхронизировать и использовать объект Crouton в моем проекте, но при попытке запустить приложение, я получаю это

FAILURE: Build failed with an exception.

    * What went wrong:
    Execution failed for task ':timetable:preDexDebug'.
    > com.android.ide.common.internal.LoggedErrorException: Failed to run command:
        C:\Program Files (x86)\Android\android-studio\sdk\build-tools\19.0.1\dx.bat --dex --output D:\Developer\TimeTable3\timetable\build\pre-dexed\debug\crouton-library-1.8.2-c968ce53b92080dec516373cec51e9993ca5051f.jar C:\Users\Shahar\.gradle\caches\modules-2\files-2.1\de.keyboardsurfer.android.widget\crouton-library\1.8.2\725b0873131748c8c1bf2e1a27465e5bea857ab3\crouton-library-1.8.2.jar
    Error Code:
        1
    Output:



error:

    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dx.cf.iface.ParseException: class name (de/keyboardsurfer/android/widget/crouton/Configuration$1) does not match path (release/de/keyboardsurfer/android/widget/crouton/Configuration$1.class)
        at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520)
        at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
        at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
        at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
        at com.android.dx.command.dexer.Main.processClass(Main.java:665)
        at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
        at com.android.dx.command.dexer.Main.access$600(Main.java:78)
        at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
        at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
        at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
        at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
        at com.android.dx.command.dexer.Main.processOne(Main.java:596)
        at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
        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)
    ...while parsing release/de/keyboardsurfer/android/widget/crouton/Configuration$1.class

EDIT: gradle добавлен файл

это мой gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android'

android {
    compileSdkVersion 15
    buildToolsVersion '19.0.1'

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:support-v4:+'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile 'de.keyboardsurfer.android.widget:crouton-library:1.8.2'
    compile files('libs/ActiveAndroid.jar')
}

если я использую все три без "de.keyboardsurfer.android.widget: crouton-library: 1.8.2" то все работает нормально.

  • 0
    То, что вы делаете, кажется довольно простым, но не могли бы вы поделиться всем своим файлом build.gradle?
  • 0
    конечно, редактирование сейчас.
Показать ещё 1 комментарий
Теги:
maven
android-studio
crouton

3 ответа

2
Лучший ответ

Да, сборка была сломана. Я не заметил его локально. Но благодаря вам это исправлено и развернуто на центральном уровне. Очистите кеш, чтобы получить новую версию 1.8.2.

  • 0
    новичок в Maven, как мне очистить кеш?
  • 1
    Обычно с помощью флага -U .
2

Похоже, что библиотека crouton неправильно упакована. Если вы изучите его содержимое:

jar -tf /Users/sbarta/.gradle/caches/modules-2/files-2.1/de.keyboardsurfer.android.widget/crouton-library/1.8.2/725b0873131748c8c1bf2e1a27465e5bea857ab3/crouton-library-1.8.2.jar 

META-INF/
META-INF/MANIFEST.MF
release/
release/de/
release/de/keyboardsurfer/
release/de/keyboardsurfer/android/
release/de/keyboardsurfer/android/widget/
release/de/keyboardsurfer/android/widget/crouton/
release/de/keyboardsurfer/android/widget/crouton/Configuration$1.class
release/de/keyboardsurfer/android/widget/crouton/Configuration$Builder.class
release/de/keyboardsurfer/android/widget/crouton/Configuration.class
release/de/keyboardsurfer/android/widget/crouton/Crouton.class
release/de/keyboardsurfer/android/widget/crouton/DefaultAnimationsBuilder.class
release/de/keyboardsurfer/android/widget/crouton/LifecycleCallback.class
release/de/keyboardsurfer/android/widget/crouton/Manager$1.class
release/de/keyboardsurfer/android/widget/crouton/Manager$Messages.class
release/de/keyboardsurfer/android/widget/crouton/Manager.class
release/de/keyboardsurfer/android/widget/crouton/Style$1.class
release/de/keyboardsurfer/android/widget/crouton/Style$Builder.class
release/de/keyboardsurfer/android/widget/crouton/Style.class
release/de/keyboardsurfer/mobile/
release/de/keyboardsurfer/mobile/app/
release/de/keyboardsurfer/mobile/app/android/
release/de/keyboardsurfer/mobile/app/android/widget/
release/de/keyboardsurfer/mobile/app/android/widget/crouton/
release/de/keyboardsurfer/mobile/app/android/widget/crouton/BuildConfig.class

Все находится внутри каталога release, но на основе сообщения об ошибке Configuration$1.class находится в пакете de.keyboardsurfer.android.widget.crouton (без release). Вы можете связаться с автором библиотеки, или вы можете разобрать банку, вытащить все, что находится внутри каталога release на один уровень, и переупаковать его.

1

Неверная упаковка для библиотеки в репозитории maven. Таким образом, к моменту, когда это исправлено автором, вы можете использовать эту библиотеку как модуль, загрузив и добавив ее в свою структуру проекта.

Путь https://github.com/keyboardsurfer/Crouton

Я сообщил об этом автору Бенджамину Вайсусу в Google плюс относительно того же.

  • 0
    Большое спасибо. Я не получил уведомление о G +, но исправил проблему и распространил изменения в Maven Central. Так что исправление должно быть доступно в ближайшее время.
  • 1
    Хорошо, спасибо, я отправил вам сообщение в личном чате.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню