2016-09-07 6 views
7

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' 
} 

答えて

1

これは、公開用のサンプルタスクとbashスクリプトです:

task publishit (type: Exec) { 
 
    commandLine './publish.sh', android.defaultConfig.versionName 
 
} 
 
assembleRelease.finalizedBy(publishit)

、アプリのパスにpublish.shを入れて(そしてそれを実行可能にする)あなたはより多くの情報のため、Gradleの構文でそれを行うことができます

#!/bin/bash 
 
    
 
### Settings 
 
svn_path='/path/to/repo/' 
 
svn_user='user' 
 
svn_password='password' 
 
app_prefix='myapp-app-' 
 
app_suffix='-release.apk' 
 
release_name='app-release.apk' 
 
dir='/' 
 

 
current_path=`pwd` 
 
release_path=$current_path$dir$release_name 
 
code_name=$1 
 
app_path=$svn_path$code_name$dir$app_prefix$code_name$app_suffix 
 

 
cd $svn_path 
 
mkdir $code_name 
 
cp $release_path $app_path 
 

 
# check and fix these: 
 
svn add $code_name 
 
svn update 
 
svn commit -m "new version" --username $svn_user --password $svn_passwd > publish_log

here

+0

私はdidnのを読んでまだテストはしていませんが、明らかに他の解決策はないので、私はあなたを受け入れます。 – Bevor

関連する問題