繁体   English   中英

Android Flavors :仅将特定于风味的代码应用于源集

[英]Android Flavors :Applying only flavor specific code to a source set

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

    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()

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

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

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

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

  • 让该类实现提供您正在寻找的每种风格功能的函数(例如,一种风格中的setupTimeRecords() ,另一种风格中的亭内代码)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM