错误:"package android.support.v7.app不存在"

62

我是android开发新手,一直在使用命令行工具创建android项目。我遵循了android开发者教程中给出的所有指示。然而,它们更侧重于IDE用户。

当我尝试从ActionBarActivity扩展我的MainActivity类而非仅仅是Activity时,它抛出以下错误。

错误:包android.support.v7.app不存在

它在抱怨这个导入语句。

import android.support.v7.app.ActionBarActivity;

我确保访问了SDK管理器,并且它显示Android Support Library已安装。我真的被卡住了,非常感激你们能给我任何帮助。

这可能有所帮助:http://developer.android.com/reference/android/support/v7/app/ActionBarActivity.html


1
你需要将appcompat库添加到你的项目中,单纯地通过sdk manager下载是不够的。你可以在这里这里找到更多信息。 - Xaver Kapeller
1
我遇到了同样的问题。我不确定为什么@vgonisanz的答案被接受 - 我无法从命令行中右键单击库。我也没有使用Gradle - 命令行工具默认为Ant,因此我安装了Ant。 - Iiridayn
@Iiridayn:是的,最终我放弃了命令行工具。Android Studio是一个非常好的集成开发环境,编译起来比使用ant要轻松得多。 - Alexander Otavka
有关AndroidX,请参见https://dev59.com/9WAg5IYBdhLWcg3wq8aU#61357351。 - VikaS GuttE
18个回答

103

首先检查你的项目是否使用androidx或android support库。

android.useAndroidX=true

android.enableJetifier=true

如果它包含以上几行,那么它正在使用来自一些旧教程的旧代码并且正在使用androidx。

在build.gradle(module:app)中使用:

使用

implementation 'androidx.appcompat:appcompat:1.0.0'

不是

compile 'com.android.support:appcompat-v7:28.0.0'
Also in MainActivity.java : 使用

import androidx.appcompat.app.AppCompatActivity;

而不是:

import android.support.v7.app.AppCompatActivity;

2
如果您能分享如何在不使用andoridx的情况下进行更改,即如果我们想要使用android.support.v7...,那将非常有帮助。谢谢。 - GiridharaSPK
1
我认为每个人都必须转换到AndroidX,这不是一个选项。 - Sunil Kumar
谢谢但是,我找到了一种方法 我刚刚删除了所有的androidx行,并用supportWidgetV7替换它们并重新启动(无效缓存和重启) 一切都开始正常工作了 顺便说一下,我是Android中的新手,我可以知道这些中哪一个是旧/新的,哪一个更好,以及为什么吗? 谢谢 - GiridharaSPK
1
androidx是新的,v7是旧的,v7已经被弃用。未来所有人都必须使用androidx。 - Sunil Kumar
有关AndroidX,请参见https://dev59.com/9WAg5IYBdhLWcg3wq8aU#61357351。 - VikaS GuttE
有没有导入整个项目中此 import androidx.appcompat.app.AppCompatActivity; 的快捷方式? - Arbaz.in

27
如果问题来自MainActivity.java文件,请进行替换

import android.support.v7.app.AppCompatActivity;

使用

import androidx.appcompat.app.AppCompatActivity;

我们被迫前进……对吧@siva? - gumuruh

15

您的工程缺少SDK中的支持库。

如果您没有安装它们,只需右键单击项目 > Android工具 > 安装支持库

然后,将${android-sdk-path}/extras/android/support/v7中的android-support-v7-appcompat作为Android项目导入到工作区中。

最后,在Android 项目 > 属性 > Android 选项卡中右键单击。点击添加按钮,将支持项目"android-support-v7-appcompat"添加为依赖项。

清理您的项目,它就可以编译并正常工作了。


22
现在这已经过时了。 - Yar
8
对于那些迁移到androidx的人,这里提供了一个新包的映射列表:https://developer.android.com/jetpack/androidx/migrate#class_mappings - Ivan Jovović
变化太快了...!我认为更新的时间框架不应该像这个一样太快... - gumuruh

10

使用 Android Studio,您需要添加支持库的依赖项,而这在教程中并没有指明。

dependencies {

    implementation 'com.android.support:appcompat-v7:22.0.0'
}

有关 AndroidX,请参见 https://dev59.com/9WAg5IYBdhLWcg3wq8aU#61357351 - VikaS GuttE

9
如果您在使用最新版的Android Studio,那么v7库会与AndroidX产生冲突。您需要做的只有以下几步:
在项目文件中找到gradle.properties;
android.useAndroidX=true修改为android.useAndroidX=false
android.enableJetifier=true修改为android.enableJetifier=false
重新构建您的项目,一切都会正常工作。

1
谢谢!我不知道Android Studio已经启用了AndroidX而没有询问... - ymoreau
我需要 import androidx.appcompat.app.AppCompatActivity; 来调试一些旧代码,但是 Android Studio 拒绝工作,我苦苦挣扎了好几天。直到我偶然发现了 toplevel build.gradle 中的这两行代码。我将它们设置为“false”... 然后所有问题都神奇地解决了。 - paulsm4

7
转换到 AndroidX 对我有帮助: import androidx.appcompat.app.AppCompatActivity;

1
没问题,谢谢Sami。 - Yusuf Adeyemo

5

就我所知:

使用Xamarin时,我遇到了这个问题,即使我已经安装了支持包,包括v4和v7。

我的问题通过执行“构建 -> 清除所有”得到解决。


3

2
如果您的应用程序是AndroidX,这个回答可能适用于您的问题:最初的回答。
npm install --save-dev jetifier
npx jetify (may take a while)
npx react-native run-android

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接