[Android Software Development] Deltadroid:
Google Play Services and Google Play Games

Google Play Services has been updated to version 7.0.99-1809214 for kitkat (4.4.4) and lollipop (5.0.2 and 5.1).

All of these packages can be installed on top of their previous versions to update. No wiping necessary.

Kitkat Base Gapps package for 4.4.4: gapps-444-base-20150327-1-signed.zip

Lollipop Base Gapps package for 5.0.2: gapps-502-base-20150327-1-signed.zip

Lollipop Base Gapps package for 5.1.0: gapps-510-base-20150327-1-signed.zip

Binary files gapps-444-base-20150326-1-signed/optional/gms/0/priv-app/PrebuiltGmsCore.apk and gapps-444-base-20150327-1-signed/optional/gms/0/priv-app/PrebuiltGmsCore.apk differ
Binary files gapps-444-base-20150326-1-signed/optional/gms/2/priv-app/PrebuiltGmsCore.apk and gapps-444-base-20150327-1-signed/optional/gms/2/priv-app/PrebuiltGmsCore.apk differ
Binary files gapps-444-base-20150326-1-signed/optional/gms/4/priv-app/PrebuiltGmsCore.apk and gapps-444-base-20150327-1-signed/optional/gms/4/priv-app/PrebuiltGmsCore.apk differ
Binary files gapps-444-base-20150326-1-signed/optional/gms/6/priv-app/PrebuiltGmsCore.apk and gapps-444-base-20150327-1-signed/optional/gms/6/priv-app/PrebuiltGmsCore.apk differ
Binary files gapps-444-base-20150326-1-signed/optional/gms/8/priv-app/PrebuiltGmsCore.apk and gapps-444-base-20150327-1-signed/optional/gms/8/priv-app/PrebuiltGmsCore.apk differ
Binary files gapps-444-base-20150326-1-signed/system/lib/libAppDataSearch.so and gapps-444-base-20150327-1-signed/system/lib/libAppDataSearch.so differ
Binary files gapps-444-base-20150326-1-signed/system/lib/libgmscore.so and gapps-444-base-20150327-1-signed/system/lib/libgmscore.so differ

diff -ru gapps-502-base-20150318-1-signed/META-INF/com/google/android/updater-script gapps-502-base-20150327-1-signed/META-INF/com/google/android/updater-script
--- gapps-502-base-20150318-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
+++ gapps-502-base-20150327-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
@@ -4,6 +4,7 @@

ui_print("Mounting system.");
run_program("/sbin/busybox", "mount", "/system");
+run_program("/sbin/mount", "-o", "remount,rw", "/system", "/system");
show_progress(1, 15);

ui_print("Cleaning system.");
Binary files gapps-502-base-20150318-1-signed/optional/gms/0/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-502-base-20150327-1-signed/optional/gms/0/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-502-base-20150318-1-signed/optional/gms/4/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-502-base-20150327-1-signed/optional/gms/4/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-502-base-20150318-1-signed/optional/gms/6/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-502-base-20150327-1-signed/optional/gms/6/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-502-base-20150318-1-signed/optional/gms/8/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-502-base-20150327-1-signed/optional/gms/8/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-502-base-20150318-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libAppDataSearch.so and gapps-502-base-20150327-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libAppDataSearch.so differ
Binary files gapps-502-base-20150318-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libgmscore.so and gapps-502-base-20150327-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libgmscore.so differ

diff -ru gapps-510-base-20150318-1-signed/META-INF/com/google/android/updater-script gapps-510-base-20150327-1-signed/META-INF/com/google/android/updater-script
--- gapps-510-base-20150318-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
+++ gapps-510-base-20150327-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
@@ -4,6 +4,7 @@

ui_print("Mounting system.");
run_program("/sbin/busybox", "mount", "/system");
+run_program("/sbin/mount", "-o", "remount,rw", "/system", "/system");
show_progress(1, 15);

