【问题标题】:productFlavours and packages in androidandroid中的productFlavors和packages
【发布时间】:2017-10-05 12:37:06
【问题描述】:

我一直在看android studio的productFlavors功能教程,我真的觉得很乱,我想出了一些问题,

1) 好的,无论模块如何,我都了解构建类型,您有 2 种构建类型 release 和 debug,我们可以配置 release,默认情况下我们不需要将 debug 配置为其配置,如果我们必须这样做,我们可以从initWith 和 jnidebug 到底是什么,除了调试之外还有别的吗?

2) 他们在 gradle 脚本中添加 productFlavors,并在 2 种风味中添加了一个带有 .flavorName 的包名称,然后他们创建了两个与 main 名称相同的包,为什么不与我们在每种风味中声明的包名称相同产品风味?像 com.example.xx.flavor1 和 com.example.xx.flavor2? 为什么与 main 相同的包名还有 applicationIDSuffix 的目的是什么?

3) 然后他们在每个风味中创建了两个类,并在主文件夹的 mainActivity.java 中访问其方法,我们可以像我们可以从 mainActivity.java 中获取风味.java 中的方法一样反转它吗,如果我们有不同的包怎么办名称,mainActivity 的方法在每个 flavor.javas 中是否仍然可用?

【问题讨论】:

    标签: java android gradle android-gradle-plugin android-productflavors


    【解决方案1】:

    可以在此页面上找到有关您的问题的许多详细信息:Gradle Definitions and Configurations。但是,通过进一步澄清您的问题,我可以改进答案以适应您的问题。

    对于问题 1:我不确定 jnidebug 来自哪里。可能是文件夹和源集的一部分。

    对于问题 2:productFlavor 是创建不同的应用程序,但具有相同的代码库。例如,可以创建两个版本的应用程序,比如说一个免费版本和一个付费版本,免费版本包含展示广告的实现但付费版本没有。为此,免费版本包含不同于付费版本的布局和逻辑代码。但是,两者都将共享相同的main 基本代码。此外,一些不同风格的应用程序可能都需要安装在 Android 上,这样它们才能共存。要做到这一点,它们应该有不同的应用程序 ID,否则 Android 会用第二个应用程序覆盖第一个安装的风味应用程序。为此,开发人员将创建一个基础应用程序 ID(大多数情况下它类似于com.example.app)。然后在风味配置中,开发人员将applicationIDSuffix 设置为类似于风味,以便让 Android 安装这两个应用程序。假设我们必须有风味,baseextended,并且在 build.gradle 中,extended 具有 applicationIDSuffix '.extended' 集。编译构建这两种风格后,将有两个应用程序,base 应用程序 ID 为 com.example.appextended 应用程序 ID 为 com.example.app.extended。因此,Android 将毫无问题地安装两者。

    对于问题 3:当然!请注意,虽然会有不同的应用程序具有不同的应用程序 ID,但它们的代码将具有相同的包名称。代码包名称和应用程序 ID 是不同的,并且彼此不相关,尽管大多数情况下它们是相同的。在编译时发生的事情是 gradle 会将来自风味的代码与main 合并,并在相同的包名下编译它们,例如com.example.app。但是 AndroidManifest.xml 将包含您选择编译的风味设置的应用程序 ID,例如 com.example.app.flavor 以防设置了 applicationIDSuffix '.flavor'

    【讨论】:

    • 我们可以将现有的测试包名称放在productflavors中,以便我们可以拥有现有测试包的apk吗?就像当我们创建新产品时,我们看到 3 个包名称 1 用于源代码,其他 2 用于测试
    • 测试是另一个关于 gradle 和 productFlavors 的故事,但是是的。您可以在主测试文件夹中拥有基本测试代码(默认情况下它们是两个:test 和 androidTest),这些将始终可用于任何风格,然后还有特定的测试文件夹和用于合并的特定风格的代码编译和构建所选风味时的主要测试包/代码。为了更好地理解它,请在此链接中查看源集:developer.android.com/studio/build/…
    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多