gpt4 book ai didi

android - Gradle 将 android 应用程序 apk 上传到 maven repo (nexus)

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:43 25 4
gpt4 key购买 nike

我正在尝试创建一个 CI 构建,用于构建 Android 应用程序的发布版本,并将生成的 apk 上传到 Maven sonatype nexus 存储库。

当我运行 assembleRelease 时,apk 被生成、签名、运行 proguard,并且位于 build/outputs/apk/app-release.apk

为了上传到 nexus,我使用了这个 gradle 插件: https://github.com/chrisbanes/gradle-mvn-push有一个区别,我使用了 POM_PACKAGING=apk

我运行:gradle uploadArchives它工作正常,它确实将 apk 上传到 nexus,但它与 build/outputs/apk/app-release.apk 中的文件不同(不同的创建日期)。

这意味着它要么做任何 assembleRelease 做的事,要么它只是归档源代码但遗漏了 Android 应用程序所需的一些必要操作。

gradle 插件定义了这些 artificats:

artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}

也许我应该在 build/outputs/apk/app-release.apk 中添加一个文件 Artifact ?

最佳答案

我尝试了上述解决方案,但当 Jenkins 尝试将 apk 文件上传到我们的 nexus 存储库时,我总是遇到“apk 文件不存在”的问题。在 gradle 插件的文档中,路径以“build”文件夹开头。 ( https://docs.gradle.org/current/userguide/artifact_management.html )
我试图向路径中注入(inject)一些环境变量,但 Jenkins 总是提示“找不到文件”。我想出了这个解决方案,它很管用。

uploadArchives {
repositories {
mavenDeployer {
repository(url: "https://repo.domain.com/content/repositories/snapshots") {
authentication(userName: nexususername, password: nexuspassword)
}

pom.project {
version "0.0.1-SNAPSHOT"
artifactId "android-artifact"
name "android-name"
groupId "com.domain.foo.bar"
}
}
}
}


// /data/jenkins_work/NAME_OF_THE_BUILD_JOB/artifact/app/build/outputs/apk/app-debug.apk
def apk = file('app/build/outputs/apk/yourapp.apk')

artifacts {
archives apk
}

关于android - Gradle 将 android 应用程序 apk 上传到 maven repo (nexus),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27254955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com