Mavenでは、リリースプロセスは問題なく動作します。私はGradleでAndroid Studioを使用することを余儀なくされたので、EclipseとMavenの場合と同じ動作を実現したいと思います。 /app/build/outputs/apk
のapkと私のSVNリポジトリのソースコードを持つタグを正しく作成していますが、かなり良いMaven風のリリースプラグイン(https://github.com/researchgate/gradle-release)が見つかりました。リリースフォルダはまだ空です。私はこのプラグインがそれを行うことができるかどうかもよく分かっていません。なぜなら、それはあまりよく文書化されていないからですが、私はこのプラグインに何をアップロードし、どこで見つけるべきかを伝える必要があると思います。 afterReleaseBuild.dependsOn uploadArchives
しかありません。これが意味することは、このuploadArchives
メソッドをオーバーライドする必要があること、またはこれがGradleで何を意味するのか?私がスクリプトにこれを書いてgradlew release
を実行すると、Gradleビルドが文句を言うことがないので、それは組み込みのものであるようです。明らかに、プラグインはすでにリポジトリを知っていてssh経由で接続できます。それ以外の場合はタグを作成できませんでしたが、アップロードする内容がわからないようですが、リリースフォルダは空のままです。一方、私は他の多くのGradleの試みでそれを解決しようとしました。 Mavenプラグインを使用していますが、ソリューションなしでSSH証明書の問題に遭遇します。たとえ動作しても、pom.xmlファイルなどを作成したくないため、良い解決策ではありません。回避策に過ぎませんでした。Androidスタジオ、Gradle:自動的にrelease.apkをsvnリポジトリに公開する方法は?
ターゲットは、リリースプロセスがsvnリポジトリのreleasesフォルダに現在のバージョンと同じ名前(例:1.0.0など)であるという名前のフォルダを自動的に作成し、リリースされたapkをこれはGradleによって既にmyapp-app-1.0.0-release.apkという名前に変更されています。これはローカルの出力フォルダにあるパッケージの名前です。ここで
が出力フォルダでリリースAPKを生成することができますが、SVNにアップロードしていない私の現在のGradleスクリプトです:あなたは、あなたのbuild.gradleにタスクを追加することができます
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'
}
私はdidnのを読んでまだテストはしていませんが、明らかに他の解決策はないので、私はあなたを受け入れます。 – Bevor