Как опубликовать артефакты в Gradle 4.4 в Android Studio (Загрузить APK на Nexus)?
Я пытаюсь загрузить свой APK в хранилище Nexus. Ниже код работает нормально, пока я не изменил версию Gradle
от
classpath 'com.android.tools.build:gradle:2.3.3' distributionUrl=https://services.gradle.org/distributions/gradle-3.3-all.zip mCompileSdkVersion=23 mBuildToolsVersion='25.0.0'
к
classpath 'com.android.tools.build:gradle:3.1.0' distributionUrl=https://services.gradle.org/distributions/gradle-4.4-all.zip mCompileSdkVersion=27 mBuildToolsVersion='27.0.0'
После изменения версий тот же код не работает, я не могу понять, где я нашел ошибку, Терминал не показывает сообщение об ошибке, но мой APK не загружен в указанном месте
Ниже приведена текущая конфигурация моего файла приложения build.gradle.
apply plugin: 'com.android.application'
apply plugin: 'maven'
task uploadRelease (type: Upload){
configuration = project.getConfigurations().getByName('archives');
repositories {
mavenDeployer {
repository( url: "http://XXXXXXXX:8081/nexus/XXXXXXXX/repositories/releases" ) {
authentication(userName: "MyuserName", password: "Mypassword")
}
pom.project {
version "${android.defaultConfig.versionName}"
artifactId "Collection"
name "xxxxxxxx"
groupId "com.xxxxxxxx.mobile.xxxxxxxx.collections"
}
}
}
}
task uploadSnapshot (type: Upload){
configuration = project.getConfigurations().getByName('archives');
repositories {
mavenDeployer {
repository( url: "http://XXXXXXXX:8081/nexus/XXXXXXXX/repositories/snapshots" ) {
authentication(userName: "MyuserName", password: "Mypassword")
}
pom.project {
version "${android.defaultConfig.versionName}-SNAPSHOT"
artifactId "Collection"
name "Collection"
groupId "com.xxxxxxxx.mobile.xxxxxxxx.collections"
}
}
}
}
Я использую Команду как - gradle assemblerelease uploadsnapshot
создать и загрузить APK, но он не работает для gradle 4.4 Пожалуйста, дайте мне знать, что пошло не так
2 ответа
Новый Android Gradle Plugin версии 3.+ переместить apk по другим путям по сравнению с 2.2.3.
Некоторые ошибки могут произойти в нижней строке
configuration = project.getConfigurations().getByName('archives');
использование gradle assemblerelease uploadsnapshot --debug --info --stacktrace
собрать больше информации и проанализировать журналы ошибок.
Старое расположение apk
build/outputs/apk/*.apk
расположение apk для AGP 3.x
build/outputs/apk/<flavour>/<buildtype>/<name>-<buildtype>.apk
так
def apk = file('build/outputs/apk/release/iMobility-release.apk')
artifacts {
archives apk
}
Это должно переписать пути архивов с правильным местоположением apk.
Не фактический ответ, но то, что работа для меня
Поместите эту строку ниже вашего
task uploadSnapshot (type: Upload){
configuration = project.getConfigurations().getByName('archives');
repositories {
mavenDeployer {
repository( url: "http://XXXXXXXX:8081/nexus/XXXXXXXX/repositories/snapshots" ) {
authentication(userName: "MyuserName", password: "Mypassword")
}
pom.project {
version "${android.defaultConfig.versionName}-SNAPSHOT"
artifactId "Collection"
name "Collection"
groupId "com.xxxxxxxx.mobile.xxxxxxxx.collections"
}
}
}
}
def apk = file('build/outputs/apk/release/iMobility-release.apk')
artifacts {
archives apk
}
Кто-нибудь может объяснить это почему? и есть лучший вариант, чем этот?