将 JNI 项目上传到 Maven 存储库

问题描述

我正在尝试使用 this guide 通过 Maven 存储库将我的 Android 库上传到 GitHub 包,但在包含我的项目所依赖的 .so 文件时遇到了问题。

总的来说,库上传得很好,我什至可以在另一端下载。问题是 AAR 文件只包含我的库中的 Java/Kotlin 文件,而不包含来自 JNI 层的其余本机 C 代码

这是我图书馆的 build.gradle 的样子:

apply plugin: 'maven-publish'

publishing {
    publications {
        aar(MavenPublication) {
            groupId 'group.id'
            artifactId 'artifact-id'
            version '1.0'
            artifact("$buildDir/outputs/aar/${getAarName()}-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
                    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") }
            }
        }
    }

    repositories {
        maven {
            name = "GitHubPackages"
            url = uri("https://maven.pkg.github.com/some/url")
            credentials {
                username = githubProperties['gpr.usr']
                password = githubProperties['gpr.key']
            }
        }
    }
}

以下是我的目录树或多或少的外观以供参考:

root
   - gradle
   - app
   - library
      - build
      - src
         - androidTest
         - main
            - java (included in AAR)
            - cpp (missing in AAR)
            - res

我不确定我错过了什么。我读过很多问题/答案,说我必须将 maven-publish 插件指向我的 .so 文件,但我还没有想出如何做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)