From b4fbc3bc309d27d86efdea46feec38691cd9eda9 Mon Sep 17 00:00:00 2001 From: "nor..67" Date: Thu, 8 Sep 2011 11:48:29 +0000 Subject: [PATCH] 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 --- .../com/jme3/gde/android/AndroidSdkTool.java | 73 +++++++++++++++++-- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/sdk/jme3-android/src/com/jme3/gde/android/AndroidSdkTool.java b/sdk/jme3-android/src/com/jme3/gde/android/AndroidSdkTool.java index 3ac75a5c6..c17c08e96 100644 --- a/sdk/jme3-android/src/com/jme3/gde/android/AndroidSdkTool.java +++ b/sdk/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";