1

我在使用源集时遇到了一些问题,我有一个包含大部分通用代码的主源集,但是之前的开发人员包含了一个构建风格开关,例如:

    if (Application.inKiosk) {
        navigation.visibility = View.INVISIBLE
        val employeeSelectionFragment = EmployeeSelectionFragment()
        employeeSelectionFragment.setAllList(employees)
        employeeSelectionFragment.setCallback(employeeSelected)
        supportFragmentManager.beginTransaction().add(R.id.small_container, employeeSelectionFragment, "EmployeeSelectionFragment").commitNow()
        currentTimeRecord = TimeRecord()
    } else {
        setupTimeRecords(employees!!.first()!!.id, savedInstanceState == null)
    }

我想提取这个风味特定的块并将其包含在它自己的源集文件夹中。我无法访问通用成员,例如导航。我将如何提取此部分?

        navigation.visibility = View.INVISIBLE
        val employeeSelectionFragment = EmployeeSelectionFragment()
        employeeSelectionFragment.setAllList(employees)
        employeeSelectionFragment.setCallback(employeeSelected)
        supportFragmentManager.beginTransaction().add(R.id.small_container, employeeSelectionFragment, "EmployeeSelectionFragment").commitNow()
        currentTimeRecord = TimeRecord()
4

1 回答 1

1

在产品风味之间拆分代码的基本方法是:

  • 在一个维度中设置 2+ 个风味

  • 为每种口味创建源集 ( src/flavorOne/, src/flavorTwo/)

  • 在这两种风格中定义一些类

  • 让该类实现提供您正在寻找的每种风格功能的功能(例如,setupTimeRecords()在一种风格中,在另一种风格中的自助服务终端代码)

  • 让您的main源集使用该类并调用该函数

Gradle 将从风格的源集中为您正在构建的任何构建变体提取类的实现,这就是main代码将在该构建中使用的实现。

于 2019-08-01T17:38:12.127 回答