В Maven процесс выпуска работает без проблем. Поскольку я был вынужден использовать Android Studio с Gradle, я хочу добиться такого же поведения, как и с Eclipse и Maven. Я нашел неплохой Maven-подобный плагин выпуска (https://github.com/researchgate/gradle-release), он почти работает так, как ожидалось, но он не загружает apk версии, хотя он правильно создает apk в /app/build/outputs/apk
и тег с исходным кодом в моем репозитории SVN. Папка выпуска по-прежнему пуста. Я даже не уверен, может ли этот плагин сделать это, потому что он не очень хорошо документирован, но я думаю, мне нужно сказать этому плагину, что загрузить и где его найти. Существует только afterReleaseBuild.dependsOn uploadArchives
. Что это значит, что я должен переопределить этот метод uploadArchives
или что это значит в Gradle? Кажется, что-то встроено, потому что Gradle build не жалуется, если я пишу это в своем скрипте и запускаю gradlew release
. Очевидно, что плагин уже знает репозиторий и может подключаться через ssh, иначе он не смог бы создать тег, но кажется, что он не знает, что загрузить, папки выпуска остаются пустыми. Тем временем я пытался решить это с помощью множества других попыток Gradle, например. с плагином Maven, но затем я столкнулся с проблемами сертификата SSH без решения, и даже если это сработает, это не будет хорошим решением, потому что я не хочу создавать файлы pom.xml или так далее. были всего лишь обходным решением.Android Studio, Gradle: как автоматически публиковать release.apk в svn-репозиторий?
Цель состоит в том, чтобы процесс выпуска автоматически создавал папку в папке выпусков репозитория svn, которая называется текущей версией (как она уже работает в папке тегов, например 1.0.0), и копирует выпущенный apk в который уже был переименован в myapp-app-1.0.0-release.apk от Gradle, так как это имя пакета в локальной выходной папке.
Вот мой текущий Gradle скрипт, который может генерировать релиз APK в выходной папке, но не загружает его в SVN:
apply plugin: 'com.android.application'
apply plugin: 'net.researchgate.release'
def keystorePropertiesFile = rootProject.file("/home/myuser/.android/keystore.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
lintOptions {
//TODO remove this or set to true
abortOnError false
}
signingConfigs {
myapp_release_config {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
compileSdkVersion 24
buildToolsVersion "24.0.1"
packagingOptions {
exclude 'META-INF/ASL2.0'
}
defaultConfig {
applicationId "com.mydomain.myapp"
minSdkVersion 9
targetSdkVersion 24
versionCode 1
versionName '1.0.0'
archivesBaseName = "myapp-app-$versionName"
}
buildTypes {
debug {
debuggable true
zipAlignEnabled false
}
release {
minifyEnabled true
proguardFiles 'proguard-rules.pro'
signingConfig signingConfigs.myapp_release_config
afterReleaseBuild.dependsOn uploadArchives
}
}
}
release {
failOnUnversionedFiles = false
svn {
username = 'myuser'
password = 'mypassword'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.mydomain.myapp:model:1.0'
//support-v4
compile 'com.android.support:support-core-utils:24.2.0'
compile 'com.android.support:support-fragment:24.2.0'
//compile 'com.android.support:multidex:1.0.0'
//support-design
compile 'com.android.support:design:24.2.0'
//support-v7
compile 'com.android.support:appcompat-v7:24.2.0'
//FlowLayout
compile 'com.wefika:flowlayout:0.4.1'
compile 'javax.validation:validation-api:1.1.0.Final'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13'
testCompile 'junit:junit:4.12'
testCompile 'org.hamcrest:hamcrest-all:1.3'
}
Я Бесполезный Не тестируйте его, но, поскольку, очевидно, нет другого решения, я соглашусь с вами. – Bevor