Android Library AAR depending on another library

后端 未结 1 1283
不思量自难忘°
不思量自难忘° 2020-12-21 01:04

Hi I have a Android Library Project which produces an AAR.

All is good but when I use the AAR in another project I get this error:

java.lang.NoClass         


        
相关标签:
1条回答
  • 2020-12-21 01:16

    How can one go about setting up a local maven repo.

    WARNING: the following recipe works, but probably could use improvement, as I am far from a Maven expert. I hammered out this approach last year for use with my CWAC libraries.

    Step #1: Add classpath 'com.github.dcendents:android-maven-plugin:1.0' to your buildscript dependencies block in your library project's build.gradle file. Also add version and group statements to provide that information about your AAR.

    Step #2: Use gradle install to compile the AAR and install it in the default local Maven repository.

    Step #3: Ordinarily, you would add mavenLocal() to the dependencies block of your application project to pick up the AAR via its artifact ID. That may be working again, though it was broken for a bit. Instead, use maven { url "${System.env.HOME}/.m2/repository" } as a short-term workaround.

    So, for example, your library project build.gradle file might contain:

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.9.+'
            classpath 'com.github.dcendents:android-maven-plugin:1.0'
        }
    }
    
    apply plugin: 'android-library'
    apply plugin: 'android-maven'
    
    version '0.4.0'
    group 'some.likely.group.name.goes.here'
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        compile 'com.squareup.picasso:picasso:2.2.0'
        compile fileTree(dir: 'libs', include: '*.jar')
    }
    
    android {
      // as normal
    }
    

    You would use gradle install to publish the JAR to your local Maven repo. Your application project would then have the following stuff in its build.gradle:

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:0.9.+'
        }
    }
    
    apply plugin: 'android'
    
    repositories {
        mavenCentral()
        maven { url "${System.env.HOME}/.m2/repository" } // mavenLocal()
    }
    
    dependencies {
        compile 'some.likely.group.name.goes.here:name-of-library:0.4.0'
    }
    
    android {
        // as normal
    }
    

    where you replace:

    • some.likely.group.name.goes.here with something

    • 0.4.0 with a version number in X.Y.Z format

    • name-of-library will be the directory name that contains the Android library project (e.g., presentation or foo)

    0 讨论(0)
提交回复
热议问题