Gradle上传android应用程序apk到maven回购(nexus)
我正在尝试创建一个构建Android应用程序发布版本的CI构建,并将结果apk上传到maven sonatype nexus回购。Gradle上传android应用程序apk到maven回购(nexus)
当我运行assembleRelease,生成APK,签约,运行proguard的,它位于在建/输出/ APK/APP-release.apk以上传到关系
,我用这个gradle这个插件: https://github.com/chrisbanes/gradle-mvn-push 有一个区别,那我用POM_PACKAGING = APK
我运行:gradle这个uploadArchives 并能正常工作,但它上传APK的Nexus,但它不是同一个文件中生成/输出/apk/app-release.apk(不同的创建日期)。
这意味着它可以执行任何assembleRelease,或者只是归档源代码,但是会漏掉一些android应用程序需要的操作。
的gradle这个插件定义了这些artificats:
artifacts {
archives androidSourcesJar
archives androidJavadocsJar
}
也许我应该添加一个文件神器打造/输出/ APK/APP-release.apk?
我们使用gradle将我们的APK文件发布到我们本地的Nexus存储库。这是我想出来的。此示例使用“googlePlay”构建风格进行了演示。
// make sure the release builds are made before we try to upload them.
uploadArchives.dependsOn(getTasksByName("assembleRelease", true))
// create an archive class that known how to handle apk files.
// apk files are just renamed jars.
class Apk extends Jar {
def String getExtension() {
return 'apk'
}
}
// create a task that uses our apk task class.
task googlePlayApk(type: Apk) {
classifier = 'googlePlay'
from file("${project.buildDir}/outputs/apk/myApp-googlePlay-release.apk")
}
// add the item to the artifacts
artifacts {
archives googlePlay
}
我想提到的解决方案,但我始终有一个“apk文件不存在”时,詹金斯试图将APK文件上传到我们的关系资源库的问题。 在gradle插件的文档中,路径以“build”文件夹开头。 (https://docs.gradle.org/current/userguide/artifact_management.html)
我试图向路径注入一些env变量,但詹金斯总是抱怨“找不到文件”。我想出了这个解决方案,它很简单。
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
}
这将在“zip”文件中“zip”“apk”。运行“解压缩googlePlay.apk”显示“apk”中有一个“apk”。试图“adb isntall googlePlay.apk”不起作用。 – 2015-03-04 20:45:51