Jelajahi Sumber

Fix Android build. Starting to use Java 8.

Yao Wei Tjong 姚伟忠 8 tahun lalu
induk
melakukan
b4732cf555

+ 4 - 4
Android/AndroidManifest.xml

@@ -5,10 +5,10 @@
           android:versionName="1.0"
           android:versionName="1.0"
           android:installLocation="auto">
           android:installLocation="auto">
 
 
-    <!-- Android 2.3.3 -->
+    <!-- Android 4.1 (Jelly Bean) -->
     <uses-sdk
     <uses-sdk
-        android:minSdkVersion="10"
-        android:targetSdkVersion="12"/>
+        android:minSdkVersion="16"
+        android:targetSdkVersion="27"/>
 
 
     <!-- OpenGL ES 2.0 -->
     <!-- OpenGL ES 2.0 -->
     <uses-feature android:glEsVersion="0x00020000"/>
     <uses-feature android:glEsVersion="0x00020000"/>
@@ -45,7 +45,7 @@
             android:name=".Urho3D"
             android:name=".Urho3D"
             android:label="@string/app_name"
             android:label="@string/app_name"
             android:configChanges="keyboardHidden|orientation|screenSize"
             android:configChanges="keyboardHidden|orientation|screenSize"
-            android:screenOrientation="landscape"/>
+            android:screenOrientation="portrait"/>
         <activity
         <activity
             android:name=".ScriptPicker"
             android:name=".ScriptPicker"
             android:configChanges="keyboardHidden|orientation|screenSize"
             android:configChanges="keyboardHidden|orientation|screenSize"

+ 3 - 3
Android/src/com/github/urho3d/SampleLauncher.java

@@ -33,8 +33,8 @@ import android.widget.ListView;
 
 
 public class SampleLauncher extends ListActivity {
 public class SampleLauncher extends ListActivity {
 
 
-    public static final String LIBRARY_NAMES = "libraryNames";
-    public static final String PICKED_LIBRARY = "pickedLibrary";
+    static final String LIBRARY_NAMES = "libraryNames";
+    static final String PICKED_LIBRARY = "pickedLibrary";
     private static final int OBTAINING_LIBNAMES = 1;
     private static final int OBTAINING_LIBNAMES = 1;
 
 
     @Override
     @Override
@@ -48,7 +48,7 @@ public class SampleLauncher extends ListActivity {
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 
 
         // Prepare a list view for picking the sample library names
         // Prepare a list view for picking the sample library names
-        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.samples_list_text_view);
+        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.samples_list_text_view);
         setContentView(R.layout.samples_list);
         setContentView(R.layout.samples_list);
         setListAdapter(adapter);
         setListAdapter(adapter);
     }
     }

+ 5 - 5
Android/src/com/github/urho3d/Urho3D.java

