SDL: fixed Google Play Game Services linking
This commit is contained in:
107
aar2jar.py
107
aar2jar.py
@@ -1,107 +0,0 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
# aar2jar.py (c) kak2 <doanngocbao@gmail.com>
|
||||
# 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 <your-project-name-without-aar> -o <output-dir>'
|
||||
|
||||
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:])
|
||||
20
build.sh
20
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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" /> <!-- Android TV requires this -->
|
||||
<category android:name="tv.ouya.intent.category.GAME" /> <!-- For that one user who still got an OUYA in his living room and won't throw it away just because someone else decides that it's dead -->
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<!-- ==OPENFILE== --> <intent-filter>
|
||||
<!-- ==OPENFILE== --> <action android:name="android.intent.action.VIEW" />
|
||||
<!-- ==OPENFILE== --> <category android:name="android.intent.category.DEFAULT" />
|
||||
<!-- ==OPENFILE== --> <category android:name="android.intent.category.BROWSABLE" />
|
||||
@@ -37,7 +37,7 @@
|
||||
<!-- ==OPENFILE== --> <data android:pathPattern=".*\\..*\\.==OPENFILE-EXT==" />
|
||||
<!-- ==OPENFILE== --> <data android:pathPattern=".*\\..*\\..*\\.==OPENFILE-EXT==" />
|
||||
<!-- ==OPENFILE== --> <data android:pathPattern=".*\\..*\\..*\\..*\\.==OPENFILE-EXT==" />
|
||||
</intent-filter>
|
||||
<!-- ==OPENFILE== --> </intent-filter>
|
||||
</activity>
|
||||
<!-- ==ADMOB== --> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|screenLayout|fontScale|uiMode|orientation|screenSize|smallestScreenSize|layoutDirection"/>
|
||||
<!-- ==ADMOB== --> <meta-data android:name="com.google.android.gms.version" android:value="4323000" /> <!-- Change this value to the actual Google Play SDK version -->
|
||||
@@ -59,7 +59,6 @@
|
||||
/>
|
||||
</application>
|
||||
|
||||
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="25"/>
|
||||
<!-- ==INTERNET== --> <uses-permission android:name="android.permission.INTERNET" />
|
||||
<!-- ==EXTERNAL_STORAGE== --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<!-- ==EXTERNAL_STORAGE== --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
@@ -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==
|
||||
}
|
||||
|
||||
@@ -11,5 +11,8 @@ buildscript {
|
||||
allprojects {
|
||||
repositories {
|
||||
jcenter()
|
||||
}
|
||||
maven {
|
||||
url "https://maven.google.com"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user