在Maven中,發佈過程沒有問題。由於我不得不在Gradle中使用Android Studio,因此我想實現與Eclipse和Maven一樣的行爲。我發現了一些相當不錯的Maven-like發佈插件(https://github.com/researchgate/gradle-release),它幾乎按預期工作,但它沒有上傳發布apk,雖然它正確地創建了在/app/build/outputs/apk
中的apk以及在我的SVN存儲庫中帶有源代碼的標籤。發佈文件夾仍然是空的。我甚至不確定這個插件是否可以做到這一點,因爲它沒有很好的文檔記錄,但我想我需要告訴這個插件上傳什麼以及在哪裏找到它。只有一個afterReleaseBuild.dependsOn uploadArchives
。這是什麼意思,我不得不重寫這個uploadArchives
方法,或者這在Gradle中意味着什麼?它似乎是內置的東西,因爲如果我在腳本中編寫並運行gradlew release
,Gradle構建不會投訴。很顯然,插件已經知道存儲庫並且可以通過ssh連接,否則它不能創建標籤,但似乎它不知道要上傳什麼,發佈文件夾保持空白。同時我試圖通過很多其他Gradle嘗試來解決這個問題,例如,使用Maven插件,但是之後我遇到了SSH證書問題而沒有解決方案,即使它可以工作,也不是一個好的解決方案,因爲我不想創建pom.xml文件等等,它會只是一種解決方法。Android Studio,Gradle:如何自動發佈release.apk到svn倉庫?
目標是釋放過程應自動創建在名爲像目前版本的svn庫的版本文件夾的文件夾(因爲它已經在標籤的文件夾,例如1.0.0工程),並釋放APK複製到它已經被Gradle重命名爲myapp-app-1.0.0-release.apk,因爲這是本地輸出文件夾中包的名稱。
這裏是我的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