Gradle:以发布模式实施子项目

时间:2019-09-11 14:02:11

标签: android gradle groovy

我将一个flutter Android项目作为主要模块包含在我的主要源代码中。但是,当我以调试模式构建项目时,它也会以调试模式编译子项目。

如何实现子模块:flutter release 模式构建?

我的配置文件:

build.gradle(应用程序)

dependencies {
    implementation project(':flutter')
    [...]
}

settings.gradle

include ':app'
setBinding(new Binding([gradle: this]))
evaluate(new File(
        settingsDir,
        'flutter/.android/include_flutter.groovy'
))

include_flutter.groovy

def scriptFile = getClass().protectionDomain.codeSource.location.toURI()
def flutterProjectRoot = new File(scriptFile).parentFile.parentFile

gradle.include ':flutter'
gradle.project(':flutter').projectDir = new File(flutterProjectRoot, '.android/Flutter')

def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot, '.flutter-plugins')
if (pluginsFile.exists()) {
    pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}

plugins.each { name, path ->
    def pluginDirectory = 
    flutterProjectRoot.toPath().resolve(path).resolve('android').toFile()
    gradle.include ":$name"
    gradle.project(":$name").projectDir = pluginDirectory
}

gradle.getGradle().projectsLoaded { g ->
    g.rootProject.beforeEvaluate { p ->
        _mainModuleName = binding.variables['mainModuleName']
        if (_mainModuleName != null && !_mainModuleName.empty) {
            p.ext.mainModuleName = _mainModuleName
        }
    }
    g.rootProject.afterEvaluate { p ->
        p.subprojects { sp ->
            if (sp.name != 'flutter') {
                sp.evaluationDependsOn(':flutter')
            }
        }
    }
}

0 个答案:

没有答案