How to use local aar inside flutter plugin?

前端 未结 3 1213
再見小時候
再見小時候 2020-12-29 13:41

I\'ve create a flutter plugin with:

flutter create --template plugin flutter_plugin

I\'ve put my aar file inside flutter_plugin/android/src

3条回答
  •  离开以前
    2020-12-29 13:49

    In my experience, adding direct plugin aar in another plugin project (flutter plugin's android project) is either very difficult or not allowed, so in that case, you have two options,

    1. If your aar dependancy is available on gradle, use gradle that in your build file. You can search for it here

    2. Or if you are building aar yourself from another project, then you can publish aar to your local maven and use that dependency in your flutter plugin by adding "mavenLocal()" to your plugins build file.

    For example here is what I did to fix same issue: My dependancy's build.gradle

    group 'com.companyname.artifactname'
    version '1.0-SNAPSHOT'
    
    buildscript {
        repositories {
            mavenLocal()
            google()
            jcenter()
            maven {
                url "https://maven.google.com" // Google's Maven repository
            }        
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:3.0.1'
        }
    }
    allprojects {
        repositories {
            mavenLocal()
            google()
            jcenter()
            maven {
                url "https://maven.google.com" // Google's Maven repository
            }        
        }
    }
    
    
    apply plugin: 'com.android.library'
    
    
    uploadArchives {
        repositories {
            mavenLocal()
        }
    }
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            minSdkVersion 15
            targetSdkVersion 23
            versionCode 2
            versionName "2.0.1"
        }
        lintOptions {
            abortOnError false
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        dependencies {
            compile 'com.android.support:appcompat-v7:23.2.1'
            compile 'com.android.support:support-v4:23.2.1'
        }
    }
    
    dependencies {
        compile fileTree(include: ['*.jar'], dir: 'libs')
    }
    
    
    apply plugin: 'maven-publish'
    publishing {
        publications {
          library(MavenPublication) {
            version "1.1"
            artifact(bundleRelease)
          }
        }
    }
    

    Then just run following command to publish it to local maven repository

    gradlew publishToMavenLocal
    

    And then just add mavenLocal() in your flutter plugin's repositories section and add dependancy as

    compile 'com.companyname.artifactname:libraryname:1.1@aar'
    

提交回复
热议问题