ui_print("Cleaning system.");
Binary files gapps-510-base-20150318-1-signed/optional/gms/0/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-510-base-20150327-1-signed/optional/gms/0/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-510-base-20150318-1-signed/optional/gms/4/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-510-base-20150327-1-signed/optional/gms/4/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-510-base-20150318-1-signed/optional/gms/6/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-510-base-20150327-1-signed/optional/gms/6/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-510-base-20150318-1-signed/optional/gms/8/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk and gapps-510-base-20150327-1-signed/optional/gms/8/priv-app/PrebuiltGmsCore/PrebuiltGmsCore.apk differ
Binary files gapps-510-base-20150318-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libAppDataSearch.so and gapps-510-base-20150327-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libAppDataSearch.so differ
Binary files gapps-510-base-20150318-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libgmscore.so and gapps-510-base-20150327-1-signed/system/priv-app/PrebuiltGmsCore/lib/arm/libgmscore.so differ

Additionally, I have updated the installation script for the Google Play Games addon so that a DPI specific version of Google Play Games will be installed, depending on the DPI that is defined in /system/build.prop. Installing the DPI specific version of Google Play Games will save space on the internal sdcard. All of these packages can be installed on top of their previous versions to update. No wiping necessary.

Google Play Games addon for 4.4.4: gapps-kk-google-games-20150327-1-signed.zip

Google Play Games addon for 5.0.2+: gapps-lp-google-games-20150327-1-signed.zip

diff -ruN gapps-kk-google-games-20150326-1-signed/install-optional.sh gapps-kk-google-games-20150327-1-signed/install-optional.sh
--- gapps-kk-google-games-20150326-1-signed/install-optional.sh	1970-01-01 01:00:00.000000000 +0100
+++ gapps-kk-google-games-20150327-1-signed/install-optional.sh	2008-02-29 03:33:46.000000000 +0100
@@ -0,0 +1,22 @@
+#!/sbin/sh
+
+LCD=$(grep ro.sf.lcd_density /system/build.prop | cut -d "=" -f 2);
+
+if [ $LCD == 160 ]; then
+ echo "LCD 160 detected."
+ cp -f /tmp/games/2/PlayGames.apk /system/app/
+elif [ $LCD == 240 ]; then
+ echo "LCD 240 detected."
+ cp -f /tmp/games/4/PlayGames.apk /system/app/
+elif [ $LCD == 320 ]; then
+ echo "LCD 320 detected."
+ cp -f /tmp/games/6/PlayGames.apk /system/app/
+elif [ $LCD == 480 ]; then
+ echo "LCD 480 detected."
+ cp -f /tmp/games/8/PlayGames.apk /system/app/
+else
+ echo "LCD value not found. Installing default."
+ cp -f /tmp/games/0/PlayGames.apk /system/app/
+fi
+rm -rf /tmp/games
+
diff -ruN gapps-kk-google-games-20150326-1-signed/META-INF/com/google/android/updater-script gapps-kk-google-games-20150327-1-signed/META-INF/com/google/android/updater-script
--- gapps-kk-google-games-20150326-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
+++ gapps-kk-google-games-20150327-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
@@ -4,9 +4,14 @@

ui_print("Installing files.");
run_program("/sbin/busybox", "mount", "/system");
+run_program("/sbin/mount", "-o", "remount,rw", "/system", "/system");
show_progress(1, 15);
delete("/system/app/PlayGames.apk");
package_extract_dir("system", "/system");
+package_extract_dir("optional", "/tmp");
+package_extract_file("install-optional.sh", "/tmp/install-optional.sh");
+set_perm(0, 0, 0777, "/tmp/install-optional.sh");
+run_program("/tmp/install-optional.sh", "");
show_progress(1, 15);
ui_print("Setting metadata.");
set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
Binary files gapps-kk-google-games-20150326-1-signed/optional/games/0/PlayGames.apk and gapps-kk-google-games-20150327-1-signed/optional/games/0/PlayGames.apk differ
Binary files gapps-kk-google-games-20150326-1-signed/optional/games/2/PlayGames.apk and gapps-kk-google-games-20150327-1-signed/optional/games/2/PlayGames.apk differ
Binary files gapps-kk-google-games-20150326-1-signed/optional/games/4/PlayGames.apk and gapps-kk-google-games-20150327-1-signed/optional/games/4/PlayGames.apk differ
Binary files gapps-kk-google-games-20150326-1-signed/optional/games/6/PlayGames.apk and gapps-kk-google-games-20150327-1-signed/optional/games/6/PlayGames.apk differ
Binary files gapps-kk-google-games-20150326-1-signed/optional/games/8/PlayGames.apk and gapps-kk-google-games-20150327-1-signed/optional/games/8/PlayGames.apk differ
Binary files gapps-kk-google-games-20150326-1-signed/system/app/PlayGames.apk and gapps-kk-google-games-20150327-1-signed/system/app/PlayGames.apk differ

