blob: 0352538082abef7ba9fb32b68aa87169a0a9b810 [file] [log] [blame]
package com.facebook.soloader.nativeloader;
/** Facade to load native libraries for android */
public class NativeLoader {
private static SystemDelegate sDelegate;
/** Blocked default constructor */
private NativeLoader() {}
/**
* Initializes native code loading for this app. Should be called only once, before any calls to
* {@link #loadLibrary(String)}.
*
* @param delegate Delegate to use for all {@code loadLibrary} calls.
*/
public static void init(SystemDelegate delegate) {
synchronized (NativeLoader.class) {
if (sDelegate != null) {
throw new IllegalStateException("Cannot re-initialize NativeLoader.");
}
sDelegate = delegate;
}
}
/**
* Determine whether {@code NativeLoader} has already been initialized. This method should not
* normally be used, because initialization should be performed only once during app startup.
* However, libraries that want to provide a default initialization for {@code NativeLoader} to
* hide its existence from the app can use this method to avoid re-initializing.
*
* @return True if {@link #init(NativeLoaderDelegate)} has been called.
*/
public static boolean isInitialized() {
synchronized (NativeLoader.class) {
return sDelegate != null;
}
}
public static boolean loadLibrary(String shortName) {
return System.loadLibrary(shortName);
}
}