Как добавить библиотеку (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
-
Создать проект библиотеки поддержки.
-
Импортируйте проект библиотеки в 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 вместо репозитория.