From ef64341d147e4d9e22671e80429bfdbe2860e643 Mon Sep 17 00:00:00 2001 From: benfry Date: Sun, 8 Aug 2010 22:28:22 +0000 Subject: [PATCH] remove opengl in preproc, fix permissions, debug bunk --- android/todo.txt | 29 ++++++++++--------- .../app/tools/android/AndroidDevice.java | 2 +- .../app/tools/android/AndroidEnvironment.java | 6 ++-- .../app/tools/android/AndroidTool.java | 18 +++++++----- .../processing/app/tools/android/Build.java | 20 +++++++++---- .../app/tools/android/DeviceListener.java | 2 +- .../app/tools/android/Manifest.java | 10 ++++--- 7 files changed, 52 insertions(+), 35 deletions(-) diff --git a/android/todo.txt b/android/todo.txt index 169c7d1ba..41a2995c2 100644 --- a/android/todo.txt +++ b/android/todo.txt @@ -61,6 +61,19 @@ _ StreamPump has been quieted, but maybe this needs to be a global log setting X fix the width of the build window X some sort of warning re: messing with AndroidManifest.xml X added to the wiki +X implement createGraphics() for A3D/P3D/OPENGL +X http://dev.processing.org/bugs/show_bug.cgi?id=1488 +X http://code.google.com/p/processing/issues/detail?id=240 +X added a note to the wiki +X make sure that AndroidManifest and other files are copied on Save As +X icons.. any others? +X Errors show up that .java files are duplicates with the Android tools. +X problem is with the packages and where the preproc is putting the file +X example sketch added to bug report +X http://code.google.com/p/processing/issues/detail?id=232 +X prevent adding the opengl library when it's not needed +X preprocessor removes the code by before export +X added a note to the wiki earlier X if sketchRenderer() et al are used in android, need to add to desktop @@ -117,15 +130,6 @@ confirm: [ ] alias, password, confirm, validity (years) first/last name, ounit, org, city/locale, state/province, country code (xx) -_ make sure that AndroidManifest and other files are copied on Save As -_ icons.. any others? - -P3 _ Errors show up that .java files are duplicates with the Android tools. -P3 _ problem is with the packages and where the preproc is putting the file -P3 _ example sketch added to bug report -P3 _ http://dev.processing.org/bugs/show_bug.cgi?id=1472 -P3 _ http://code.google.com/p/processing/issues/detail?id=232 - _ seems to have problems on 64-bit windows _ removing local version of java helped someone fix it @@ -148,10 +152,10 @@ _ "Unable to resolve target 'Google...'" when APIs aren't installed _ add an error message that explains what to do _ for libraries that don't work with android, don't let them export -_ e.g. people adding the opengl library when it's not needed -_ http://dev.processing.org/bugs/show_bug.cgi?id=1524 +_ http://code.google.com/p/processing/issues/detail?id=248 _ add line for export in libraries to say whether they're compatible _ even just 'android=' will be ok +_ or 'mode=java,android,python' _ error messages in runner that are handled special (OOME) need different _ handling for android vs others.. argh @@ -179,9 +183,6 @@ CORE (PApplet, P2D et al) P2 _ too many temporary objects (particularly w/ color) created with A2D P2 _ http://dev.processing.org/bugs/show_bug.cgi?id=1399 -P3 _ implement createGraphics() for A3D/P3D/OPENGL -P3 _ http://dev.processing.org/bugs/show_bug.cgi?id=1488 - P3 _ mouseClicked() is currently missing P3 _ implement tap methods to handle mouseClicked() P3 _ http://dev.processing.org/bugs/show_bug.cgi?id=1406 diff --git a/android/tool/src/processing/app/tools/android/AndroidDevice.java b/android/tool/src/processing/app/tools/android/AndroidDevice.java index 23a2b3946..fb309fbc6 100644 --- a/android/tool/src/processing/app/tools/android/AndroidDevice.java +++ b/android/tool/src/processing/app/tools/android/AndroidDevice.java @@ -170,7 +170,7 @@ class AndroidDevice implements AndroidDeviceProperties { final List stackCopy = Collections .unmodifiableList(new ArrayList(stackTrace)); for (final DeviceListener listener : listeners) { - listener.stacktrace(stackCopy); + listener.stackTrace(stackCopy); } stackTrace.clear(); } diff --git a/android/tool/src/processing/app/tools/android/AndroidEnvironment.java b/android/tool/src/processing/app/tools/android/AndroidEnvironment.java index c03eb3dc9..4cd4cf0e7 100644 --- a/android/tool/src/processing/app/tools/android/AndroidEnvironment.java +++ b/android/tool/src/processing/app/tools/android/AndroidEnvironment.java @@ -53,9 +53,11 @@ class AndroidEnvironment { } } - + private AndroidEnvironment() { - System.out.println("Starting up AndroidEnvironment"); + if (AndroidTool.DEBUG) { + System.out.println("Starting up AndroidEnvironment"); + } // killAdbServer(); Runtime.getRuntime().addShutdownHook( new Thread("AndroidEnvironment Shutdown") { diff --git a/android/tool/src/processing/app/tools/android/AndroidTool.java b/android/tool/src/processing/app/tools/android/AndroidTool.java index 8b742ff57..de548d2ac 100644 --- a/android/tool/src/processing/app/tools/android/AndroidTool.java +++ b/android/tool/src/processing/app/tools/android/AndroidTool.java @@ -43,6 +43,8 @@ public class AndroidTool implements Tool, DeviceListener { private AndroidSDK sdk; private Editor editor; private Build build; + + static public boolean DEBUG = true; private static final String ANDROID_CORE_FILENAME = "processing-android-core-" + Base.VERSION_NAME + ".zip"; @@ -258,13 +260,13 @@ public class AndroidTool implements Tool, DeviceListener { } - private void buildReleaseForExport() throws MonitorCanceled { + private void buildReleaseForExport(String target) throws MonitorCanceled { final IndeterminateProgressMonitor monitor = new IndeterminateProgressMonitor(editor, "Building and exporting...", "Creating project..."); try { - File tempFolder = build.createProject("release"); + File tempFolder = build.createProject(target); if (tempFolder == null) { return; } @@ -273,9 +275,9 @@ public class AndroidTool implements Tool, DeviceListener { throw new MonitorCanceled(); } monitor.setNote("Building release version..."); - if (!build.antBuild("release")) { - return; - } +// if (!build.antBuild("release")) { +// return; +// } if (monitor.isCanceled()) { throw new MonitorCanceled(); @@ -377,7 +379,7 @@ public class AndroidTool implements Tool, DeviceListener { * in the package. If the packaging for droid sketches changes, * this method will have to change too. */ - public void stacktrace(final List trace) { + public void stackTrace(final List trace) { final Iterator frames = trace.iterator(); final String exceptionLine = frames.next(); @@ -460,7 +462,7 @@ public class AndroidTool implements Tool, DeviceListener { private class ExportHandler implements Runnable { public void run() { try { - buildReleaseForExport(); + buildReleaseForExport("debug"); } catch (final MonitorCanceled ok) { editor.statusNotice("Canceled."); } finally { @@ -475,6 +477,8 @@ public class AndroidTool implements Tool, DeviceListener { */ private class ExportAppHandler implements Runnable { public void run() { + //buildReleaseForExport("release"); + // Need to implement an entire signing setup first // http://dev.processing.org/bugs/show_bug.cgi?id=1430 editor.statusError("Export application not yet implemented."); diff --git a/android/tool/src/processing/app/tools/android/Build.java b/android/tool/src/processing/app/tools/android/Build.java index cfd7f3f41..307922a53 100644 --- a/android/tool/src/processing/app/tools/android/Build.java +++ b/android/tool/src/processing/app/tools/android/Build.java @@ -113,16 +113,17 @@ class Build { // Create the 'src' folder with the preprocessed code. final File srcFolder = new File(tempBuildFolder, "src"); - Base.openFolder(tempBuildFolder); + if (AndroidTool.DEBUG) Base.openFolder(tempBuildFolder); try { manifest = new Manifest(editor); // System.out.println(manifest + " " + manifest.getPackageName()); - final File javaFolder = - mkdirs(srcFolder, manifest.getPackageName().replace('.', '/')); - // File srcFile = new File(actualSrc, className + ".java"); - final String buildPath = javaFolder.getAbsolutePath(); + // the preproc should take care of this now +// final File javaFolder = +// mkdirs(srcFolder, manifest.getPackageName().replace('.', '/')); +// // File srcFile = new File(actualSrc, className + ".java"); +// final String buildPath = javaFolder.getAbsolutePath(); // String prefsLine = Preferences.get("preproc.imports"); // System.out.println("imports are " + prefsLine); @@ -136,7 +137,9 @@ class Build { editor.statusError("Could not parse the size() command."); return null; } - className = sketch.preprocess(buildPath, new Preproc(sketch.getName())); + className = sketch.preprocess(srcFolder.getAbsolutePath(), //buildPath, + manifest.getPackageName(), + new Preproc(sketch.getName())); if (className != null) { // final File androidXML = new File(tempBuildFolder, "AndroidManifest.xml"); // writeAndroidManifest(androidXML, sketch.getName(), className); @@ -377,6 +380,11 @@ class Build { program = program.substring(0, start) + program.substring(start + sizeStatement.length()); } +// String[] found = PApplet.match(program, "import\\s+processing.opengl.*\\s*"); +// if (found != null) { +// } + program = program.replaceAll("import\\s+processing\\.opengl\\.\\S+;", ""); +// PApplet.println(program); return super.write(out, program, codeFolderPackages); } diff --git a/android/tool/src/processing/app/tools/android/DeviceListener.java b/android/tool/src/processing/app/tools/android/DeviceListener.java index 1faecd49e..07b4c74f5 100644 --- a/android/tool/src/processing/app/tools/android/DeviceListener.java +++ b/android/tool/src/processing/app/tools/android/DeviceListener.java @@ -3,7 +3,7 @@ package processing.app.tools.android; import java.util.List; public interface DeviceListener { - void stacktrace(final List trace); + void stackTrace(final List trace); void sketchStopped(); } diff --git a/android/tool/src/processing/app/tools/android/Manifest.java b/android/tool/src/processing/app/tools/android/Manifest.java index 52c2fe9fd..7dc5b1be8 100644 --- a/android/tool/src/processing/app/tools/android/Manifest.java +++ b/android/tool/src/processing/app/tools/android/Manifest.java @@ -84,14 +84,16 @@ public class Manifest { } -// writer.println(" "); -// writer.println(" "); +//writer.println(" "); +//writer.println(" "); + static final String PERMISSION_PREFIX = "android.permission."; + public String[] getPermissions() { XMLElement[] elements = xml.getChildren("uses-permission"); int count = elements.length; String[] names = new String[count]; for (int i = 0; i < count; i++) { - names[i] = elements[i].getString("android:name"); + names[i] = elements[i].getString("android:name").substring(PERMISSION_PREFIX.length()); } return names; } @@ -105,7 +107,7 @@ public class Manifest { // ...and add the new kids back for (String name : names) { XMLElement newbie = new XMLElement("uses-permission"); - newbie.setString("android:name", name); + newbie.setString("android:name", PERMISSION_PREFIX + name); xml.addChild(newbie); } save();