How to Include Complete Flutter Modules in Android AAR Artifact Library?

71 views Asked by At

I am working on creating an Android SDK module that includes a Flutter module. I have followed the instructions provided in the official Flutter documentation here to integrate the Flutter module into my Android project.

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

I have also added the Flutter module as a dependency in my app/build.gradle file within my Android module.

implementation project(':flutter')

I have successfully integrated the Flutter module with a method channel, and it's working as expected.

Now, my challenge is in creating an AAR artifact library that includes the complete Flutter modules. When I generate the AAR artifact using the following Gradle code snippet, the sub-modules are not included in the library:

group = 'com.example.myAndroidSdk'
version = '1.0.0'


// Add sources as an artifact
task sourceJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier "source"
}


// Loop over all variants
android.libraryVariants.all { variant ->
    variant.outputs.all { output ->
        // This creates a publication for each variant
        publishing.publications.create(variant.name, MavenPublication) {
            // The sources artifact from earlier
            artifact sourceJar

            // Variant dependent artifact, e.g. release, debug
            artifact source: output.outputFile, classifier: output.name

            // Go through all the dependencies for each variant and add them to the POM
            // file as dependencies
            pom.withXml {
                def dependencies = asNode().appendNode('dependencies')

                // Filter out anything that's not an external dependency. You shouldn't
                // be publishing artifacts that depend on local (e.g. project) dependencies,
                // but who knows...
                configurations.getByName(variant.name + "CompileClasspath").allDependencies
                        .findAll { it instanceof ExternalDependency }
                        .each {
                            def dependency = dependencies.appendNode('dependency')

                            dependency.appendNode('groupId', it.group)
                            dependency.appendNode('artifactId', it.name)
                            dependency.appendNode('version', it.version)
                        }
            }
        }
    }
}

// Ensure that the publish task depends on assembly
tasks.all { task ->
    if (task instanceof AbstractPublishToMaven) {
        task.dependsOn assemble
    }
}

How can I ensure that the complete Flutter modules are included in my Android AAR artifact? What modifications or additional steps do I need to take?

0

There are 0 answers