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

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

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

没有Gradle( 点击这里查看Gradle解决scheme )

  1. 创build一个支持库项目 。

  2. 将您的库项目从Eclipse项目导入到Intellij(这一步仅适用于在Eclipse中创build了库)。

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

  4. 安装v7 jar文件的库 安装v7 jar文件的库

  5. v7的安装程序库模块 v7的安装程序库模块

  6. 设置v7库模块的应用程序模块依赖关系 设置v7库模块的应用程序模块依赖关系

使用Gradle

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

说明

  1. 确保你已经安装了Android Support Repository SDK包。 Android Studio在构build过程中会自动识别这个存储库(不知道普通的IntelliJ)。

    Android支持信息库

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

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

编辑 :看起来像这些相同的说明在Adding libraries with resources -> Using Android Studio下的文档 。

使用Maven

首先,您应该使用Maven Android SDK部署程序将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> 

这是我的解决scheme:

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

  2. 在Intellij上打开“Project Structure”,在“Project Settings”上点击“Modules”,然后点击“appcompat” – >“android”,确保选中“Library Module”checkbox。

  3. 点击“appcompat”下的“YOUR-PROJECT_NAME”,删除“android-support-v4”和“android-support-v7-compat”; 确保选中“appcompat”之前的checkbox。 然后点击“确定”closures“项目结构”对话框。

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

完成上述之后,intellij应该能够正确地findandroid-support-XXXX模块。

祝你好运!

Maven的另一个解决scheme(对于我来说至less是一个更好的解决scheme)是使用本地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> 

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

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

作为图书馆项目

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

部分>使用资源添加库

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

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

这是我的解决scheme,它与以前的非常相似:

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