diff options
-rw-r--r-- | backends/platform/android/android.mk | 15 | ||||
-rwxr-xr-x | dists/android/mkmanifest.pl | 170 | ||||
-rwxr-xr-x | dists/android/mkplugin.sh | 17 | ||||
-rw-r--r-- | dists/android/plugin-manifest.xml | 35 | ||||
-rw-r--r-- | dists/android/plugin-manifest.xml.in | 35 | ||||
-rw-r--r-- | dists/android/plugin-strings.xml | 7 | ||||
-rwxr-xr-x | tools/update-version.pl | 1 |
7 files changed, 102 insertions, 178 deletions
diff --git a/backends/platform/android/android.mk b/backends/platform/android/android.mk index 01ebf73a81..fdb0f8096a 100644 --- a/backends/platform/android/android.mk +++ b/backends/platform/android/android.mk @@ -110,14 +110,13 @@ $(FILE_DEX_PLUGIN): $(CLASSES_PLUGIN) @$(MKDIR) -p $(@D) $(DX) --dex --output=$@ $(PATH_BUILD_CLASSES_PLUGIN_TOP) -$(PATH_BUILD)/%/AndroidManifest.xml $(PATH_STAGE_PREFIX).%/res/values/strings.xml: $(PATH_DIST)/mkmanifest.pl $(srcdir)/configure $(PATH_DIST)/AndroidManifest.xml - $(PATH_DIST)/mkmanifest.pl --id=$* --configure=$(srcdir)/configure \ - --version-name=$(VERSION) \ - --version-code=$(ANDROID_PLUGIN_VERSIONCODE) \ - --stringres=$(PATH_STAGE_PREFIX).$*/res/values/strings.xml \ - --manifest=$(PATH_BUILD)/$*/AndroidManifest.xml \ - --master-manifest=$(PATH_DIST)/AndroidManifest.xml \ - --unpacklib=mylib/armeabi/lib$*.so +$(PATH_BUILD)/%/AndroidManifest.xml: $(PATH_DIST)/mkplugin.sh $(srcdir)/configure $(PATH_DIST)/plugin-manifest.xml + @$(MKDIR) -p $(@D) + $(PATH_DIST)/mkplugin.sh $(srcdir)/configure $* $(PATH_DIST)/plugin-manifest.xml $(ANDROID_PLUGIN_VERSIONCODE) $@ + +$(PATH_STAGE_PREFIX).%/res/values/strings.xml: $(PATH_DIST)/mkplugin.sh $(srcdir)/configure $(PATH_DIST)/plugin-manifest.xml + @$(MKDIR) -p $(@D) + $(PATH_DIST)/mkplugin.sh $(srcdir)/configure $* $(PATH_DIST)/plugin-strings.xml $(ANDROID_PLUGIN_VERSIONCODE) $@ $(PATH_STAGE_PREFIX).%/res/drawable/scummvm.png: $(PATH_RESOURCES)/drawable/scummvm.png @$(MKDIR) -p $(@D) diff --git a/dists/android/mkmanifest.pl b/dists/android/mkmanifest.pl deleted file mode 100755 index 62caa64a55..0000000000 --- a/dists/android/mkmanifest.pl +++ /dev/null @@ -1,170 +0,0 @@ -#!/usr/bin/perl - -use File::Basename qw(dirname); -use File::Path qw(mkpath); -use IO::File; -use XML::Writer; -use XML::Parser; -use Getopt::Long; - -use warnings; -use strict; - -use constant ANDROID => 'http://schemas.android.com/apk/res/android'; - -my $id; -my $package_versionName; -my $package_versionCode; -my $configure = 'configure'; -my $stringres = 'res/string/values.xml'; -my $manifest = 'AndroidManifest.xml'; -my $master_manifest; -my @unpack_libs; -GetOptions('id=s' => \$id, - 'version-name=s' => \$package_versionName, - 'version-code=i' => \$package_versionCode, - 'configure=s' => \$configure, - 'stringres=s' => \$stringres, - 'manifest=s' => \$manifest, - 'master-manifest=s' => \$master_manifest, - 'unpacklib=s' => \@unpack_libs, - ) or die; -die "Missing required arg" - unless $id and $package_versionName and $package_versionCode; - - -sub grope_engine_info { - my $configure = shift; - my @ret; - while (<$configure>) { - m/^add_engine \s+ (\w+) \s+ "(.*?)" \s+ \w+ (?:\s+ "([\w\s]*)")?/x - or next; - my $subengines = $3 || ''; - my %info = (id => $1, name => $2, - subengines => [split / /, $subengines]); - push @ret, \%info; - } - return @ret; -} - -sub read_constraints { - my $manifest = shift; - my @constraints; - my $parser = new XML::Parser Handlers => { - Start => sub { - my $expat = shift; - my $elem = shift; - return if $elem !~ - /^(uses-configuration|supports-screens|uses-sdk)$/; - my @constraint = ($elem); - while (@_) { - my $attr = shift; - my $value = shift; - $attr = [ANDROID, $attr] if $attr =~ s/^android://; - push @constraint, $attr, $value; - } - push @constraints, \@constraint; - }, - }; - $parser->parse($manifest); - return @constraints; -} - -sub print_stringres { - my $output = shift; - my $info = shift; - - my $writer = new XML::Writer(OUTPUT => $output, ENCODING => 'utf-8', - DATA_MODE => 1, DATA_INDENT => 2); - - $writer->xmlDecl(); - $writer->startTag('resources'); - - while (my ($k,$v) = each %$info) { - $writer->dataElement('string', $v, name => $k); - } - - $writer->endTag('resources'); - $writer->end(); -} - -sub print_manifest { - my $output = shift; - my $info = shift; - my $constraints = shift; - - my $writer = new XML::Writer(OUTPUT => $output, ENCODING => 'utf-8', - DATA_MODE => 1, DATA_INDENT => 2, - NAMESPACES => 1, - PREFIX_MAP => {ANDROID, 'android'}); - - $writer->xmlDecl(); - - $writer->startTag( - 'manifest', - 'package' => "org.inodes.gus.scummvm.plugin.$info->{name}", - [ANDROID, 'versionCode'] => $package_versionCode, - [ANDROID, 'versionName'] => $package_versionName, - [ANDROID, 'installLocation'] => 'preferExternal', - ); - - $writer->startTag( - 'application', - [ANDROID, 'label'] => '@string/app_name', - [ANDROID, 'description'] => '@string/app_desc', - [ANDROID, 'icon'] => '@drawable/scummvm', - ); - - $writer->startTag( - 'receiver', - [ANDROID, 'name'] => 'org.inodes.gus.scummvm.PluginProvider', - [ANDROID, 'process'] => 'org.inodes.gus.scummvm'); - - $writer->startTag('intent-filter'); - $writer->emptyTag('action', [ANDROID, 'name'] => - 'org.inodes.gus.scummvm.action.PLUGIN_QUERY'); - $writer->emptyTag('category', [ANDROID, 'name'] => - 'android.intent.category.INFO'); - $writer->endTag('intent-filter'); - $writer->emptyTag( - 'meta-data', - [ANDROID, 'name'] => 'org.inodes.gus.scummvm.meta.UNPACK_LIB', - [ANDROID, 'value'] => $_) - for @{$info->{unpack_libs}}; - - $writer->endTag('receiver'); - $writer->endTag('application'); - - $writer->emptyTag('uses-permission', [ANDROID, 'name'] => - 'org.inodes.gus.scummvm.permission.SCUMMVM_PLUGIN'); - - $writer->emptyTag(@$_) foreach @$constraints; - - $writer->endTag('manifest'); - $writer->end(); -} - - -my %engines; -for my $engine (grope_engine_info(new IO::File $configure, 'r')) { - $engines{$engine->{id}} = $engine; -} - -my @games = ($id, @{$engines{$id}{subengines}}); -my $games_desc = join('; ', map $engines{$_}{name}, @games); - -my @constraints = read_constraints(new IO::File $master_manifest, 'r'); - -print "Writing $stringres ...\n"; -mkpath(dirname($stringres)); -print_stringres(IO::File->new($stringres, 'w'), - {app_name => qq{ScummVM plugin: "$id"}, - app_desc => "Game engine for: $games_desc", - }); - -print "Writing $manifest ...\n"; -mkpath(dirname($manifest)); -print_manifest(IO::File->new($manifest, 'w'), - {name => $id, unpack_libs => \@unpack_libs}, \@constraints); - -exit 0; diff --git a/dists/android/mkplugin.sh b/dists/android/mkplugin.sh new file mode 100755 index 0000000000..f4643132cf --- /dev/null +++ b/dists/android/mkplugin.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +if [ $# -ne 5 ]; then + echo "usage: $0 configure plugin template versioncode target" + exit 1 +fi + +CONFIGURE=$1 +PLUGIN_NAME=$2 +TEMPLATE=$3 +PLUGIN_VERSION_CODE=$4 +TARGET=$5 + +PLUGIN_DESC=`sed -n s/add_engine\s$PLUGIN_NAME\s\"\(.\+\)\"\s.*/\1/p` < $CONFIGURE + +sed "s|@PLUGIN_NAME@|$PLUGIN_NAME|;s|@PLUGIN_VERSION_CODE@|$PLUGIN_VERSION_CODE|;s|@PLUGIN_DESC@|$PLUGIN_DESC|" < $TEMPLATE > $TARGET + diff --git a/dists/android/plugin-manifest.xml b/dists/android/plugin-manifest.xml new file mode 100644 index 0000000000..2442d3f32a --- /dev/null +++ b/dists/android/plugin-manifest.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.inodes.gus.scummvm.plugin.@PLUGIN_NAME@" + android:versionCode="@PLUGIN_VERSION_CODE@" + android:versionName="1.3.0git" + android:installLocation="preferExternal"> + + <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" /> + + <application android:label="@string/app_name" + android:description="@string/app_desc" + android:icon="@drawable/scummvm"> + <receiver android:name="org.inodes.gus.scummvm.PluginProvider" + android:process="org.inodes.gus.scummvm"> + <intent-filter> + <action android:name="org.inodes.gus.scummvm.action.PLUGIN_QUERY"/> + <category android:name="android.intent.category.INFO"/> + </intent-filter> + <meta-data android:name="org.inodes.gus.scummvm.meta.UNPACK_LIB" + android:value="mylib/armeabi/lib@PLUGIN_NAME@.so" /> + </receiver> + </application> + + <uses-permission android:name="org.inodes.gus.scummvm.permission.SCUMMVM_PLUGIN"/> + <uses-configuration android:reqFiveWayNav="true" + android:reqKeyboardType="qwerty"/> + + <uses-configuration android:reqTouchScreen="finger" + android:reqKeyboardType="qwerty"/> + + <uses-configuration android:reqTouchScreen="stylus" + android:reqKeyboardType="qwerty"/> +</manifest> + diff --git a/dists/android/plugin-manifest.xml.in b/dists/android/plugin-manifest.xml.in new file mode 100644 index 0000000000..c941b2f48c --- /dev/null +++ b/dists/android/plugin-manifest.xml.in @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> + +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.inodes.gus.scummvm.plugin.@PLUGIN_NAME@" + android:versionCode="@PLUGIN_VERSION_CODE@" + android:versionName="@VERSION@" + android:installLocation="preferExternal"> + + <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" /> + + <application android:label="@string/app_name" + android:description="@string/app_desc" + android:icon="@drawable/scummvm"> + <receiver android:name="org.inodes.gus.scummvm.PluginProvider" + android:process="org.inodes.gus.scummvm"> + <intent-filter> + <action android:name="org.inodes.gus.scummvm.action.PLUGIN_QUERY"/> + <category android:name="android.intent.category.INFO"/> + </intent-filter> + <meta-data android:name="org.inodes.gus.scummvm.meta.UNPACK_LIB" + android:value="mylib/armeabi/lib@PLUGIN_NAME@.so" /> + </receiver> + </application> + + <uses-permission android:name="org.inodes.gus.scummvm.permission.SCUMMVM_PLUGIN"/> + <uses-configuration android:reqFiveWayNav="true" + android:reqKeyboardType="qwerty"/> + + <uses-configuration android:reqTouchScreen="finger" + android:reqKeyboardType="qwerty"/> + + <uses-configuration android:reqTouchScreen="stylus" + android:reqKeyboardType="qwerty"/> +</manifest> + diff --git a/dists/android/plugin-strings.xml b/dists/android/plugin-strings.xml new file mode 100644 index 0000000000..363503f8d8 --- /dev/null +++ b/dists/android/plugin-strings.xml @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="utf-8"?> + +<resources> + <string name="app_name">ScummVM plugin: "@PLUGIN_NAME@"</string> + <string name="app_desc">Game engine for: @PLUGIN_DESC@</string> +</resources> + diff --git a/tools/update-version.pl b/tools/update-version.pl index 81aa5c27f9..91e9e2492b 100755 --- a/tools/update-version.pl +++ b/tools/update-version.pl @@ -41,6 +41,7 @@ my @subs_files = qw( dists/irix/scummvm.spec dists/wii/meta.xml dists/android/AndroidManifest.xml + dists/android/plugin-manifest.xml backends/platform/psp/README.PSP ); |