Added VCMI server, but it cannot be launched apparently, because VCMI just crash

This commit is contained in:
pelya
2011-06-09 20:22:51 +03:00
parent af794b0b04
commit 22a4b5ac03
5 changed files with 92 additions and 44 deletions

View File

@@ -529,9 +529,81 @@ public class MainActivity extends Activity {
}
catch ( Exception ee )
{
System.out.println("libSDL: Error: " + e.toString());
System.out.println("libSDL: Error: " + ee.toString());
}
}
try {
System.out.println("libSDL: Extracting VCMI server");
InputStream in = null;
try
{
for( int i = 0; ; i++ )
{
InputStream in2 = getAssets().open("vcmiserver" + String.valueOf(i));
if( in == null )
in = in2;
else
in = new SequenceInputStream( in, in2 );
}
}
catch( IOException ee ) { }
if( in == null )
throw new RuntimeException("libSDL: Extracting VCMI server failed, the .apk file packaged incorrectly");
ZipInputStream zip = new ZipInputStream(in);
File cacheDir = getFilesDir();
try {
cacheDir.mkdirs();
} catch( SecurityException ee ) { };
byte[] buf = new byte[16384];
while(true)
{
ZipEntry entry = null;
entry = zip.getNextEntry();
/*
if( entry != null )
System.out.println("Extracting lib " + entry.getName());
*/
if( entry == null )
{
System.out.println("Extracting libs finished");
break;
}
if( entry.isDirectory() )
{
System.out.println("Warning '" + entry.getName() + "' is a directory");
continue;
}
OutputStream out = null;
String path = cacheDir.getAbsolutePath() + "/" + entry.getName();
System.out.println("Saving to file '" + path + "'");
out = new FileOutputStream( path );
int len = zip.read(buf);
while (len >= 0)
{
if(len > 0)
out.write(buf, 0, len);
len = zip.read(buf);
}
out.flush();
out.close();
(new ProcessBuilder().command("/system/bin/chmod", "0755", path).start()).waitFor();
}
}
catch ( Exception eee )
{
System.out.println("libSDL: Error: " + eee.toString());
}
};
public FrameLayout getVideoLayout() { return _videoLayout; }

View File

@@ -63,9 +63,14 @@ CFLAGS="\
`echo $APP_MODULES | sed \"s@\([-a-zA-Z0-9_.]\+\)@-I$LOCAL_PATH/../\1/include@g\"` \
$CRYSTAX_WCHAR_INCLUDE"
SHARED=-shared
if [ -n "$BUILD_EXECUTABLE" ]; then
SHARED=
fi
#-shared flag creates problems with damn libtool, so we're using -Wl,-shared instead
LDFLAGS="\
-fexceptions -frtti -shared \
-fexceptions -frtti $SHARED \
-Wl,-soname,libapplication.so --sysroot=$NDK/platforms/$PLATFORMVER/arch-arm \
`echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/armeabi/lib\1.so@g\"` \
$NDK/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \

View File

@@ -2,34 +2,3 @@
make -j4 2>&1 | tee build.log
if false; then
# Uncomment if your configure expects SDL libraries in form "libSDL_name.so"
ln -sf libsdl-1.2.so $LOCAL_PATH/../../../obj/local/armeabi/libSDL.so
ln -sf libsdl-1.2.so $LOCAL_PATH/../../../obj/local/armeabi/libpthread.so
ln -sf libsdl_mixer.so $LOCAL_PATH/../../../obj/local/armeabi/libSDL_mixer.so
ln -sf libsdl_image.so $LOCAL_PATH/../../../obj/local/armeabi/libSDL_image.so
ln -sf libsdl_ttf.so $LOCAL_PATH/../../../obj/local/armeabi/libSDL_ttf.so
rm -f libapplication.so
if [ \! -f vcmi/Makefile -o $0 -nt vcmi/Makefile ] ; then
../setEnvironment.sh sh -c "cd vcmi && \
env LIBS='-lavcodec -lavutil -lavcore -lgcc' \
./configure --host=$GCC_PREFIX --enable-shared --disable-static \
--with-boost-system=boost_system \
--with-boost-filesystem=boost_filesystem \
--with-boost-thread=boost_thread \
--with-boost-iostreams=boost_iostreams \
--with-boost-program-options=boost_program_options \
--bindir=/data/data/eu.vcmi/lib" || exit 1
fi
../setEnvironment.sh sh -c "cd vcmi/lib && \
make -j4 AM_DEFAULT_VERBOSITY=1 \
pkgdatadir=/sdcard/app-data/eu.vcmi pkglibdir=/data/data/eu.vcmi/files bindir=/data/data/eu.vcmi/files" \
|| exit 1
rm -f $LOCAL_PATH/../../../obj/local/armeabi/libSDL.so
rm -f $LOCAL_PATH/../../../obj/local/armeabi/libpthread.so
rm -f $LOCAL_PATH/../../../obj/local/armeabi/libSDL_mixer.so
rm -f $LOCAL_PATH/../../../obj/local/armeabi/libSDL_image.so
rm -f $LOCAL_PATH/../../../obj/local/armeabi/libSDL_ttf.so
fi

Binary file not shown.

View File

@@ -1,32 +1,34 @@
$(shell mkdir -p out/vcmi/lib)
$(shell mkdir -p out/vcmi/lib out/vcmi/server)
LOCAL_PATH=$(shell dirname $0)
LOCAL_PATH=`cd $LOCAL_PATH && pwd`
GCC_PREFIX=$(if $(shell which ndk-build | grep 'android-ndk-r5'),arm-linux-androideabi,arm-eabi)
SOURCES=$(wildcard vcmi/lib/*.cpp)
SOURCES=$(wildcard vcmi/lib/*.cpp vcmi/server/*.cpp vcmi/CConsoleHandler.cpp vcmi/CThreadHelper.cpp)
OBJS=$(patsubst %.cpp, out/%.o, $(SOURCES))
$(warning SOURCES $(SOURCES))
$(warning OBJS $(OBJS))
all: libvcmi.so
libvcmi.so: $(OBJS)
../setEnvironment.sh sh -c "$(GCC_PREFIX)-g++ \
vcmiserver: $(OBJS)
env BUILD_EXECUTABLE=1 ../setEnvironment.sh sh -c \
"$(GCC_PREFIX)-g++ \
\$$LDFLAGS \
$^ -o $@ \
-lboost_filesystem -lboost_iostreams -lboost_system -lboost_thread"
mkdir -p debug
cp $@ debug/$@
$(GCC_PREFIX)-strip $@
$(OBJS): out/%.o: %.cpp
../setEnvironment.sh sh -c "$(GCC_PREFIX)-g++ \
-c \$$CXXFLAGS -Ivcmi -Ivcmi/lib \
../setEnvironment.sh sh -c \
"$(GCC_PREFIX)-g++ \
-c \$$CXXFLAGS -Ivcmi -Ivcmi/lib -Ivcmi/server \
-DDATA_DIR=\\\"/sdcard/app-data/eu.vcmi\\\" \
-DBIN_DIR=\\\"/data/data/eu.vcmi/files\\\" \
-DLIB_DIR=\\\"/data/data/eu.vcmi/files\\\" \
-DWITH_AVCODEC_DECODE_VIDEO2=1 \
$< -o $@"
mkdir -p debug
cp $@ debug/$@
$(GCC_PREFIX)-strip