Android remote code loading
android, auto-update
Solution
I've successfully used DexClassLoader. It's important to provide a `dexOutputDir` that is actually writeable by your app, so not `/data/dalvik-cache`. Otherwise the log will show one or two lines about failing to write there, followed by `ClassNotFoundException`.
cl = new DexClassLoader("/full/path/com.example.apk",
getFilesDir().getAbsolutePath(),// /data/data/foo/files
null, // native lib path, I haven't used this
MyClass.class.getClassLoader());
// This doesn't make Class.forName() work, instead I do this:
Class<?> foo = cl.loadClass("com.example.foo");
To make `Class.forName()` work, you could try Thread.setContextClassLoader() (I haven't).
Problem
I am developing a library for Android that requires frequent updates from a central server. I was thinking how nice it would be if my library could update itself -- or if I could just release a bootstrap library that downloads the target library when the app is installed. I see this class in 1.5 called "DexClassLoader" but there seems to be precious little on the web besides the API docs. Has anyone used this successfully for the scenario which I described? Also, do the terms of the Android Market permit such a thing?