Подтвердить что ты не робот

Android Studio - Импорт библиотеки Simple-Xml

Я схожу с ума со своей Android Studio IDE.

Я хочу добавить библиотеку Maven simple-xml из Central (v2.7.1)

  • Проект хорошо компилируется

  • Gradle имеет зависимость lib в своем build.gradle:

    dependencies {
      compile 'com.android.support:appcompat-v7:18.0.0'
      compile 'org.simpleframework:simple-xml:2.7.1'
    }
    
  • Экспортируется в настройках модуля Android Studio для простейшего xml lib:

Снимок экрана: http://s6.postimg.org/xxgj56zkx/Module_Settings.png

И я получил класс не найден, когда я запускаю свое приложение...

java.lang.NoClassDefFoundError: org.simpleframework.xml.core.Persister

Я потерялся, Похоже, что Gradle не упаковывает lib и зависимости в apk по некоторым причинам....

Любые идеи???

Edit1: моя версия Android Studio 0.2.13 (последняя), Gradle 0.5. +

Edit2: full build.gradle Я использую

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

    repositories {
        mavenCentral()
    }

    android {
        compileSdkVersion 17
        buildToolsVersion "17.0.0"

        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 18
        }
    }

    dependencies {
        compile 'com.android.support:appcompat-v7:18.0.0'
        compile 'org.simpleframework:simple-xml:2.7.1'
    }

4b9b3361

Ответ 1

Я нашел проблему.

Это был плагин graddle 0.5. +, как я и ожидал.

Теперь исправлена ​​проблема с Android Studio 0.3.0 с плагином gradle 0.6. + (Gradle 1.8).

Однако я сделал приложение для работы с Android Studio 0.2.13 и gradle плагин 0.5 следующим образом:

Поскольку плагин gradle отказывается от развертывания библиотеки из центра maven, я загрузил библиотеку и зависимости в каталог lib моего проекта. Я настраиваю проект на использование библиотеки в качестве локального в каталоге lib проекта.

Направления для обходного пути:

  • удалите все ссылки в моем проекте в simple-xml (maven central) в настройках модуля

  • Скопируйте файл simple-xml-2.7.1.jar, stax-1.2.0.jar, stax-api-1.0.1.jar и xpp3-1.1.3.3.jar в каталог lib в моем проекте

  • Выберите lib simple-xml-2.7.1.jar в моем проекте и импортируйте lib, используя контекстное меню Добавить в качестве библиотеки

  • Измените build.gradle следующим образом:

    зависимости {

    compile 'com.android.support:appcompat-v7:18.0.0'
    
    compile files('simple-xml-2.7.1.jar')
    

    }

Примечание. Не включайте зависимости, иначе они создадут конфликты с системой Android, как указано Grzegorz.

Ответ 2

Вы должны добавить библиотеку simple-xml следующим образом:

compile('org.simpleframework:simple-xml:2.7.1') {
    exclude group: 'stax', module: 'stax-api'
    exclude group: 'xpp3', module: 'xpp3'
}

Библиотеки stax-api и xpp3 противоречат классам Android. Классы из этих банок, кажется, включены в Android.

Оригинал dex был:

обработка ошибок "javax/xml/stream/events/StartElement.class":

Явное или ошибочное использование основного класса (java. * или javax. *), когда не создавая основную библиотеку.

Это часто происходит из-за непреднамеренного включения файла основной библиотеки в ваш проект приложения при использовании среды IDE (например, Eclipse). Если вы уверены, что вы не намеренно определяете основной класс, тогда это является наиболее вероятным объяснением того, что происходит.

Однако вы можете попытаться определить класс в ядре пространство имен, источник которого вы, возможно, взяли, например, из не-Android. Это, безусловно, не будет Работа. Как минимум, это ставит под угрозу совместимость вашего приложения с будущие версии платформы. Это также часто вызывает сомнения Законность.

Если вы действительно собираетесь создать основную библиотеку, которая только соответствующие как часть создания полного распространения виртуальной машины, в отличие от компиляции приложения, - затем используйте "--core-library" для подавления этого сообщения об ошибке.

Если вы продолжаете использовать "--core-library", но на самом деле приложения, то следует предупредить, что ваше приложение все равно будет строить или запускать, в какой-то момент. Пожалуйста, будьте готовы к сердитым клиентам которые, например, находят, что ваше приложение перестает функционировать один раз они обновляют свою операционную систему. Вы будете виноваты в этом проблема.

Если вы законно используете какой-то код, который находится в ядре пакет, тогда самая простая безопасная альтернатива у вас есть, чтобы переупаковать это код. То есть, переместите рассматриваемые классы в свой собственный пакет Пространство имен. Это означает, что они никогда не будут в конфликте с ядром системных классов. JarJar - это инструмент, который может помочь вам в этом начинании. Если вы обнаружите, что не можете этого сделать, это свидетельствует о том, что путь, на котором вы находитесь, в конечном итоге приведет к боли, страданиям, печали, и плач.

Ответ 3

Я получил ту же ошибку, используя maven с Android. Я исправил зависимость, и все сработало хорошо. Это моя зависимость для библиотеки simple-xml:

<dependency>
<groupId>org.simpleframework</groupId>
<artifactId>simple-xml</artifactId>
<version>2.7.1</version>
<scope>compile</scope>
<exclusions>
    <exclusion>
        <artifactId>xpp3</artifactId>
        <groupId>xpp3</groupId>
    </exclusion>
    <exclusion>
        <artifactId>stax-api</artifactId>
        <groupId>stax</groupId>
    </exclusion>
    <exclusion>
        <artifactId>stax</artifactId>
        <groupId>stax</groupId>
    </exclusion>
    <exclusion>
        <artifactId>spring-web</artifactId>
        <groupId>org.springframework</groupId>
    </exclusion>
    <exclusion>
        <artifactId>commons-logging</artifactId>
        <groupId>commons-logging</groupId>
    </exclusion>
</exclusions>
</dependency>