On Android, loading a JAR can be accomplished as follows:

String sdPath = Environment.getExternalStorageDirectory() + "/";
String fullPath = sdPath + "nativebridge.jar"; // produced by dx tool
File f = new File(fullPath);
final String libPath = fullPath;
final File tmpDir = getDir("dex", 0);

f = new File(libPath);

final DexClassLoader classloader = new DexClassLoader(libPath,
 tmpDir.getAbsolutePath(), null, this.getClass() .getClassLoader());
               
final Class classToLoad = (Class) classloader.loadClass("cx.ath.journeyman.MyBroadcastReceiver");

where the following is true:

  • cx.ath.journeyman is the package name and MyBroadcastReceiver is the class name
  • nativebridge.jar is located on /sdcard/ and contains a classes.dex file
  • nativebridge.jar is produced like so:
    • "c:\Program Files\android-sdk-windows\build-tools\17.0.0\dx.bat" --dex --output="c:\temp\nativebridge.jar" D:\Development\Android\bin\nativebridge.jar
    • Android\bin\nativebridge.jar is the Java archive produced by the Eclipse compiler, and
    • c:\temp\nativebridge.jar is the output produced by the Android dx tool.

The above allows an Android application to load any class.

Alternatively, use the LoadAPK magic function in the Android2DelphiImport tool.