繁体   English   中英

包 android.support.v4.app 不存在; 在安卓工作室 0.8

[英]package android.support.v4.app does not exist ; in Android studio 0.8

我最近将 android studio IDE 更新到 0.8 以使用新的 android L SDK。 首先,我导入了一个完成的 android 项目,该项目在旧版本的 android studio 中没有收到任何错误。 在 0.8 版 i 行中,例如

import android.support.v4.app.Fragment;
获取:无法解决支持,导致其余代码出现错误。 logcat 返回 101 个实例

Error:(8, 30) error: package android.support.v4.app does not exist

1 每次我在导入语句中调用支持库。

我试过了

  • 重新安装IDE
  • 删除idea文件夹的内容
  • 重新安装所有 SDK - 包括支持库
  • 同步 gradle
  • 手动将支持库复制到 libs 文件夹中
  • 重建项目
  • 以及创建一个新项目来测试库

不完全确定还需要做什么。

好的,所以我遇到了同样的问题,并在 udacity 论坛中找到了解决方案:

在 Android Studio 中:

  1. 右键单击您的项目“app”文件夹,然后单击 -> 模块设置
  2. 单击“依赖项”选项卡
  3. 点击+号添加一个新的依赖并选择“Library Dependency”
  4. 查找您需要的库并添加它

@boernard 的答案从 Android Studio IDE 解决了这个问题,但如果您想了解幕后发生的事情,这是一个简单的 gradle 构建文件更新:

您可以在 IDE 中编辑 build.gradle 文件(左窗格: Gradle Scripts -> build.gradle (Module: app) )或使用原始路径( <proj_dir>/app/build.gradle )并添加/更新以下依赖部分:

dependencies {
    //
    // IDE setting pulls in the specific version of v4 support you have installed:
    //
    //compile 'com.android.support:support-v4:21.0.3'

    //
    // generic directive pulls in any available version of v4 support:
    //
    compile 'com.android.support:support-v4:+'
}

使用上述通用编译指令,您可以将代码发送给任何人,前提是他们安装了某种级别的Android Support Libraries v4

以上解决方案都不适合我。 最终奏效的是:

代替

import android.support.v4.content.FileProvider;

用这个

import androidx.core.content.FileProvider;

此路径从 AndroidX(重新打包的 Android 支持库)开始更新。

[由于某些原因,这个答案与 Eclipse 有关,而不是 Android Studio!]

您是否尝试过将支持库设置为您的类路径? Android 开发者网站上的 这个链接有一些关于如何做到这一点的信息。

尝试从网站执行以下步骤:

根据支持库代码创建库项目:

  • 确保您已使用 SDK 管理器下载了 Android 支持库。
  • 创建一个库项目并确保所需的 JAR 文件包含在项目的构建路径中:

    • 选择文件 > 导入
    • 选择Existing Android Code Into Workspace并单击 Next。
    • 浏览至 SDK 安装目录,然后浏览至 Support Library 文件夹。 例如,如果您要添加appcompat项目,请浏览到 /extras/android/support/v7/appcompat/。
    • 单击完成以导入项目。 对于 v7 appcompat 项目,您现在应该会看到一个名为android-support-v7-appcompat的新项目。
    • 在新的库项目中,展开libs/文件夹,右键单击每个 .jar 文件并选择Build Path > Add to Build Path 例如,在创建 v7 appcompat 项目时,将 android-support-v4.jar 和 android-support-v7-appcompat.jar 文件都添加到构建路径中。
    • 右键单击库项目文件夹并选择Build Path > Configure Build Path
    • Order and Export选项卡中,检查您刚刚添加到构建路径的 .jar 文件,以便它们可用于依赖此库项目的项目。 例如,appcompat 项目要求您同时导出 android-support-v4.jar 和 android-support-v7-appcompat.jar 文件。
    • 取消选中Android 依赖项
    • 单击确定以完成更改。
  • 您现在拥有一个用于所选支持库的库项目,您可以将其与一个或多个应用程序项目一起使用。

    • 将库添加到您的应用程序项目中:
    • Project Explorer中,右键单击您的项目并选择Properties
    • 在对话框左侧的类别面板中,选择Android
    • 窗格中,单击添加按钮。
    • 选择库项目并单击确定。 例如,appcompat 项目应列为 android-support-v7-appcompat。
    • 在属性窗口中,单击确定。

删除

/.idea/libraries

然后同步 gradle 来构建项目。

// 运行这个命令 - 它修复了一切

离子cordova插件添加cordova-plugin-androidx-adapter

tl;dr从您的settings.gradle中删除所有依赖于支持库的未使用模块。

长版:

在我们的例子中,我们在一个由每个模块导入的common.gradle文件中将支持库声明为我们所有模块(一个应用程序模块和多个库模块)的依赖项。 但是,有一个库模块未声明为任何其他模块的依赖项,因此未构建。 在每几次同步中,Android Studio 都会选择那个确切的模块作为寻找支持库的地方(这就是为什么它对我们来说似乎是随机发生的)。 由于该模块从未使用过,因此它从未构建,这反过来又导致 jar 文件不在模块的中间文件夹中。

settings.gradle删除这个库模块并再次同步为我们解决了这个问题。

在我的情况下,错误出现在我的项目的一个模块上。我已经通过添加解决了这个问题

dependencies {
    implementation 'com.android.support:support-v4:20.0.+'
}

对应模块的 gradle 中的这种依赖关系

在 ECLIPSE LUNA 中,我通过在我的项目中使用 contet 菜单解决了这个问题:ANdroid Tools > Add support Library ...

在我的情况下,通过将字符串cordova.system.library.2=com.android.support:support-v4:+附加到platforms/android/project.properties文件来解决问题

对我来说,问题是由 Gradle 脚本列表中的 gradle.properties 文件引起的。 它显示为 gradle.properties(全局)并引用 C:\users\.gradle\gradle.properties 中的文件。 我右键单击它并从菜单中选择删除以将其删除。 它从硬盘上删除了文件,我的项目现在构建并运行。 我猜全局文件正在覆盖用于定位包 android.support 的东西

我的解决方案是创建一个checked Use legacy support library选项的项目。 项目创建成功后,只需要delete app目录下的src文件夹,从你的主项目中copy src文件夹即可。 最后,将项目与 Gradle 文件Sync

将此添加到 build.gradle:

allprojects {
    repositories {
        google()
    }
}
dependencies {
    implementation "com.android.support:support-core-utils:28.0.0"
}

*必须具有 minSdkVersion 14(或更高版本)

如果这些解决方案都不起作用,您需要将您的项目jetify 以完全支持AndroidX。 尝试

npm i -D jetifier

然后运行

npx jetify

您可以在此处找到更多详细信息: https ://github.com/michalchudziak/react-native-geolocation/issues/39#issuecomment-514566895,这应该可以解决问题。 让我知道这是否有效。

并确保在 gradle.properties 中添加以下内容

android.useAndroidX=true

android.enableJetifier=true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM