diff options
author | Sven Gothel <[email protected]> | 2012-03-17 21:15:49 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-03-17 21:15:49 +0100 |
commit | 235f8b1cbff8ed13071d5c19c0be492c0b25cb78 (patch) | |
tree | 659845e16bd69372bc7ddc3a42b3aa7130d18df5 /src/java/jogamp/android/launcher/AssetDexClassLoader.java | |
parent | 0cfc7847c58b51c9a26b50d905b592d1fc4c8578 (diff) |
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.
Diffstat (limited to 'src/java/jogamp/android/launcher/AssetDexClassLoader.java')
-rw-r--r-- | src/java/jogamp/android/launcher/AssetDexClassLoader.java | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/java/jogamp/android/launcher/AssetDexClassLoader.java b/src/java/jogamp/android/launcher/AssetDexClassLoader.java new file mode 100644 index 0000000..ec3ae6c --- /dev/null +++ b/src/java/jogamp/android/launcher/AssetDexClassLoader.java @@ -0,0 +1,29 @@ +package jogamp.android.launcher; + +import java.net.URL; + +import android.util.Log; + +import dalvik.system.DexClassLoader; + +public class AssetDexClassLoader extends DexClassLoader { + private static final boolean DEBUG = false; + private static final String assets_folder = "assets/"; + + public AssetDexClassLoader(String dexPath, String dexOutputDir, String libPath, ClassLoader parent) { + super(dexPath, dexOutputDir, libPath, parent); + if(DEBUG) { + Log.d(AssetDexClassLoader.class.getSimpleName(), "ctor: dexPath " + dexPath + ", dexOutputDir " + dexOutputDir + ", libPath " + libPath + ", parent " + parent); + } + } + + @Override + public URL findResource(String name) { + final String assetName = name.startsWith(assets_folder) ? name : assets_folder + name ; + URL url = super.findResource(assetName); + if(DEBUG) { + Log.d(AssetDexClassLoader.class.getSimpleName(), "findResource: " + name + " -> " + assetName + " -> " + url); + } + return url; + } +} |