我创建了一个项目,复制了项目中的资源文件,库,将其添加到项目结构中,规定了样式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)
请帮帮我。今天花了一整天。
答案 0 :(得分:112)
如果您使用的是Gradle,则可以将其添加为compile
依赖项。
说明
确保安装了Android Support Repository
SDK包。 Android Studio在构建过程中自动识别此存储库(不确定简单的IntelliJ)。
将依赖项添加到{project}/build.gradle
dependencies {
compile 'com.android.support:appcompat-v7:+'
}
点击Sync Project with Gradle Files
按钮。
编辑:Adding libraries with resources -> Using Android Studio
下的documentation上显示了相同的说明。
答案 1 :(得分:83)
从Eclipse项目将您的库项目导入Intellij(此步骤仅适用于您在Eclipse中创建库的情况)。
右键单击模块,然后选择“打开模块设置”。
设置v7 jar文件的库
设置v7的库模块
设置v7库模块的app模块依赖关系
答案 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)
这是我的解决方案:
将$ ANDROID_SDK / extras / android / support / v7 / appcompat复制并粘贴到您的项目ROOT
打开&#34;项目结构&#34;在Intellij上,点击&#34;模块&#34;在&#34;项目设置&#34;上,然后点击&#34; appcompat&#34; - &gt;&#34; android&#39;,确保&#34;图书馆模块&#34;选中复选框。
点击&#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;对话。
返回主窗口,点击&#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;。
完成上述操作后,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。