模块与 flavor 之间的Android区别

标签 android android-productflavors android-module

android模块和 flavor 之间的主要区别是什么?

来自模块定义https://developer.android.com/studio/projects/add-app-module.html

Modules provide a container for your app's source code, resource files, and app level settings, such as the module-level build file and Android manifest file. Each module can be independently built, tested, and debugged.



但我可以对口味说同样的话。

有人能指出这两者之间的主要区别吗?

最佳答案

模块是项目的一部分,而 flavor 或多或少是配置/实现

模块的具体示例:
如果你正在制作一个库,你可以有几个模块,例如库本身和一个演示项目。每个都是模块

备注 : 每个模块都有自己的代码

flavor 的具体示例:
您正在制作具有一些在线功能的应用程序。为此,您有几个环境(在服务器环境上用于测试,一个用于实时版本)。
您可以使用自己的配置为每个环境制作构建风格(如果需要,还可以使用自己的实现)

备注 :口味可以共享他们的代码(使用主文件夹)

这只是一个简短的结论。模块和 flavor 比这个简短的描述更强大,但我认为它会指出最重要的区别

编辑:关键区别在于项目的结构,尤其是关于 gradle。

模块总是有自己的 gradle 文件,所以你得到以下结构:

projectName.gradle
    module1.gradle
    module2.gradle
    ...

口味在模块的 gradle 文件中定义:

例如module1.gradle 可能如下所示:
// some other gradle stuff before

buildTypes {
    dev {
        // your config
    }
    debug {
        // your config
    }
    release {
        // your config
    }
}

如您所见,您可以混合 flavor 和模块。因此,现在您将在 module1 中有一个包含 2 个模块和不同风格的项目。

在您的项目文件夹中,您的文件资源管理器中应该具有以下结构:
/project
  /module1
    /src
      /main
      /dev
      /debug
      /release
  /module2

关于模块与 flavor 之间的Android区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47749810/

相关文章:

android - Android 实际上在哪里调用 "ip link"或 "ifconfig"来启动界面?

安卓口味

android - 注释:@EViewGroup - Android 库模块中的注释参数必须是编译时常量错误

安卓导航。从嵌套图 fragment 弹出到外部 fragment

java - 无法从 OnClickListener 启动 Activity "method startActivity(Intent, int) is undefined for the type"

android - 我如何以编程方式在android中实现奖励系统?

android - 如何以编程方式强制重新启动完整的应用程序?例如杀死,然后开始

android - 出现 INSTALL_FAILED_CONFLICTING_PROVIDER 错误

android - 来自相同代码库的移动应用程序克隆

android - 手机和平板电脑模块与 Android 库