Add Android module

This commit is contained in:
Antonin Décimo
2014-08-19 17:18:57 +02:00
parent 3c1af29321
commit 478d385412
4 changed files with 118 additions and 5 deletions

View File

@@ -92,8 +92,8 @@ with eventual underscores (i.e. [a-zA-Z0-9\_]), otherwise you'll get errors.
It must be only alphanumerical characters, with eventual underscores.
`--package-name` Set the name of the package.
By default, it is the name of your project, with eventual spaces replaced by underscores.
`--update-repo` Update the love-android-sdl2.git repository used in the cache.
`--version` Set the version of your package.
`--update-android` Update the love-android-sdl2.git repository used in the cache.
`--package-version` Set the version of your package.
#### OTHERS
`--refresh` Refresh the cache located in `~/.cache/love-release`.

View File

@@ -121,10 +121,10 @@ It must be only alphanumerical characters, with eventual underscores.
Set the name of the package.
By default, it is the name of your project, with eventual spaces replaced by underscores.
.TP
.B \-\-update\-repo
.B \-\-update\-android
Update the love-android-sdl2.git repository used in the cache.
.TP
.B \-\-version \fIversion\fR
.B \-\-package\-version \fIversion\fR
Set the version of your package.
.SH OTHERS
.TP

View File

@@ -14,12 +14,14 @@ LOVE_VERSION=0.9.1
## - a colon ":" if it requires an argument
## SCRIPT_ARGS="a; osname:"
SCRIPT_ARGS="l; d; w."
SCRIPT_ARGS="l; d; g; w."
## Windows
SCRIPT_ARGS="icon: $SCRIPT_ARGS"
## Debian
SCRIPT_ARGS="package-version: maintainer-name: maintainer-email: homepage: description: package-name: $SCRIPT_ARGS"
## Android
SCRIPT_ARGS="activity: package-version: maintainer-name: package-name: update-android; $SCRIPT_ARGS"
## Add a short summary of your platform script here
@@ -27,6 +29,7 @@ SCRIPT_ARGS="package-version: maintainer-name: maintainer-email: homepage: descr
## --osname Create an executable for osname"
SHORT_HELP=" -l Create a plain Love file
-d Create a Debian package
-g Create an Android package
-w, Create a Windows application
-w32 Create a Windows x86 application
-w64 Create a Windows x64 application"
@@ -191,6 +194,8 @@ do
source "$PLATFORMS_DIR"/love.sh
elif [ "$OPTOPT" = "d" ]; then
source "$PLATFORMS_DIR"/debian.sh
elif [ "$OPTOPT" = "g" ]; then
source "$PLATFORMS_DIR"/android.sh
elif [ "$OPTOPT" = "w" ]; then
if [ "$OPTARG" = "32" ]; then
RELEASE_WIN_32=true

108
scripts/android.sh Normal file
View File

@@ -0,0 +1,108 @@
# Android debug package
init_module "Android"
# Options
activity_defined_argument=false
package_name_defined_argument=false
while getoptex "$SCRIPT_ARGS" "$@"
do
if [ "$OPTOPT" = "activity" ]; then
ACTIVITY=$OPTARG
activity_defined_argument=true
elif [ "$OPTOPT" = "package-version" ]; then
PACKAGE_VERSION=$OPTARG
elif [ "$OPTOPT" = "maintainer-name" ]; then
MAINTAINER_NAME=$OPTARG
elif [ "$OPTOPT" = "package-name" ]; then
PACKAGE_NAME=$OPTARG
package_name_defined_argument=true
elif [ "$OPTOPT" = "update-android" ]; then
UPDATE_ANDROID_REPO=true
fi
done
if [ "$package_name_defined_argument" = false ]; then
PACKAGE_NAME=$(echo $PROJECT_NAME | sed -e 's/[^-a-zA-Z0-9_]/-/g')
fi
if [ "$activity_defined_argument" = false ]; then
ACTIVITY=$(echo $PROJECT_NAME | sed -e 's/[^a-zA-Z0-9_]/_/g')
fi
create_love_file
# Android
MISSING_INFO=0
ERROR_MSG="Could not build Android package."
if [ -z "$PACKAGE_VERSION" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG
Missing project's version. Use --package-version."
fi
if [ -z "$MAINTAINER_NAME" ]; then
MISSING_INFO=1
ERROR_MSG="$ERROR_MSG
Missing maintainer's name. Use --maintainer-name."
fi
if [ "$MISSING_INFO" -eq 1 ]; then
exit_module "$MISSING_INFO" "$ERROR_MSG"
fi
LOVE_ANDROID_DIR="$CACHE_DIR"/love-android-sdl2
if [ -d "$LOVE_ANDROID_DIR" ]; then
cd "$LOVE_ANDROID_DIR"
git checkout -- .
rm -rf src/com bin gen
if [ "$UPDATE_ANDROID_REPO" = true ]; then
LOCAL=$(git rev-parse @)
REMOTE=$(git rev-parse @{u})
BASE=$(git merge-base @ @{u})
if [ $LOCAL = $REMOTE ]; then
echo "love-android-sdl2 is already up-to-date."
elif [ $LOCAL = $BASE ]; then
git pull
ndk-build --jobs $(( $(nproc) + 1))
fi
fi
cd "$RELEASE_DIR"
else
cd "$CACHE_DIR"
git clone https://bitbucket.org/MartinFelis/love-android-sdl2.git
cd "$LOVE_ANDROID_DIR"
ndk-build --jobs $(( $(nproc) + 1))
cd "$RELEASE_DIR"
fi
ANDROID_VERSION=$(grep -Eo -m 1 "[0-9]+.[0-9]+.[0-9]+[a-z]*" "$LOVE_ANDROID_DIR"/AndroidManifest.xml)
ANDROID_LOVE_VERSION=$(echo "$ANDROID_VERSION" | grep -Eo "[0-9]+.[0-9]+.[0-9]+")
if [ "$LOVE_VERSION" != "$ANDROID_LOVE_VERSION" ]; then
echo "Love version ($LOVE_VERSION) differs from love-android-sdl2 version ($ANDROID_LOVE_VERSION). Could not create package."
else
mkdir -p "$LOVE_ANDROID_DIR"/assets
cp "$LOVE_FILE" "$LOVE_ANDROID_DIR"/assets/game.love
cd "$LOVE_ANDROID_DIR"
sed -i "s/org.love2d.android/com.${MAINTAINER_NAME}.${PACKAGE_NAME}/" AndroidManifest.xml
sed -i "s/$ANDROID_VERSION/${ANDROID_VERSION}-${PACKAGE_NAME}-v${PACKAGE_VERSION}/" AndroidManifest.xml
sed -i "0,/LÖVE for Android/s//$PROJECT_NAME $PACKAGE_VERSION/" AndroidManifest.xml
sed -i "s/LÖVE for Android/$PROJECT_NAME/" AndroidManifest.xml
sed -i "s/GameActivity/$ACTIVITY/" AndroidManifest.xml
mkdir -p src/com/$MAINTAINER_NAME/$PACKAGE_NAME
echo "package com.${MAINTAINER_NAME}.${PACKAGE_NAME};
import org.love2d.android.GameActivity;
public class $ACTIVITY extends GameActivity {}
" > src/com/$MAINTAINER_NAME/$PACKAGE_NAME/${ACTIVITY}.java
ant debug
cp bin/love_android_sdl2-debug.apk "$RELEASE_DIR"
cd "$RELEASE_DIR"
fi
remove_love_file
exit_module