From 235f8b1cbff8ed13071d5c19c0be492c0b25cb78 Mon Sep 17 00:00:00 2001 From: Sven Gothel <sgothel@jausoft.com> Date: Sat, 17 Mar 2012 21:15:49 +0100 Subject: Add 'asset' URLConnection; IOUtil uses URLConnection / incr. effeciency; Android ClassLoaderUtil cleanup; - Add 'asset' URLConnection - Please read API doc 'PiggybackURLConnection' and 'AssetURLConnection' - Solves generic resource handling where platform locations may differ, ie ClassLoader lookup on Android in the 'assets/' subfolder. - New Android 'AssetDexClassLoader' uses 'assets/' folder for findResource(..) - aapt.signed (our APK ant task) - uses 'assets/' folder - adds the 'assetsdir' attribute allowing to copy other assets into the APK - IOUtil uses URLConnection / incr. effeciency - using URLConnection on all getResource(..) since URL is connected anyways for validation and URLConnection can be used by caller right away - String getRelativeOf(URL, String) -> URL getRelativeOf(URL, String) - preserves scheme, authority, etc - simple parentOf handling, more efficient - reusing new 'asset' protocol impl. - Android ClassLoaderUtil cleanup; - Use createClassLoader(..) impl for build-in static jogamp and user APKs, which removes code redundancy Tests: New code path, especially 'assets' are covered by new unit tests, no regressions on Linux. --- .../android/launcher/TraceDexClassLoader.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/java/jogamp/android/launcher/TraceDexClassLoader.java (limited to 'src/java/jogamp/android/launcher/TraceDexClassLoader.java') diff --git a/src/java/jogamp/android/launcher/TraceDexClassLoader.java b/src/java/jogamp/android/launcher/TraceDexClassLoader.java new file mode 100644 index 0000000..0b00489 --- /dev/null +++ b/src/java/jogamp/android/launcher/TraceDexClassLoader.java @@ -0,0 +1,27 @@ +package jogamp.android.launcher; + +import java.net.URL; + +import android.util.Log; + +import dalvik.system.DexClassLoader; + +public class TraceDexClassLoader extends DexClassLoader { + private static final boolean DEBUG = false; + + public TraceDexClassLoader(String dexPath, String dexOutputDir, String libPath, ClassLoader parent) { + super(dexPath, dexOutputDir, libPath, parent); + if(DEBUG) { + Log.d(TraceDexClassLoader.class.getSimpleName(), "ctor: dexPath " + dexPath + ", dexOutputDir " + dexOutputDir + ", libPath " + libPath + ", parent " + parent); + } + } + + @Override + public URL findResource(String name) { + final URL url = super.findResource(name); + if(DEBUG) { + Log.d(TraceDexClassLoader.class.getSimpleName(), "findResource: " + name + " -> " + url); + } + return url; + } +} -- cgit v1.2.3