【问题标题】:Android Studio library "error: package does not exist"Android Studio 库“错误:包不存在”
【发布时间】:2014-12-12 21:49:54
【问题描述】:

我创建了 Android 库作为 Android Studio 模块。添加为我的根模块的依赖项。在编码时,我可以从库包中导入任何类,但在尝试运行应用程序时,我收到错误 package some.mylibrary.project does not exist

build.gradle 根模块

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}
apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:5.+'
    compile project(':libraries:mylibrary')
}

android {
    compileSdkVersion 17
    buildToolsVersion "20.0.0"

    lintOptions {
        disable 'InvalidPackage'
        checkReleaseBuilds false
        abortOnError false
    }

    ***
}

build.gradle 库模块

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}

apply plugin: 'com.android.application'
apply plugin: 'idea'

android {
    compileSdkVersion 17
    buildToolsVersion "20.0.0"

     *****    
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

settings.gradle

include ':libraries:mylibrary'

附:不得不提的是,该项目是从 Eclipse IDE 导出的,所以项目结构与默认结构不同。

【问题讨论】:

    标签: android android-studio android-gradle-plugin


    【解决方案1】:

    适用于 Android Studio 2.2.2

    是的,在库模块中,不能在模块定义中使用apply plugin: com.android.application 语句,是的,使用apply plugin: com.android.library 代替。 (仍在 lib 模块中)

    但是你必须执行以下操作:

    1. 在两个模块的 Gradle 文件中公开相同的 SDK 版本。
    2. 右击你的项目“app”模块文件夹并点击->打开模块设置
    3. 点击“依赖”标签
    4. 点击+号添加新的依赖并选择“Module Dependency”
    5. 查找您需要的库并添加它。

    同时命名你的 lib 模块时避免大写。

    【讨论】:

      【解决方案2】:

      如果你有一个库模块,它就不能在模块定义中使用apply plugin: 'com.android.application' 语句,否则构建会像你看到的那样默默地失败。请改用apply plugin: 'com.android.library'

      已经提交了一个错误,要求构建系统在发生这种情况时大声而不是静默失败:https://code.google.com/p/android/issues/detail?id=76725

      【讨论】:

      • 错误:(2, 0) 未找到 ID 为 'com.android.library' 的插件。
      • 嗯,这个错误发生在我的库模块中。它不使用apply plugin: 'com.android.application'
      • 正确答案。
      【解决方案3】:

      上面的答案有些欠缺 如果你在 Kotlin 中项目 java add 得到这个错误

      • 工具选项卡 Kotlin 和配置 Kotlin
      • (使用 Gradle 选择 Android)在使用 Modules 选择后

      项目 build.gradle 添加

      ext.kotlin_version = ‘1.3.21’
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      

      Apps build.gradle

      apply plugin: 'kotlin-android-extensions'
      
      apply plugin: 'kotlin-android'
      

      科特林

      implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
      

      参考:https://medium.com/mindorks/enabling-kotlin-support-for-a-current-only-java-android-project-98c75e04384a

      【讨论】:

      • 注意'kotlin-android'应该在'kotlin-android-extensions'之前应用
      【解决方案4】:

      在 build-gradle 应用中,添加这一行:

      implementation project(":your_name_library_here")
      

      【讨论】:

        【解决方案5】:

        当您更改包名称并尝试运行代码时会发生此错误。发生这种情况是因为 android studio 仍然有旧名称的包的缓存。

        此外,交叉检查代码中的所有导入以及导入的包,以确保不存在不同的包名称。例如,此错误通常是指发生错误的位置附近的另一个导入文件。检查附近以前的进口。

        要修复此错误,您可以尝试从 android studio 的“文件”菜单中执行“无效缓存/重新启动”选项。选择“Invalidate and restart option”并关闭 Android Studio。

        此错误的另一个原因是当人们更改项目的路径根文件夹或它所依赖的任何模块时。在这种特殊情况下,要修复此错误,您需要删除受影响的模块,然后重新添加它们。接下来不要忘记从 android studio 的 File 菜单中执行“invalidate caches / Restart”选项。选择“Invalidate and restart option”并关闭 Android Studio。

        从 android studio 中清理您的项目:

        • “构建 -> 清理项目”。这将清除您的构建文件夹。
        • 从项目的根目录中删除 .gradle 目录。它包含一些 Gradle 缓存文件。
        • 同时删除 .idea 目录(之前进行备份)。它包含一些项目配置文件。

        重启 Android Studio。

        终于

        如果错误仍然存​​在,您需要将受影响的文件移动到项目根文件夹的外部目录。在 Android Studio 上,像以前一样手动创建每个文件名,然后从旧文件中复制其中的代码。 这将彻底解决此错误。

        【讨论】:

          【解决方案6】:

          如果您在使用 Kotlin 时遇到此问题并拥有

          kotlin.incremental=true
          kapt.incremental.apt=true
          

          gradle.properties 中,然后您需要暂时删除它以修复构建。

          构建成功后,您可以在使用 Kotlin 时再次添加这些属性以加快构建时间。

          参考:https://*.com/a/58951797/3948854

          【讨论】: