Merge "Packaging for full SDK release"
diff --git a/build.gradle b/build.gradle
index b838a5e..579b4ee 100644
--- a/build.gradle
+++ b/build.gradle
@@ -538,6 +538,14 @@
             includeEmptyDirs = false
 	}
 	copy {
+            from file(joinPath('samples', "tuningfork", "scaledballs"))
+            into file(joinPath(buildFolder, 'samples', "tuningfork", "scaledballs"))
+            exclude '**/build', '**/out', "local.properties", "**/.externalNativeBuild", "**/.gradle",
+		"**/OWNERS", "**/.idea", '**/CMakeLists.txt'
+            rename 'CMakeLists.for-samples-in-archive.txt', 'CMakeLists.txt'
+            includeEmptyDirs = false
+	}
+	copy {
             from file(joinPath('src', 'protobuf'))
             into file(joinPath(buildFolder, 'src', 'protobuf'))
             includeEmptyDirs = false
diff --git a/build.sh b/build.sh
index 1970999..fc17a6f 100755
--- a/build.sh
+++ b/build.sh
@@ -1,41 +1,101 @@
 #!/bin/bash
+# Gamesdk build driver script
+# Usage:
+# ./build.sh
+#   Builds the gamesdk with Swappy only
+# ./build.sh samples
+#   Builds the gamesdk with Swappy and the Swappy samples
+# ./build.sh full
+#   Builds the gamesdk with Tuning Fork and all samples
+
 set -e # Exit on error
 export ANDROID_HOME=`pwd`/../prebuilts/sdk
 export ANDROID_NDK_HOME=`pwd`/../prebuilts/ndk/r20
 if [[ $1 == "full" ]]
     then
         TARGET=fullSdkZip
+	OUTDIR=fullsdk
     else
         TARGET=gamesdkZip
+	OUTDIR=gamesdk
 fi
 ./gradlew $TARGET
 
-# Build samples
-cp -Rf samples/sdk_licenses ../prebuilts/sdk/licenses
-pushd samples/bouncyball
-./gradlew build
-popd
-pushd samples/cube
-./gradlew build
-popd
-pushd samples/tuningfork/expertballs
-./gradlew build
-popd
-pushd test/tuningfork/testapp
-./gradlew build
-popd
-
-dist_dir=$DIST_DIR
-if [[ -z dist_dir ]]
-    then
-        export dist_dir=`pwd`/../
+if [[ -z $DIST_DIR ]]
+then
+    dist_dir=`pwd`/../package/$OUTDIR
+else
+    dist_dir=$DIST_DIR/$OUTDIR
 fi
 
+relative_apk_dir=gamesdk/apks
+apk_dir=$dist_dir/$relative_apk_dir
+
 if [[ $1 == "samples" ]] || [[ $1 == "full" ]]
-    then
-        mkdir -p $dist_dir/samples
-        cp samples/bouncyball/app/build/outputs/apk/debug/app-debug.apk \
-            $dist_dir/samples/bouncyball.apk
-        cp samples/tuningfork/expertballs/app/build/outputs/apk/debug/app-debug.apk \
-            $dist_dir/samples/expertballs.apk
+then
+   mkdir -p $apk_dir/samples
+   mkdir -p $apk_dir/test
+   mkdir -p $apk_dir/tools
 fi
+
+# Swappy samples etc.
+if [[ $1 == "samples" ]] || [[ $1 == "full" ]]
+then
+    # Build samples
+    cp -Rf samples/sdk_licenses ../prebuilts/sdk/licenses
+    pushd samples/bouncyball
+    ./gradlew build
+    popd
+    pushd samples/cube
+    ./gradlew build
+    popd
+    pushd test/swappy/testapp
+    ./gradlew build
+    popd
+
+    # Copy to $apk_dir
+    cp samples/bouncyball/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/samples/bouncyball.apk
+    cp third_party/cube/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/samples/cube.apk
+    cp test/swappy/testapp/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/test/swappytest.apk
+fi
+
+# Tuning fork samples etc.
+if [[ $1 == "full" ]]
+then
+    # Build samples
+    pushd samples/tuningfork/expertballs
+    ./gradlew build
+    popd
+    pushd samples/tuningfork/scaledballs
+    ./gradlew build
+    popd
+    pushd test/tuningfork/testapp
+    ./gradlew build
+    popd
+    
+    # Copy to $apk_dir
+    cp samples/tuningfork/expertballs/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/samples/expertballs.apk
+    cp samples/tuningfork/scaledballs/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/samples/scaledballs.apk
+    cp src/tuningfork/tools/TuningForkMonitor/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/tools/TuningForkMonitor.apk
+    cp test/tuningfork/testapp/app/build/outputs/apk/debug/app-debug.apk \
+      $apk_dir/test/tuningforktest.apk    
+fi
+
+# Package the apks into the zip file
+if [[ $1 == "samples" ]] || [[ $1 == "full" ]]
+then
+  pushd $dist_dir
+  zip -r -u gamesdk.zip $relative_apk_dir
+  popd
+fi
+
+# Calculate hash of the zip file
+pushd $dist_dir
+sha256sum gamesdk.zip > gamesdk.zip.sha256
+popd
diff --git a/src/tuningfork/tools/TuningForkMonitor/app/build.gradle b/src/tuningfork/tools/TuningForkMonitor/app/build.gradle
index 0e1b7ad..755d332 100644
--- a/src/tuningfork/tools/TuningForkMonitor/app/build.gradle
+++ b/src/tuningfork/tools/TuningForkMonitor/app/build.gradle
@@ -34,6 +34,9 @@
             }
         }
     }
+    lintOptions {
+        abortOnError false
+    }
 }
 
 dependencies {
diff --git a/src/tuningfork/tools/TuningForkMonitor/gradlew b/src/tuningfork/tools/TuningForkMonitor/gradlew
old mode 100644
new mode 100755
diff --git a/test/swappy/testapp/app/build.gradle b/test/swappy/testapp/app/build.gradle
index 7e71093..616d29b 100644
--- a/test/swappy/testapp/app/build.gradle
+++ b/test/swappy/testapp/app/build.gradle
@@ -21,6 +21,14 @@
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
+	debug {
+	    debuggable true
+	    externalNativeBuild {
+		cmake {
+		    cppFlags "-DDEBUG=1"
+		}
+	    }
+	}
     }
     externalNativeBuild {
         cmake {
diff --git a/test/tuningfork/testapp/app/build.gradle b/test/tuningfork/testapp/app/build.gradle
index 0263fee..5dc8530 100644
--- a/test/tuningfork/testapp/app/build.gradle
+++ b/test/tuningfork/testapp/app/build.gradle
@@ -21,6 +21,9 @@
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
+	debug {
+	    debuggable true
+	}
     }
     externalNativeBuild {
         cmake {