Browse Source

SDK:
- add minSdkVersion to new android project AndroidManifest.xml
- fix formatting of MainActivity

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8217 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

nor..67 14 years ago
parent
commit
f3bd17cadd
1 changed files with 65 additions and 8 deletions
  1. 65 8
      jme3-android/src/com/jme3/gde/android/AndroidSdkTool.java

+ 65 - 8
jme3-android/src/com/jme3/gde/android/AndroidSdkTool.java

@@ -7,6 +7,8 @@ package com.jme3.gde.android;
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.util.ArrayList;
 import java.util.List;
@@ -21,6 +23,11 @@ import org.openide.filesystems.FileUtil;
 import org.openide.util.Exceptions;
 import org.openide.util.NbPreferences;
 import org.openide.util.Utilities;
+import org.openide.xml.XMLUtil;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
 
 /**
  *
@@ -221,7 +228,7 @@ public class AndroidSdkTool {
                 out.close();
                 lock.releaseLock();
             } else {
-                throw new IOException("Cannot find " + mainAct);
+                throw new IOException("Cannot find " + mainActName);
             }
         } catch (InterruptedException ex) {
             Exceptions.printStackTrace(ex);
@@ -231,6 +238,7 @@ public class AndroidSdkTool {
             }
             Exceptions.printStackTrace(ex);
         }
+        updateAndroidManifest(project);
     }
 
     public static void updateProject(Project project, String target, String name) {
@@ -261,11 +269,60 @@ public class AndroidSdkTool {
         }
     }
 
+    private static void updateAndroidManifest(Project project) {
+        FileObject manifest = project.getProjectDirectory().getFileObject("mobile/AndroidManifest.xml");
+        if (manifest == null) {
+            return;
+        }
+        InputStream in = null;
+        FileLock lock = null;
+        OutputStream out = null;
+        try {
+            in = manifest.getInputStream();
+            Document configuration = XMLUtil.parse(new InputSource(in), false, false, null, null);
+            in.close();
+            in = null;
+            Element sdkElement = XmlHelper.findChildElement(configuration.getDocumentElement(), "uses-sdk");
+            if (sdkElement == null) {
+                sdkElement = configuration.createElement("uses-sdk");
+                configuration.getDocumentElement().appendChild(sdkElement);
+            }
+            if (!sdkElement.getAttribute("android:minSdkVersion").equals("8")) {
+                sdkElement.setAttribute("android:minSdkVersion", "8");
+                lock = manifest.lock();
+                out = manifest.getOutputStream(lock);
+                XMLUtil.write(configuration, out, "UTF-8");
+                out.close();
+                out = null;
+                lock.releaseLock();
+                lock = null;
+            }
+        } catch (SAXException ex) {
+            Exceptions.printStackTrace(ex);
+        } catch (IOException ex) {
+            Exceptions.printStackTrace(ex);
+        } finally {
+            if (lock != null) {
+                lock.releaseLock();
+            }
+            try {
+                if (in != null) {
+                    in.close();
+                }
+                if (out != null) {
+                    out.close();
+                }
+            } catch (IOException ex1) {
+                Exceptions.printStackTrace(ex1);
+            }
+        }
+    }
+
     private static String mainActivityString(String mainClass, String packag) {
-        String str = "package "+packag+";\n"
+        String str = "package " + packag + ";\n"
                 + "import com.jme3.app.AndroidHarness;\n"
-                + "import android.content.pm.ActivityInfo;"
-                + "import com.jme3.system.android.AndroidConfigChooser.ConfigType;"
+                + "import android.content.pm.ActivityInfo;\n"
+                + "import com.jme3.system.android.AndroidConfigChooser.ConfigType;\n"
                 + "public class MainActivity extends AndroidHarness{\n"
                 + "    public MainActivity(){\n"
                 + "        // Set the application class to run\n"
@@ -275,13 +332,13 @@ public class AndroidSdkTool {
                 + "        // Exit Dialog title & message\n"
                 + "        exitDialogTitle = \"Exit?\";\n"
                 + "        exitDialogMessage = \"Press Yes\";\n"
-                + "        // Edit: 25.06.2011: Enable verbose logging\n"
+                + "        // Enable verbose logging\n"
                 + "        eglConfigVerboseLogging = false;\n"
-                + "        // Edit: 30.06.2011: Choose screen orientation\n"
+                + "        // Choose screen orientation\n"
                 + "        screenOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;\n"
-                + "        // Edit 12.07.2011: Invert the MouseEvents X (default = true)\n"
+                + "        // Invert the MouseEvents X (default = true)\n"
                 + "        mouseEventsInvertX = true;\n"
-                + "        // Edit 05.07.2011: Invert the MouseEvents Y (default = true)\n"
+                + "        // Invert the MouseEvents Y (default = true)\n"
                 + "        mouseEventsInvertY = true;\n"
                 + "    }\n"
                 + "}\n";