【问题标题】:A dependent feature was defined but no package ID was set. You are probably missing a feature dependency in the base feature定义了依赖功能,但未设置包 ID。您可能在基本功能中缺少功能依赖项
【发布时间】:2017-08-26 03:26:54
【问题描述】:

我正在关注其中一位 Google Codelabs 以制作即时应用程序。

我正在尝试创建 topeka-uiInstant Apps 的 UI 功能模块)。

当我尝试运行其中一个即时应用程序模块时,它会说:

定义了依赖功能,但未设置包 ID。 您可能在基本功能中缺少功能依赖项。

【问题讨论】:

  • 您是否在 topekaui build.gradle 中设置了 baseFeature=true,因为非基本功能模块当前不支持数据绑定?我做到了,也遇到了你的问题。而且也找不到好的解决方案...
  • 我也没有找到解决办法
  • 最烦人的是,我什至找不到依赖特性的定义位置。没有日志,没有调试信息。没有。在 Android Studio 中开发变得越来越糟糕。真是令人沮丧。

标签: android android-instant-apps android-architecture


【解决方案1】:

我有一个问题,我有一个 Android 应用程序和一个 Android 库,但我错误地使用了错误的插件。

对于应用程序:

plugins {
    id "com.android.application"
    id "kotlin-android"
}

对于图书馆:

plugins {
    id "com.android.library"
    id "kotlin-android"
}

【讨论】:

  • 非常感谢!由于某种原因,Android Studio 也自动在库 gradle 中创建了插件 id “com.android.application”!
  • 你救了我猫的命
【解决方案2】:

因为这是“定义了依赖功能但未设置包 ID。您可能在基本功能中缺少功能依赖项”的唯一 stackoverflow 问题。我将在这里回答我的问题,而不是创建一个新问题。我有一个模块给了我这个错误并且无法找出问题所在。在依赖模块的 build.gradle 文件中,我有:

apply plugin: 'com.android.feature'

应该是:

apply plugin: 'com.android.library'

【讨论】:

  • 谢谢好哥们!你救了我的一天!你怎么知道这是我永远不会知道的错误的原因。下次我在创建新模块时需要使用 Android Library 选项。但是,这个“库”不包含特定于 Android 的代码。
  • 应用插件:'com.android.library'请更正拼写错误@tim.paetz
  • 完美答案。
【解决方案3】:

我刚刚在 AS 3.0 beta 2 上运行了 codelab,没有出现任何问题 (*note)。您的问题是在 codelab 中的哪一点之后出现的?

您可能错过了一步。仔细检查您的基本模块的 build.gradle 是否具有:

dependencies {
    ...
    application project(":topekaapk")
    feature project(":topekaui")
}

省略feature project(":topekaui") 可能会导致此错误:

错误:com.android.builder.internal.aapt.AaptException:依赖 功能已定义,但未设置包 ID。你大概是 缺少基本功能中的功能依赖关系。

注意:由于非基础模块 (https://issuetracker.google.com/63814741) 已禁用数据绑定,因此需要在多功能步骤 7 中执行一些额外的步骤来解决它(即摆脱 DataBindingUtil)。

【讨论】:

  • 发布我的确切消息以帮助搜索引擎:原因:com.android.builder.internal.aapt.AaptException:已配置相关功能但未设置包 ID。
【解决方案4】:

当我忘记在基本模块的 android.dynamicFeatures = [":module_name"] 数组中添加对它的引用时,我在动态功能模块中遇到了这个问题

【讨论】:

    【解决方案5】:

    来自basic instant app project structure

    当您构建免安装应用时,此模块会使用所有功能并创建免安装应用 APK。它不包含任何代码或资源;它只包含一个build.gradle 文件,并应用了com.android.instantapp 插件。这是一个例子:

    apply plugin: 'com.android.instantapp'
    ...
    dependencies {
        implementation project(':base')
        // if there additional features, they go here
        implementation project(':feature1')
    }
    

    此外,请注意

    基础功能模块的构建配置文件需要应用com.android.feature gradle 插件。 build.gradle 文件不包含任何针对免安装应用的修改。

    根据您遇到的错误,您可能需要检查您的base feature module's build configuration file。最后,确保你也sync your project with gradle files

    更多信息请参见Android Instant Apps documentation

    【讨论】:

    • 警告:com.android.feature 插件已弃用,将在未来的 gradle 插件版本中删除。请切换到使用动态功能或库。有关将您的应用程序转换为使用 Android App Bundle 的更多信息,请访问developer.android.com/topic/google-play-instant/…
    【解决方案6】:

    使用以下 gradle pugin

    classpath 'com.android.tools.build:gradle:3.5.1'
    

    在我的例子中,添加到应用程序的 build.gradle 之后

    android{
    dataBinding {
            enabled = true
        }
    }
    

    我收到了发布的错误,然后执行以下操作

    Android studio -> invalidate cache and restart
    

    问题已解决!

    还没有修复?

    可能在 build.gradle 中存在冲突的依赖项, 就像同一库的旧版本和当前版本一样

    【讨论】:

      猜你喜欢
      • 2023-03-26
      • 2020-11-15
      • 1970-01-01
      • 2013-01-09
      • 2010-12-18
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多