【问题标题】:How do I add a library (android-support-v7-appcompat) in IntelliJ IDEA如何在 IntelliJ IDEA 中添加库 (android-support-v7-appcompat)
【发布时间】:2013-08-04 06:11:52
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

作为Austyn Mahoney's answer 的更新,配置“编译”已过时,已被“实现”和“API”取代。

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

【讨论】:

    【解决方案2】:

    ma​​ven 的另一个解决方案(至少对我来说是一个更好的解决方案)是使用本地 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>
    

    【讨论】:

      【解决方案3】:

      没有 Gradle (Click here for the Gradle solution)

      1. Create a support library project

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

      3. 右键单击模块并选择打开模块设置。

      4. v7 jar 文件的设置库

      5. 设置 v7 的库模块

      6. 设置v7库模块的app模块依赖

      【讨论】:

      • 非常非常感谢,非常有帮助。
      • 这至少为我节省了几个小时。非常感谢!
      • 您能否详细说明如何进入第 5 步?非常感谢...谢谢!
      • @SiGanteng 第 5 步实际上是在您执行第 1 步和第 2 步时自动完成的
      【解决方案4】:

      使用 Gradle

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

      说明

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

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

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

      编辑:在documentationAdding libraries with resources -&gt; Using Android Studio 下似乎有这些相同的说明。

      【讨论】:

      • 谢谢,但我不使用 Gradle。我没有在 IntelliJ IDEA 中编程的 Android Studio
      • 我主要是添加这个以防其他人发现您的问题并使用 Gradle。如果有人拥有 IntelliJ 的 Android 插件并使用 Gradle,这应该可以工作。
      • 感谢添加。您是否曾经将支持库添加到 android 库项目并尝试根据 android 库项目运行应用程序?编译时我似乎总是得到一个“已经添加”的异常。不知道为什么 - 它只添加到库项目中。
      • 记录在案:它与普通 IntelliJ 的工作方式相同。完成安装“Android 支持存储库”后,您只需要“制作项目”即可。
      • @Eggman87 我知道这已经晚了,但是在你的库项目中尝试com.android.support:support-v4:+。这将告诉它使用项目提供的任何版本。
      【解决方案5】:

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

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

      【讨论】:

      • 要求最新版本的 appcompat 不是一个好主意。相反,使用这个: compile 'com.android.support:appcompat-v7:{targetSdkVersion}.+'
      【解决方案6】:

      这是我的解决方案,和上一个很相似:

      <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 而不是 repository

      【讨论】:

      • support-v7 不只是一个简单的 jar 文件
      【解决方案7】:

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

      【讨论】:

      • 部署程序对我不起作用。相反,我按照以下步骤操作:1)转到 ANDROID_HOME\sdk\extras\android\support\v7\appcompat 2)创建整个库的 zip 文件并将其命名为 appcompat.apklib 3)在此位置打开 cmd 并键入“mvn install :install-file -Dfile=appcompat.apklib -DgroupId=com.google.android -DartifactId=support-v7-appcompat -Dversion=r7 -Dpackaging=apklib" 4) 转到 /libs 5) 键入“mvn install:install-file -Dfile=android-support-v7-appcompat.jar -DgroupId=com.google.android -DartifactId=support-v7-appcompat -Dversion=r7 -Dpackaging=jar" 6) 添加相应的依赖项
      【解决方案8】:

      这是我的解决方案:

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

      2. 在 Intellij 上打开“项目结构”,点击“项目设置”上的“模块”,然后点击“appcompat”->“android”,确保选中“库模块”复选框。

      3. 点击“appcompat”下的“YOUR-PROJECT_NAME”,删除“android-support-v4”和“android-support-v7-compat”;确保选中“appcompat”之前的复选框。并且,单击“确定”关闭“项目结构”对话框。

      4. 回到主窗口,点击左上角项目区域的“appcompat”->“libs”。右键单击“android-support-v4”,选择菜单项“添加为库”,将“添加到模块”更改为“您的项目”。与“android-support-v7-compat”相同。

      完成以上操作,intellij 应该可以正确找到 android-support-XXXX 模块了。

      祝你好运!

      【讨论】:

        【解决方案9】:

        作为图书馆项目

        您应该按照http://developer.android.com/tools/support-library/setup.html在库项目中添加资源

        部分 > 使用资源添加库

        然后您将android-support-v7-appcompat 库添加到您的工作区,然后将其添加为对您的应用项目的引用。

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

        【讨论】:

        • 请注意,如果你定义了从 appcompat 项目到你的项目的所有资源,你应该检查 R.java 生成的文件应该在android.support.v7.appcompat 包中。否则,android-support-v7-appcompat.jar 将看不到资源
        • 我正在使用IDEA,请告诉我如何添加资源库。他看到的资源编译时没有错误,但是当你开始出现错误时
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-08
        • 2015-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-21
        相关资源
        最近更新 更多