Как добавить библиотеку (android-support-v7-appcompat) в IntelliJ IDEA

Я создал проект, скопировал файлы ресурсов в проекте, библиотеку, добавил его в структуру проекта, задал стиль Theme.AppCompat. Скомпилирован без ошибок, но когда вы начинаете исключение вылета:

08-03 00:50:00.406: ERROR/AndroidRuntime(4055): FATAL EXCEPTION: main
        java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$styleable
        at android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.java:98)
        at android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.java:58)
        at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:98)
        at com.example.SampleMetrRost.CentralActivity.onCreate(CentralActivity.java:12)
        at android.app.Activity.performCreate(Activity.java:4636)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1051)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1924)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
        at android.app.ActivityThread.access$600(ActivityThread.java:127)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4476)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:816)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:583)
        at dalvik.system.NativeStart.main(Native Method)

Помогите мне, пожалуйста. Проводили весь день сегодня.

Ответ 1

Без Gradle (Нажмите здесь для решения Gradle)

  • Создать проект библиотеки поддержки.

  • Импортируйте проект библиотеки в Intellij из проекта Eclipse (этот шаг применим только в том случае, если вы создали свою библиотеку в Eclipse).

  • Щелкните правой кнопкой мыши по модулю и выберите "Открыть настройки модуля".

  • Установки библиотек файла v7 jar Setup libraries of v7 jar file

  • Модуль библиотеки установки v7 Setup library module of v7

  • Настройка модуля приложения модуля модуля v7 Setup app module dependency of v7 library module

Ответ 2

Использование Gradle

Если вы используете Gradle, вы можете добавить его как зависимость compile.

Инструкции

  • Убедитесь, что установлен пакет Android Support Repository SDK. Android Studio автоматически распознает этот репозиторий во время процесса сборки (не уверен в простой IntelliJ).

    Android Support Repository

  • Добавьте зависимость от {project}/build.gradle

    dependencies {
        compile 'com.android.support:appcompat-v7:+'
    }
    
  • Нажмите кнопку Sync Project with Gradle Files.

EDIT. Похоже, эти же инструкции содержатся в документации в разделе Adding libraries with resources -> Using Android Studio.

Ответ 3

Использование Maven

Прежде всего, вы должны установить библиотеки Android в локальный репозиторий maven с помощью Maven Android SDK Deployer

Затем вы можете добавить зависимость к вашему pom, как это:

    <dependency>
        <groupId>android.support</groupId>
        <artifactId>compatibility-v7-appcompat</artifactId>
        <version>${compatibility.version}</version>
        <type>apklib</type>
    </dependency>

    <dependency>
        <groupId>android.support</groupId>
        <artifactId>compatibility-v7-appcompat</artifactId>
        <version>${compatibility.version}</version>
        <type>jar</type>
    </dependency>

Ответ 4

Это мое решение:

  • Скопируйте и вставьте $ANDROID_SDK/extras/android/support/v7/appcompat в свой проект ROOT

  • Откройте "Структура проекта" в Intellij, нажмите "Модули" в "Настройки проекта", затем нажмите "appcompat" → "android", убедитесь, что установлен флажок "Библиотечный модуль".

  • нажмите "YOUR-PROJECT_NAME" в разделе "appcompat", удалите "android-support-v4" и "android-support-v7-compat"; установите флажок перед проверкой "appcompat". И нажмите "ok", чтобы закрыть диалог "Структура проекта".

  • вернитесь к главному окну, нажмите "appcompat" → "libs" в верхней левой области проекта. Щелкните правой кнопкой мыши "android-support-v4", выберите menuitem "Добавить как библиотеку", измените "Добавить в модуль" на "Ваш-проект". То же самое с поддержкой android-support-v7-compat.

После выполнения выше, intellij должен иметь возможность правильно находить модули android-support-XXXX.

Удачи!

Ответ 5

Другим решением для maven (и лучшим решением для меня как минимум) является использование репозитория maven, включенного в локальный SDK для Android. Для этого просто добавьте новый репозиторий в свой pom, указав на локальный SDK Android.

<repository>
    <id>android-support</id>
    <url>file://${env.ANDROID_HOME}/extras/android/m2repository</url>
</repository>

После добавления этого репозитория вы можете добавить стандартную зависимость Google следующим образом:

<dependency>
    <groupId>com.android.support</groupId>
    <artifactId>support-v13</artifactId>
    <version>${support-v13.version}</version>
</dependency>

<dependency>
    <groupId>com.android.support</groupId>
    <artifactId>appcompat-v7</artifactId>
    <version>${appcompat-v7.version}</version>
    <type>aar</type>
</dependency>

Ответ 6

Еще одно простое решение - вставить эту строку в файл build.gradle

dependencies {

    //import of gridlayout
    compile 'com.android.support:gridlayout-v7:19.0.0'
    compile 'com.android.support:appcompat-v7:+'
}

Ответ 7

Как проект библиотеки

Вы должны добавить ресурсы в проект библиотеки в соответствии с http://developer.android.com/tools/support-library/setup.html

Раздел > Добавление библиотек с ресурсами

Затем вы добавляете библиотеку android-support-v7-appcompat в рабочую область, а затем добавляете ее в качестве ссылки на проект приложения.

Также будет работать определение всех ресурсов вашего проекта приложения (но есть много определений, которые нужно добавить, и вы пропустили некоторые из них), и это не рекомендуется.

Ответ 8

Это мое решение, оно очень похоже на предыдущее:

<dependency>
        <groupId>com.google.android</groupId>
        <artifactId>support-v7</artifactId>
        <scope>system</scope>
        <systemPath>${android.home}/support/v7/appcompat/libs/android-support-v7-appcompat.jar</systemPath>
        <version>19.0.1</version>
</dependency>

Где {android.home} является корневым каталогом Android SDK, и он использует systemPath вместо репозитория.