From bcb91d87db014aeced5d0747d620a6a1d0b2270b Mon Sep 17 00:00:00 2001
From: Lennart Goedhart <lennart@omnibase.com.au>
Date: Sun, 22 May 2016 14:42:25 +1000
Subject: [PATCH] More grade release automation work for #15

---
 app/app.iml                          |  4 +-
 app/build.gradle                     | 62 ++++++++++++++++++++++++++++
 app/gradle.properties                |  2 +-
 app/src/main/AndroidManifest.xml     |  3 +-
 app/src/main/res/values/strings.xml  |  1 -
 app/src/main/res/xml/preferences.xml |  2 +-
 6 files changed, 68 insertions(+), 6 deletions(-)

diff --git a/app/app.iml b/app/app.iml
index 2b5e236..f00cf65 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="640gAndroidUploader" external.system.module.version="0.2.0" type="JAVA_MODULE" version="4">
+<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="640gAndroidUploader" external.system.module.version="0.2.1" type="JAVA_MODULE" version="4">
   <component name="FacetManager">
     <facet type="android-gradle" name="Android-Gradle">
       <configuration>
@@ -106,6 +106,8 @@
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
       <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
       <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+      <excludeFolder url="file://$MODULE_DIR$/build/reports" />
+      <excludeFolder url="file://$MODULE_DIR$/build/test-results" />
       <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
     </content>
     <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
diff --git a/app/build.gradle b/app/build.gradle
index 98bf251..d1bc88b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -4,14 +4,25 @@ plugins {
 
 apply plugin: 'com.android.application'
 
+def gitVersion() {
+    def process = ['sh', '-c', 'git tag -l | grep -c ".*" -'].execute().text.trim()
+    return process.toInteger() + 1
+}
+
 android {
     compileSdkVersion 21
     buildToolsVersion "23.0.3"
 
+    applicationVariants.all { variant ->
+        variant.resValue "string", "versionName", variant.versionName
+    }
+
     defaultConfig {
         applicationId "info.nightscout.android"
         minSdkVersion 15
         targetSdkVersion 21
+        versionName project.properties['version']
+        versionCode gitVersion()
     }
 
     buildTypes {
@@ -28,8 +39,59 @@ android {
     }
 }
 
+task signRelease << {
+    def command = [
+            'jarsigner',
+            '-verbose',
+            '-sigalg',
+            'SHA1withRSA',
+            '-digestalg',
+            'SHA1',
+            '-keystore',
+            '/Users/lgoedhart/keystores/nightscout_android.jks',
+            'app/build/outputs/apk/app-release-unsigned.apk',
+            'nightscoutandroidkey'
+    ]
+
+    def proc = new ProcessBuilder(command)
+            .redirectOutput(ProcessBuilder.Redirect.INHERIT)
+            .redirectInput(ProcessBuilder.Redirect.INHERIT)
+            .redirectError(ProcessBuilder.Redirect.INHERIT)
+            .start()
+
+    proc.waitFor()
+
+    if (0 != proc.exitValue()) {
+        throw new RuntimeException("Could not sign APK.")
+    }
+}
+
+task zipalignRelease << {
+    def command = [
+            '/Users/lgoedhart/Library/Android/sdk/build-tools/23.0.3/zipalign',
+            '-v',
+            '4',
+            'app/build/outputs/apk/app-release-unsigned.apk',
+            'app/build/outputs/apk/640g-android-uploader.apk'
+    ]
+
+    def proc = new ProcessBuilder(command)
+            .redirectOutput(ProcessBuilder.Redirect.INHERIT)
+            .redirectInput(ProcessBuilder.Redirect.INHERIT)
+            .redirectError(ProcessBuilder.Redirect.INHERIT)
+            .start()
+
+    proc.waitFor()
+
+    if (0 != proc.exitValue()) {
+        throw new RuntimeException("Could not align APK.")
+    }
+}
+
 release {
     tagTemplate = 'v${version}'
+    buildTasks = ['assembleRelease']
+    afterReleaseBuild.dependsOn 'signRelease', 'zipalignRelease'
 }
 
 dependencies {
diff --git a/app/gradle.properties b/app/gradle.properties
index ac7979d..6324588 100644
--- a/app/gradle.properties
+++ b/app/gradle.properties
@@ -1 +1 @@
-version=0.2.1
\ No newline at end of file
+version=0.2.0-SNAPSHOT
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9b3a7d6..1f9b4a4 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,8 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="info.nightscout.android"
-    android:versionCode="1"
-    android:versionName="@string/version" >
+    >
 
     <uses-sdk
         android:maxSdkVersion="21"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b629689..a0f1803 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -13,7 +13,6 @@
     <string name="eula_title">Disclaimer</string>
     <string name="eula_accept">Accept</string>
     <string name="eula_refuse">Refuse</string>
-    <string name="version">0.2.0</string>
     <style name="ButtonText">
     <item name="android:layout_width">fill_parent</item>
     <item name="android:layout_height">wrap_content</item>
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 6a7d8a6..fbbea6a 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -59,7 +59,7 @@
 	<PreferenceCategory android:title="App Version">
 	      <Preference 
 		 android:key="version"
-		 android:title="@string/version" />
+		 android:title="@string/versionName" />
    		 </PreferenceCategory>
     <PreferenceCategory android:title="Debug">
     <ListPreference
-- 
GitLab