diff --git a/build.sh b/build.sh index 8907b01d0..d3617f9fe 100755 --- a/build.sh +++ b/build.sh @@ -4,9 +4,9 @@ # export PATH=$PATH:~/src/endless_space/android-ndk-r4b # Set environment to CrystaX NDK with RTTI and exceptions instead of original NDK # export PATH=$PATH:~/src/endless_space/android-ndk-r4-crystax/ndk-build -NDKBUILD=ndk-build +NDKBUILDPATH=$PATH if grep "AppUseCrystaXToolchain=y" AndroidAppSettings.cfg > /dev/null ; then - NDKBUILD=`which ndk-build | sed 's@/[^/]*/ndk-build@/android-ndk-r4-crystax@'`/ndk-build + NDKBUILDPATH=`which ndk-build | sed 's@/[^/]*/ndk-build@/android-ndk-r4-crystax@'`:$PATH fi export `grep "AppFullName=" AndroidAppSettings.cfg` if ( grep "package $AppFullName;" project/src/Globals.java > /dev/null && [ "`readlink AndroidAppSettings.cfg`" -ot "project/src/Globals.java" ] ) ; then true ; else @@ -15,5 +15,5 @@ if ( grep "package $AppFullName;" project/src/Globals.java > /dev/null && [ "`re touch project/src/Globals.java fi -cd project && nice -n10 $NDKBUILD -j2 V=1 && ant debug && cd bin && adb install -r DemoActivity-debug.apk +cd project && env PATH=$NDKBUILDPATH nice -n10 ndk-build -j2 V=1 && ant debug && cd bin && adb install -r DemoActivity-debug.apk diff --git a/project/java/DataDownloader.java b/project/java/DataDownloader.java index 9b458f635..7abe1c5b4 100644 --- a/project/java/DataDownloader.java +++ b/project/java/DataDownloader.java @@ -12,8 +12,18 @@ import android.view.WindowManager; import android.widget.TextView; import org.apache.http.client.methods.*; import org.apache.http.*; +import org.apache.http.params.BasicHttpParams; +import org.apache.http.conn.*; +import org.apache.http.conn.params.*; +import org.apache.http.conn.scheme.*; +import org.apache.http.conn.ssl.*; import org.apache.http.impl.*; import org.apache.http.impl.client.*; +import org.apache.http.impl.conn.SingleClientConnManager; +import java.security.cert.*; +import java.security.SecureRandom; +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.HttpsURLConnection; import java.util.zip.*; import java.io.*; import android.util.Log; @@ -251,7 +261,7 @@ class DataDownloader extends Thread request = new HttpGet(url); request.addHeader("Accept", "*/*"); try { - DefaultHttpClient client = new DefaultHttpClient(); + DefaultHttpClient client = HttpWithDisabledSslCertCheck(); client.getParams().setBooleanParameter("http.protocol.handle-redirects", true); response = client.execute(request); } catch (IOException e) { @@ -484,6 +494,44 @@ class DataDownloader extends Thread return outFilesDir + "/" + filename; }; + private static DefaultHttpClient HttpWithDisabledSslCertCheck() + { + /* + SSLContext sslContext = SSLContext.getInstance("SSL"); + + // set up a TrustManager that trusts everything + sslContext.init(null, new TrustManager[] { new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { return null; } + public void checkClientTrusted(X509Certificate[] certs, String authType) { } + + public void checkServerTrusted(X509Certificate[] certs, String authType) { } + } }, new SecureRandom()); + + SocketFactory sf = sslContext.getSocketFactory(); + Scheme httpsScheme = new Scheme("https", sf, 443); + SchemeRegistry schemeRegistry = new SchemeRegistry(); + schemeRegistry.register(httpsScheme); + + BasicHttpParams params = new BasicHttpParams(); + ClientConnectionManager cm = new SingleClientConnManager(params, schemeRegistry); + return new DefaultHttpClient(cm, params); + */ + HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER; + + DefaultHttpClient client = new DefaultHttpClient(); + + SchemeRegistry registry = new SchemeRegistry(); + SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory(); + socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier); + registry.register(new Scheme("https", socketFactory, 443)); + SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry); + DefaultHttpClient http = new DefaultHttpClient(mgr, client.getParams()); + + HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); + + return http; + } + public StatusWriter Status; public boolean DownloadComplete = false; public boolean DownloadFailed = false; diff --git a/project/jni/application/openttd/AndroidAppSettings.cfg b/project/jni/application/openttd/AndroidAppSettings.cfg index f37b1b642..142735bfb 100644 --- a/project/jni/application/openttd/AndroidAppSettings.cfg +++ b/project/jni/application/openttd/AndroidAppSettings.cfg @@ -5,12 +5,12 @@ AppName="OpenTTD" AppFullName=org.openttd.sdl ScreenOrientation=h InhibitSuspend=n -AppDataDownloadUrl="Data files size is 19 Mb|https://sites.google.com/site/andgamdev/openttd-1.0.4-data.zip?attredirects=0&d=1/download^OpenTTD fonts 4MB|https://sites.google.com/site/andgamdev/openttd-1.0.4-fonts-data.zip?attredirects=0&d=1^MIDI music support (18 Mb)|http://sourceforge.net/projects/libsdl-android/files/timidity.zip/download" +AppDataDownloadUrl="Data files size is 19 Mb|http://sites.google.com/site/andgamdev/openttd-1.0.4-data.zip?attredirects=0&d=1^OpenTTD fonts 4MB|http://sites.google.com/site/andgamdev/openttd-1.0.4-fonts-data.zip?attredirects=0&d=1^MIDI music support (18 Mb)|http://sourceforge.net/projects/libsdl-android/files/timidity.zip/download" SdlVideoResize=y SdlVideoResizeKeepAspect=n NeedDepthBuffer=n AppUsesMouse=y -AppNeedsTwoButtonMouse=n +AppNeedsTwoButtonMouse=y AppNeedsArrowKeys=y AppNeedsTextInput=y AppUsesJoystick=n diff --git a/project/jni/application/openttd/libapplication.so b/project/jni/application/openttd/libapplication.so deleted file mode 100755 index b55cf9f56..000000000 Binary files a/project/jni/application/openttd/libapplication.so and /dev/null differ diff --git a/project/jni/application/setEnvironment.sh b/project/jni/application/setEnvironment.sh index b698cd27e..a924792ed 100755 --- a/project/jni/application/setEnvironment.sh +++ b/project/jni/application/setEnvironment.sh @@ -23,11 +23,11 @@ GCCVER=4.4.0 PLATFORMVER=android-8 LOCAL_PATH=`dirname $0` LOCAL_PATH=`cd $LOCAL_PATH && pwd` -STL_INCLUDE="-I$LOCAL_PATH/../stlport/stlport" -STL_LIB="$LOCAL_PATH/../../obj/local/armeabi/libstlport.a" +STL_INCLUDE="-I$LOCAL_PATH/../stlport/stlport -fno-exceptions -fno-rtti" +STL_LIB="$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libstdc++.so $LOCAL_PATH/../../obj/local/armeabi/libstlport.a" if [ -n "`echo $NDK | grep '[-]crystax'`" ] ; then - STL_INCLUDE= - STL_LIB= + STL_INCLUDE="-fexceptions -frtti" + STL_LIB="" fi APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@'` @@ -48,7 +48,7 @@ done CFLAGS="-I$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/include \ -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums \ -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -DANDROID \ --Wno-psabi -march=armv5te -mtune=xscale -msoft-float -fno-exceptions -fno-rtti -mthumb -Os \ +-Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os \ -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 \ -Wa,--noexecstack -DNDEBUG -g \ -I$LOCAL_PATH/../sdl-1.2/include $STL_INCLUDE \ @@ -59,7 +59,6 @@ LDFLAGS="-nostdlib -Wl,-soname,libapplication.so -Wl,-shared,-Bsymbolic \ $NDK/build/prebuilt/$MYARCH/arm-eabi-$GCCVER/lib/gcc/arm-eabi/4.4.0/libgcc.a \ `echo $APP_SHARED_LIBS | sed \"s@\([-a-zA-Z0-9_.]\+\)@$LOCAL_PATH/../../obj/local/armeabi/lib\1.so@g\"` \ $NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libc.so \ -$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libstdc++.so \ $NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib/libm.so \ -Wl,--no-undefined -Wl,-z,noexecstack \ -L$NDK/build/platforms/$PLATFORMVER/arch-arm/usr/lib \