javaandroidgradlegithubgithub-package-registry

How to Add My Android Library's Dependencies in Github Packages?


I am building an Android library (say, MyLibrary) which will be added to other apps of my company. The library has some dependencies in the build.gradle file like this:

dependencies{
    implementation 'com.alimuzaffar.lib:pinentryedittext:2.0.6'
    implementation "com.google.android.gms:play-services-auth-api-phone:17.3.0"
// ... other dependencies
}

After making the library, I created a Github package, so I can add it to another app (say AppDemo) in AppDemos build.gradle file like this:

dependencies{
    implementation 'com.mycompany:mylibrary:1.2.3'
    // other dependencies
}

The problem is I get dependency errors, that is, MyLibrarys dependencies (in this example, pinentryedittext , play-services-auth-api-phone as shown in the library's build.gradle file above) are missing. I have googled the problem and tried out some solutions, such as, Mobbeel fataar gradle plugin,and some other similar plugins, but I could not make them work. Could anyone help my with this or give me a working sample? Any help will be appreciable.


Solution

  • 
    publications {
        bar(MavenPublication) {
            groupId getGroupId()
            artifactId getArtificatId()
            version getVersionName()
            artifact("$buildDir/outputs/aar/${getArtificatId()}-release.aar")
            pom.withXml {
                final dependenciesNode = asNode().appendNode('dependencies')
                ext.addDependency = { Dependency dep, String scope ->
                    if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
                        return // ignore invalid dependencies
                    final dependencyNode = dependenciesNode.appendNode('dependency')
                    dependencyNode.appendNode('groupId', dep.group)
                    dependencyNode.appendNode('artifactId', dep.name)
                    dependencyNode.appendNode('version', dep.version)
                    dependencyNode.appendNode('scope', scope)
                    if (!dep.transitive) {
                        final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
                        exclusionNode.appendNode('groupId', '*')
                        exclusionNode.appendNode('artifactId', '*')
                    } else if (!dep.properties.excludeRules.empty) {
                        final exclusionNode = dependencyNode.appendNode('exclusions').appendNode('exclusion')
                        dep.properties.excludeRules.each { ExcludeRule rule ->
                            exclusionNode.appendNode('groupId', rule.group ?: '*')
                            exclusionNode.appendNode('artifactId', rule.module ?: '*')
                        }
                    }
                }
                configurations.compile.getDependencies().each { dep -> addDependency(dep, "compile") }
    
                configurations.api.getDependencies().each { dep -> addDependency(dep, "compile") }
    
                configurations.implementation.getDependencies().each { dep -> addDependency(dep, "runtime") }
            }
        }
    }
    
    

    the above code is referred from Publish an Android library to Maven with aar and source jar