diff -ruN gapps-lp-google-games-20150326-1-signed/install-optional.sh gapps-lp-google-games-20150327-1-signed/install-optional.sh
--- gapps-lp-google-games-20150326-1-signed/install-optional.sh	1970-01-01 01:00:00.000000000 +0100
+++ gapps-lp-google-games-20150327-1-signed/install-optional.sh	2008-02-29 03:33:46.000000000 +0100
@@ -0,0 +1,24 @@
+#!/sbin/sh
+
+LCD=$(grep ro.sf.lcd_density /system/build.prop | cut -d "=" -f 2);
+
+mkdir /system/app/PlayGames
+
+if [ $LCD == 160 ]; then
+ echo "LCD 160 detected."
+ cp -f /tmp/games/2/PlayGames.apk /system/app/PlayGames/
+elif [ $LCD == 240 ]; then
+ echo "LCD 240 detected."
+ cp -f /tmp/games/4/PlayGames.apk /system/app/PlayGames/
+elif [ $LCD == 320 ]; then
+ echo "LCD 320 detected."
+ cp -f /tmp/games/6/PlayGames.apk /system/app/PlayGames/
+elif [ $LCD == 480 ]; then
+ echo "LCD 480 detected."
+ cp -f /tmp/games/8/PlayGames.apk /system/app/PlayGames/
+else
+ echo "LCD value not found. Installing default."
+ cp -f /tmp/games/0/PlayGames.apk /system/app/PlayGames/
+fi
+rm -rf /tmp/games
+
diff -ruN gapps-lp-google-games-20150326-1-signed/META-INF/com/google/android/updater-script gapps-lp-google-games-20150327-1-signed/META-INF/com/google/android/updater-script
--- gapps-lp-google-games-20150326-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
+++ gapps-lp-google-games-20150327-1-signed/META-INF/com/google/android/updater-script	2008-02-29 03:33:46.000000000 +0100
@@ -4,9 +4,14 @@

ui_print("Installing files.");
run_program("/sbin/busybox", "mount", "/system");
+run_program("/sbin/mount", "-o", "remount,rw", "/system", "/system");
show_progress(1, 15);
delete_recursive("/system/app/PlayGames");
package_extract_dir("system", "/system");
+package_extract_dir("optional", "/tmp");
+package_extract_file("install-optional.sh", "/tmp/install-optional.sh");
+set_perm(0, 0, 0777, "/tmp/install-optional.sh");
+run_program("/tmp/install-optional.sh", "");
show_progress(1, 15);
ui_print("Setting metadata.");
set_metadata_recursive("/system/addon.d", "uid", 0, "gid", 0, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
Binary files gapps-lp-google-games-20150326-1-signed/optional/games/0/PlayGames.apk and gapps-lp-google-games-20150327-1-signed/optional/games/0/PlayGames.apk differ
Binary files gapps-lp-google-games-20150326-1-signed/optional/games/2/PlayGames.apk and gapps-lp-google-games-20150327-1-signed/optional/games/2/PlayGames.apk differ
Binary files gapps-lp-google-games-20150326-1-signed/optional/games/4/PlayGames.apk and gapps-lp-google-games-20150327-1-signed/optional/games/4/PlayGames.apk differ
Binary files gapps-lp-google-games-20150326-1-signed/optional/games/6/PlayGames.apk and gapps-lp-google-games-20150327-1-signed/optional/games/6/PlayGames.apk differ
Binary files gapps-lp-google-games-20150326-1-signed/optional/games/8/PlayGames.apk and gapps-lp-google-games-20150327-1-signed/optional/games/8/PlayGames.apk differ
Binary files gapps-lp-google-games-20150326-1-signed/system/app/PlayGames/PlayGames.apk and gapps-lp-google-games-20150327-1-signed/system/app/PlayGames/PlayGames.apk differ