如何在IntelliJ IDEA中添加库(android-support-v7-appcompat)

时间:2013-08-02 20:53:25

标签: android intellij-idea gradle android-support-library

我创建了一个项目,复制了项目中的资源文件,库,将其添加到项目结构中,规定了样式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)

请帮帮我。今天花了一整天。

9 个答案:

答案 0 :(得分:112)

使用Gradle

如果您使用的是Gradle,则可以将其添加为compile依赖项。

说明

  1. 确保安装了Android Support Repository SDK包。 Android Studio在构建过程中自动识别此存储库(不确定简单的IntelliJ)。

    Android Support Repository

  2. 将依赖项添加到{project}/build.gradle

    dependencies {
        compile 'com.android.support:appcompat-v7:+'
    }
    
  3. 点击Sync Project with Gradle Files按钮。

  4. 编辑Adding libraries with resources -> Using Android Studio下的documentation上显示了相同的说明。

答案 1 :(得分:83)

没有Gradle(Click here for the Gradle solution

  1. Create a support library project

  2. 从Eclipse项目将您的库项目导入Intellij(此步骤仅适用于您在Eclipse中创建库的情况)。

  3. 右键单击模块,然后选择“打开模块设置”。

  4. 设置v7 jar文件的库 Setup libraries of v7 jar file

  5. 设置v7的库模块 Setup library module of v7

  6. 设置v7库模块的app模块依赖关系 Setup app module dependency of v7 library module

答案 2 :(得分:10)

使用Maven

首先,您应该使用Maven Android SDK Deployer

将android库安装到本地maven存储库

然后你可以像这样添加对你的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>

答案 3 :(得分:4)

这是我的解决方案:

  1. 将$ ANDROID_SDK / extras / android / support / v7 / appcompat复制并粘贴到您的项目ROOT

  2. 打开&#34;项目结构&#34;在Intellij上,点击&#34;模块&#34;在&#34;项目设置&#34;上,然后点击&#34; appcompat&#34; - &gt;&#34; android&#39;,确保&#34;图书馆模块&#34;选中复选框。

  3. 点击&#34; YOUR-PROJECT_NAME&#34;在&#34; appcompat&#34;,删除&#34; android-support-v4&#34;和&#34; android-support-v7-compat&#34 ;;确保&#34; appcompat&#34;之前的复选框;检查。然后,点击&#34;确定&#34;关闭&#34;项目结构&#34;对话。

  4. 返回主窗口,点击&#34; appcompat&#34; - &gt;&#34; libs&#34;在左上角的项目区域。右键单击&#34; android-support-v4&#34;,选择menuitem&#34;添加为库&#34;,更改&#34;添加到模块&#34;到&#34;你的项目&#34;。与&#34; android-support-v7-compat&#34;。

  5. 相同

    完成上述操作后,intellij应该能够正确找到android-support-XXXX模块。

    祝你好运!

答案 4 :(得分:3)

maven 的另一个解决方案(对我来说是一个更好的解决方案)是使用本地android SDK中包含的maven存储库。要做到这一点,只需在你的pom中添加一个新的存储库,指向本地android SDK:

<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>

答案 5 :(得分:3)

另一个简单的解决方案是将这些行粘贴到build.gradle文件

dependencies {

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

答案 6 :(得分:1)

作为图书馆计划

您应该按照http://developer.android.com/tools/support-library/setup.html

在库项目中添加资源
  

部分&gt;使用资源添加库

然后在工作区中添加android-support-v7-appcompat库,然后将其添加为应用项目的参考。

定义应用项目中的所有资源也会起作用(但是要添加很多定义并且您错过了其中的一些定义),这不是推荐的方法。

答案 7 :(得分:0)

这是我的解决方案,它与前一个解决方案非常相似:

<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 而不是存储库

答案 8 :(得分:0)

作为对Austyn Mahoney's answer的更新,配置'compile'已过时,已被'implementation'和'api'取代。

它将在2018年底删除。有关更多信息,请参见here