From 209a16fd9f408f93f7e9bb98b217cd74860169fa Mon Sep 17 00:00:00 2001 From: Sergii Pylypenko Date: Wed, 27 Sep 2017 22:09:57 +0300 Subject: [PATCH] SDL: fixed Google Play Game Services linking --- aar2jar.py | 107 ------------------ build.sh | 20 +--- changeAppSettings.sh | 67 ++--------- project/AndroidManifestTemplate.xml | 5 +- project/app/build-template.gradle | 12 +- project/build.gradle | 5 +- .../openttd/AndroidAppSettings.cfg | 4 +- project/project.properties | 14 --- 8 files changed, 32 insertions(+), 202 deletions(-) delete mode 100755 aar2jar.py delete mode 100644 project/project.properties diff --git a/aar2jar.py b/aar2jar.py deleted file mode 100755 index 25f9bdfdf..000000000 --- a/aar2jar.py +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/python - -# aar2jar.py (c) kak2 -# https://github.com/kak2/aar2jar - -import sys, getopt, os -import shutil -import zipfile - -mswindows = (sys.platform == "win32") -def main(argv): - project_name = '' - output_dir = '' - if len(argv) == 0: - help() - sys.exit(2) - try: - opts, args = getopt.getopt(argv,"hi:o:",["iname=","odir="]) - except getopt.GetoptError: - help() - sys.exit(2) - for opt, arg in opts: - if opt == '-h': - help() - sys.exit() - elif opt in ("-i", "--iname"): - project_name = arg - elif opt in ("-o", "--odir"): - output_dir = arg - - convert(project_name, output_dir) - -def help(): - print 'convert.py -i -o ' - -def convert(project_name, output_dir): - if not existProject(project_name): - print project_name, " is not existed in current directory" - sys.exit(2) - createOrCleanOutputDir(output_dir) - - # Convert your project first - convert_project(project_name, output_dir) - # Move all jar and convert other aar files - files = os.listdir(os.curdir) - for file in files: - file_name, extension = os.path.splitext(file) - print file_name, extension - if extension == '.jar': - shutil.move(file, os.path.join(output_dir, project_name, 'libs', file)) - elif extension == '.aar': - if file_name != project_name: - convert_project(file_name, output_dir) - - -def convert_project(project_name, output_dir): - # Extract your project's file - your_file_dest_path = os.path.join(output_dir, project_name) - os.makedirs(your_file_dest_path) - with zipfile.ZipFile(project_name + '.aar' , "r") as z: - z.extractall(your_file_dest_path) - # - # Make it into ant library project - # - if not os.path.exists(os.path.join(your_file_dest_path, 'src')): - os.makedirs(os.path.join(your_file_dest_path, 'src')) # Make src directory in project, but leave it empty - if not os.path.exists(os.path.join(your_file_dest_path, 'libs')): - os.makedirs(os.path.join(your_file_dest_path, 'libs')) # Make lib directory in project if it does not exists - # Rename classes.jar to project_name.jar and move it into libs directory - os.rename(os.path.join(your_file_dest_path, 'classes.jar'), os.path.join(your_file_dest_path, project_name + '.jar')) - shutil.move(os.path.join(your_file_dest_path, project_name + '.jar'), os.path.join(your_file_dest_path, 'libs/' + project_name + '.jar')) - # Call android update. So we have to install android first, then add it into PATH - command = "android update lib-project -p " + os.path.join(output_dir, project_name) + " -t android-25" - os.system(command) - # Update project.properties file - with open(os.path.join(output_dir, project_name, 'project.properties'), "a") as myfile: - myfile.write("android.library=true\n") - -def createOrCleanOutputDir(output_dir): - files = os.listdir(os.curdir) - if os.path.exists(output_dir): - deleteDir(output_dir) - os.makedirs(output_dir) - -def remove_readonly(fn, path, excinfo): - #removes readonly tag from files/folders so they can be deleted - if fn is os.rmdir: - os.chmod(path, stat.S_IWRITE) - os.rmdir(path) - elif fn is os.remove: - os.chmod(path, stat.S_IWRITE) - os.remove(path) - -def deleteDir(directory): - shutil.rmtree(directory, onerror=remove_readonly) - -def existProject(project_name): - project_file = project_name + ".aar" - files = os.listdir(os.curdir) - try: - files.index(project_file) - return True - except ValueError: - return False - -if __name__ == "__main__": - main(sys.argv[1:]) \ No newline at end of file diff --git a/build.sh b/build.sh index 6237ba899..51776039a 100755 --- a/build.sh +++ b/build.sh @@ -79,26 +79,14 @@ NDK_TOOLCHAIN_VERSION=$GCCVER # export PATH=$PATH:~/src/endless_space/android-ndk-r7 NDKBUILDPATH=$PATH export `grep "AppFullName=" AndroidAppSettings.cfg` -if ( grep "package $AppFullName;" project/src/Globals.java > /dev/null 2>&1 && \ - [ "`readlink AndroidAppSettings.cfg`" -ot "project/src/Globals.java" ] && \ - [ -z "`find project/java/* project/AndroidManifestTemplate.xml -cnewer project/src/Globals.java`" ] ) ; then true ; else +if [ -e project/local.properties ] && \ + ( grep "package $AppFullName;" project/src/Globals.java > /dev/null 2>&1 && \ + [ "`readlink AndroidAppSettings.cfg`" -ot "project/src/Globals.java" ] && \ + [ -z "`find project/java/* project/AndroidManifestTemplate.xml -cnewer project/src/Globals.java`" ] ) ; then true ; else ./changeAppSettings.sh -a || exit 1 sleep 1 touch project/src/Globals.java fi -if $build_release ; then - sed -i 's/android:debuggable="true"/android:debuggable="false"/g' project/AndroidManifest.xml -else - sed -i 's/android:debuggable="false"/android:debuggable="true"/g' project/AndroidManifest.xml -fi - -[ -e project/local.properties ] || { - android update project -p project -t android-25 || { - echo "Create file project/local.properties and put there sdk.dir=/path/to/android/sdk" - exit 1 - } - rm -f project/src/Globals.java -} MYARCH=linux-x86_64 if [ -z "$NCPU" ]; then diff --git a/changeAppSettings.sh b/changeAppSettings.sh index e0588e1ce..b55702a5e 100755 --- a/changeAppSettings.sh +++ b/changeAppSettings.sh @@ -997,16 +997,15 @@ done cd ../../.. SDK_DIR=`grep '^sdk.dir' project/local.properties | sed 's/.*=//'` +[ -z "$SDK_DIR" ] && SDK_DIR=`which android | sed 's@/tools/android$@@'` mkdir -p project/libs +echo "sdk.dir=$SDK_DIR" > project/local.properties +echo 'proguard.config=proguard.cfg;proguard-local.cfg' >> project/local.properties if [ "$GooglePlayGameServicesId" = "n" -o -z "$GooglePlayGameServicesId" ] ; then $SEDI "/==GOOGLEPLAYGAMESERVICES==/ d" project/AndroidManifest.xml + $SEDI "/==GOOGLEPLAYGAMESERVICES==/ d" project/app/build.gradle GooglePlayGameServicesId="" - grep '=play-services' project/local.properties > /dev/null && { - echo "sdk.dir=$SDK_DIR" > project/local.properties - echo 'proguard.config=proguard.cfg;proguard-local.cfg' >> project/local.properties - rm -f project/libs/android-support-v4.jar - } else for F in $JAVA_SRC_PATH/googleplaygameservices/*.java; do OUT=`echo $F | sed 's@.*/@@'` # basename tool is not available everywhere @@ -1015,58 +1014,16 @@ else cat $F | sed "s/^package .*;/package $AppFullName;/" >> project/src/$OUT done - PLAY_SERVICES_VER=11.0.0 - SUPPORT_V4_VER=25.2.0 - rm -rf project/play-services - - CURDIR=`pwd` - - cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-games/$PLAY_SERVICES_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/games -i play-services-games-$PLAY_SERVICES_VER || exit 1 - cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-drive/$PLAY_SERVICES_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/drive -i play-services-drive-$PLAY_SERVICES_VER || exit 1 - cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-base/$PLAY_SERVICES_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/base -i play-services-base-$PLAY_SERVICES_VER || exit 1 - cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-tasks/$PLAY_SERVICES_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/tasks -i play-services-tasks-$PLAY_SERVICES_VER || exit 1 - cd $SDK_DIR/extras/google/m2repository/com/google/android/gms/play-services-basement/$PLAY_SERVICES_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/basement -i play-services-basement-$PLAY_SERVICES_VER || exit 1 - cd $SDK_DIR/extras/android/m2repository/com/android/support/support-core-utils/$SUPPORT_V4_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/support-core-utils -i support-core-utils-$SUPPORT_V4_VER || exit 1 - cd $SDK_DIR/extras/android/m2repository/com/android/support/support-compat/$SUPPORT_V4_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/support-compat -i support-compat-$SUPPORT_V4_VER || exit 1 - cd $SDK_DIR/extras/android/m2repository/com/android/support/support-v4/$SUPPORT_V4_VER || exit 1 - $CURDIR/aar2jar.py -o $CURDIR/project/play-services/support-v4 -i support-v4-$SUPPORT_V4_VER || exit 1 - - cd $CURDIR - - ln -s -f $SDK_DIR/extras/android/m2repository/com/android/support/support-annotations/$SUPPORT_V4_VER/support-annotations-$SUPPORT_V4_VER.jar project/libs/android-support-v4.jar || exit 1 - $SEDI "s/==GOOGLEPLAYGAMESERVICES_APP_ID==/$GooglePlayGameServicesId/g" project/res/values/strings.xml - grep "play-services-games-$PLAY_SERVICES_VER" project/local.properties > /dev/null || { - PROGUARD=`which android` - PROGUARD=`dirname $PROGUARD`/proguard/lib/proguard.jar - java -jar $PROGUARD | grep 'ProGuard, version 5.3.2' || { - echo "Error: ProGuard is too old" - echo "You need to update ProGuard. Download it here:" - echo "https://sourceforge.net/projects/proguard/files/proguard/5.3/proguard5.3.2.tar.gz" - echo "Unpack it, then place file proguard.jar to $PROGUARD" - exit 1 - } - - - # Ant is way too smart, and adds current project path in front of the ${sdk.dir} - echo "sdk.dir=$SDK_DIR" > project/local.properties - echo 'proguard.config=proguard.cfg;proguard-local.cfg' >> project/local.properties - echo "android.library.reference.1=play-services/games/play-services-games-$PLAY_SERVICES_VER" >> project/local.properties - echo "android.library.reference.2=play-services/drive/play-services-drive-$PLAY_SERVICES_VER" >> project/local.properties - echo "android.library.reference.3=play-services/base/play-services-base-$PLAY_SERVICES_VER" >> project/local.properties - echo "android.library.reference.4=play-services/tasks/play-services-tasks-$PLAY_SERVICES_VER" >> project/local.properties - echo "android.library.reference.5=play-services/basement/play-services-basement-$PLAY_SERVICES_VER" >> project/local.properties - echo "android.library.reference.6=play-services/support-core-utils/support-core-utils-$SUPPORT_V4_VER" >> project/local.properties - echo "android.library.reference.7=play-services/support-compat/support-compat-$SUPPORT_V4_VER" >> project/local.properties - echo "android.library.reference.8=play-services/support-v4/support-v4-$SUPPORT_V4_VER" >> project/local.properties + PROGUARD=`which android` + PROGUARD=`dirname $PROGUARD`/proguard/lib/proguard.jar + java -jar $PROGUARD | grep 'ProGuard, version 5.3' || { + echo "Error: ProGuard is too old" + echo "You need to update ProGuard. Download it here:" + echo "https://sourceforge.net/projects/proguard/files/proguard/5.3/proguard5.3.3.zip" + echo "Unpack it, then place file proguard.jar to $PROGUARD" + exit 1 } fi diff --git a/project/AndroidManifestTemplate.xml b/project/AndroidManifestTemplate.xml index 6d28125ff..d92659074 100644 --- a/project/AndroidManifestTemplate.xml +++ b/project/AndroidManifestTemplate.xml @@ -26,7 +26,7 @@ - + @@ -37,7 +37,7 @@ - + @@ -59,7 +59,6 @@ /> - diff --git a/project/app/build-template.gradle b/project/app/build-template.gradle index 0914fba4f..694673b71 100644 --- a/project/app/build-template.gradle +++ b/project/app/build-template.gradle @@ -1,19 +1,23 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 + compileSdkVersion 26 buildToolsVersion "26.0.0" defaultConfig { applicationId "net.olofson.ballfield" minSdkVersion 9 - targetSdkVersion 25 + minSdkVersion 14 // ==GOOGLEPLAYGAMESERVICES== + targetSdkVersion 26 } buildTypes { release { - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), '../proguard-local.cfg' } } + + dependencies { compile 'com.google.android.gms:play-services-games:11.4.0' } // ==GOOGLEPLAYGAMESERVICES== + dependencies { compile 'com.google.android.gms:play-services-drive:11.4.0' } // ==GOOGLEPLAYGAMESERVICES== } diff --git a/project/build.gradle b/project/build.gradle index 305dc0552..ad39b615a 100644 --- a/project/build.gradle +++ b/project/build.gradle @@ -11,5 +11,8 @@ buildscript { allprojects { repositories { jcenter() - } + maven { + url "https://maven.google.com" + } + } } diff --git a/project/jni/application/openttd/AndroidAppSettings.cfg b/project/jni/application/openttd/AndroidAppSettings.cfg index 73fb0c6a5..d792c0f39 100644 --- a/project/jni/application/openttd/AndroidAppSettings.cfg +++ b/project/jni/application/openttd/AndroidAppSettings.cfg @@ -21,14 +21,14 @@ AppVersionName="1.7.1.72" AppDataDownloadUrl="!!Data files - 20 Mb|openttd-data-1.7.1-2.zip.xz^!!Config file|:.openttd/openttd.cfg:openttd-1.4.0.30.cfg^!!MIDI music support (18 Mb)|timidity.zip.xz|http://sourceforge.net/projects/libsdl-android/files/timidity.zip.xz^!!Internationalization files|icudt59l.zip.xz|http://sourceforge.net/projects/libsdl-android/files/icudt59l.zip.xz^HD graphics (optional) - 220 Mb download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/abase-0.1.2-0.zip.xz/download|http://sourceforge.net/projects/libsdl-android/files/OpenTTD/zBase-v5588.zip.xz/download" # Reset SDL config when updating application to the new version (y) / (n) -ResetSdlConfigForThisVersion=n +ResetSdlConfigForThisVersion=y # Delete application data files when upgrading (specify file/dir paths separated by spaces) DeleteFilesOnUpgrade="libsdl-DownloadFinished-0.flag" # Here you may type readme text, which will be shown during startup. Format is: # Text in English, use \\\\n to separate lines (that's four backslashes)^de:Text in Deutsch^ru:Text in Russian^button:Button that will open some URL:http://url-to-open/ -ReadmeText='JGR Patch Pack is available on Android\\\\nIt includes day length patch and many other improvements^button:Download from Google Play:https://play.google.com/store/apps/details?id=org.openttd.jgrpp' +ReadmeText='JGR Patch Pack is available on Android\\\\nIt includes daylength patch\\\\nand many other improvements^button:Download from Google Play:https://play.google.com/store/apps/details?id=org.openttd.jgrpp' # libSDL version to use (1.2/1.3/2.0) LibSdlVersion=1.2 diff --git a/project/project.properties b/project/project.properties deleted file mode 100644 index f72b9716b..000000000 --- a/project/project.properties +++ /dev/null @@ -1,14 +0,0 @@ -# This file is automatically generated by Android Tools. -# Do not modify this file -- YOUR CHANGES WILL BE ERASED! -# -# This file must be checked in Version Control Systems. -# -# To customize properties used by the Ant build system edit -# "ant.properties", and override values to adapt the script to your -# project structure. -# -# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): -#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt - -# Project target. -target=android-25