@@ -32,8 +32,8 @@ import java.util.*;
 
 
 public class Urho3D extends SDLActivity {
 public class Urho3D extends SDLActivity {
 
 
-    public static final String SCRIPTS = "scripts";
-    public static final String PICKED_SCRIPT = "pickedScript";
+    static final String SCRIPTS = "scripts";
+    static final String PICKED_SCRIPT = "pickedScript";
     private static final String TAG = "Urho3D";
     private static final String TAG = "Urho3D";
     private static final int OBTAINING_SCRIPT = 1;
     private static final int OBTAINING_SCRIPT = 1;
     private static String[] mArguments = new String[0];
     private static String[] mArguments = new String[0];
@@ -88,10 +88,10 @@ public class Urho3D extends SDLActivity {
             if ("Urho3DPlayer".equals(mArguments[0]) && mArguments.length == 1) {
             if ("Urho3DPlayer".equals(mArguments[0]) && mArguments.length == 1) {
                 // Urho3DPlayer needs a script name to play
                 // Urho3DPlayer needs a script name to play
                 try {
                 try {
-                    final AssetManager assetManager = getContext().getAssets();
+                    final AssetManager assetManager = getAssets();
                     HashMap<String, ArrayList<String>> scripts = new HashMap<String, ArrayList<String>>(2) {{
                     HashMap<String, ArrayList<String>> scripts = new HashMap<String, ArrayList<String>>(2) {{
-                        put("AngelScript", new ArrayList<String>(Arrays.asList(assetManager.list("Data/Scripts"))));
-                        put("Lua", new ArrayList<String>(Arrays.asList(assetManager.list("Data/LuaScripts"))));
+                        put("AngelScript", new ArrayList<>(Arrays.asList(assetManager.list("Data/Scripts"))));
+                        put("Lua", new ArrayList<>(Arrays.asList(assetManager.list("Data/LuaScripts"))));
                     }};
                     }};
                     startActivityForResult(new Intent(this, ScriptPicker.class).putExtra(SCRIPTS, scripts), OBTAINING_SCRIPT);
                     startActivityForResult(new Intent(this, ScriptPicker.class).putExtra(SCRIPTS, scripts), OBTAINING_SCRIPT);
                 } catch (IOException e) {
                 } catch (IOException e) {

+ 23 - 30
Android/src/org/libsdl/app/SDLActivity.java

@@ -3,9 +3,9 @@
 package org.libsdl.app;
 package org.libsdl.app;
 
 
 import java.io.File;
 import java.io.File;
-import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Arrays;
 import java.lang.reflect.Method;
 import java.lang.reflect.Method;
 import java.util.Objects;
 import java.util.Objects;
@@ -134,24 +134,16 @@ public class SDLActivity extends Activity {
         // Urho3D: auto load all the shared libraries available in the library path
         // Urho3D: auto load all the shared libraries available in the library path
         if (!mIsSharedLibraryLoaded) {
         if (!mIsSharedLibraryLoaded) {
             String libraryPath = getApplicationInfo().nativeLibraryDir;
             String libraryPath = getApplicationInfo().nativeLibraryDir;
-            File[] files = new File(libraryPath).listFiles(new FilenameFilter() {
-                @Override
-                public boolean accept(File dir, String filename) {
-                    // Only list libraries, i.e. exclude gdbserver when it presents
-                    return filename.matches("^lib.*\\.so$");
-                }
+            File[] files = new File(libraryPath).listFiles((dir, filename) -> {
+                // Only list libraries, i.e. exclude gdbserver when it presents
+                return filename.matches("^lib.*\\.so$");
             });
             });
             String errorMsgBrokenLib = "";
             String errorMsgBrokenLib = "";
             if (files == null) {
             if (files == null) {
                 errorMsgBrokenLib = "no libraries found in path \"" + libraryPath + "\"";
                 errorMsgBrokenLib = "no libraries found in path \"" + libraryPath + "\"";
             } else {
             } else {
-                Arrays.sort(files, new Comparator<File>() {
-                    @Override
-                    public int compare(File lhs, File rhs) {
-                        return Long.valueOf(lhs.lastModified()).compareTo(rhs.lastModified());
-                    }
-                });
-                ArrayList<String> libraryNames = new ArrayList<String>(files.length);
+                Arrays.sort(files, (lhs, rhs) -> Long.valueOf(lhs.lastModified()).compareTo(rhs.lastModified()));
+                ArrayList<String> libraryNames = new ArrayList<>(files.length);
                 for (final File libraryFilename : files) {
                 for (final File libraryFilename : files) {
                     String name = libraryFilename.getName().replaceAll("^lib(.*)\\.so$", "$1");
                     String name = libraryFilename.getName().replaceAll("^lib(.*)\\.so$", "$1");
                     libraryNames.add(name);
                     libraryNames.add(name);
@@ -163,8 +155,6 @@ public class SDLActivity extends Activity {
                         mIsSharedLibraryLoaded = true;
                         mIsSharedLibraryLoaded = true;
                         mMainSharedLib = "lib" + libraryNames.get(libraryNames.size() - 1) + ".so";
                         mMainSharedLib = "lib" + libraryNames.get(libraryNames.size() - 1) + ".so";
                     }
                     }
-                } catch(UnsatisfiedLinkError e) {
-                    errorMsgBrokenLib = e.getMessage();
                 } catch(Exception e) {
                 } catch(Exception e) {
                     errorMsgBrokenLib = e.getMessage();
                     errorMsgBrokenLib = e.getMessage();
                 }
                 }
@@ -193,21 +183,24 @@ public class SDLActivity extends Activity {
             }
             }
         }
         }
 
 
-        // Set up JNI
-        SDL.setupJNI();
+        // Urho3D: onLoadLibrary() may return false
+        if (SDLActivity.mIsSharedLibraryLoaded) {
+            // Set up JNI
+            SDL.setupJNI();
 
 
-        // Initialize state
-        SDL.initialize();
+            // Initialize state
+            SDL.initialize();
 
 
-        // So we can call stuff from static callbacks
-        mSingleton = this;
-        SDL.setContext(this);
+            // So we can call stuff from static callbacks
+            mSingleton = this;
+            SDL.setContext(this);
 
 
-        if (Build.VERSION.SDK_INT >= 11) {
-            mClipboardHandler = new SDLClipboardHandler_API11();
-        } else {
-            /* Before API 11, no clipboard notification (eg no SDL_CLIPBOARDUPDATE) */
-            mClipboardHandler = new SDLClipboardHandler_Old();
+            if (Build.VERSION.SDK_INT >= 11) {
+                mClipboardHandler = new SDLClipboardHandler_API11();
+            } else {
+                /* Before API 11, no clipboard notification (eg no SDL_CLIPBOARDUPDATE) */
+                mClipboardHandler = new SDLClipboardHandler_Old();
+            }
         }
         }
 
 
         // Set up the surface
         // Set up the surface
@@ -297,7 +290,7 @@ public class SDLActivity extends Activity {
         if (!SDLActivity.mIsSharedLibraryLoaded) {
         if (!SDLActivity.mIsSharedLibraryLoaded) {
            super.onDestroy();
            super.onDestroy();
            // Reset everything in case the user re opens the app
            // Reset everything in case the user re opens the app
-           if (mSingleton)
+           if (mSingleton != null)
                SDLActivity.initialize();
                SDLActivity.initialize();
            return;
            return;
         }
         }
@@ -324,7 +317,7 @@ public class SDLActivity extends Activity {
         super.onDestroy();
         super.onDestroy();
 
 
         // Reset everything in case the user re opens the app
         // Reset everything in case the user re opens the app
-        if (mSingleton)
+        if (mSingleton != null)
             SDLActivity.initialize();
             SDLActivity.initialize();
     }
     }
 
 

+ 1 - 1
Source/Urho3D/Core/Main.h

@@ -71,7 +71,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE prevInstance, PSTR cmdLine, in
 #elif defined(__ANDROID__) || defined(IOS) || defined(TVOS)
 #elif defined(__ANDROID__) || defined(IOS) || defined(TVOS)
 #define URHO3D_DEFINE_MAIN(function) \
 #define URHO3D_DEFINE_MAIN(function) \
 extern "C" int SDL_main(int argc, char** argv); \
 extern "C" int SDL_main(int argc, char** argv); \
-int SDL_main(int argc, char** argv) \
+int URHO3D_API SDL_main(int argc, char** argv) \
 { \
 { \
     Urho3D::ParseArguments(argc, argv); \
     Urho3D::ParseArguments(argc, argv); \
     return function; \
     return function; \