diff --git a/src/Xamarin.Android.Build.Tasks/Resources/MonoPackageManager.java b/src/Xamarin.Android.Build.Tasks/Resources/MonoPackageManager.java index dd4052bd739..5ba4885fc95 100644 --- a/src/Xamarin.Android.Build.Tasks/Resources/MonoPackageManager.java +++ b/src/Xamarin.Android.Build.Tasks/Resources/MonoPackageManager.java @@ -31,6 +31,7 @@ public static void LoadApplication (Context context, ApplicationInfo runtimePack ); context.registerReceiver (new mono.android.app.NotifyTimeZoneChanges (), timezoneChangedFilter); + preloadAppNativeLibraries(context); System.loadLibrary("monodroid"); Locale locale = Locale.getDefault (); String language = locale.getLanguage () + "-" + locale.getCountry (); @@ -79,6 +80,27 @@ static String getNativeLibraryPath (ApplicationInfo ainfo) return ainfo.dataDir + "/lib"; } + static void preloadAppNativeLibraries(Context context) { + InputStream assetStream = null; + try { + assetStream = context.getAssets().open("ld_preload.txt"); + BufferedReader reader = new BufferedReader(new InputStreamReader(assetStream)); + + String lib = null; + while ((lib = reader.readLine()) != null) { + try { + System.loadLibrary(lib); + } catch (Throwable t) { + Log.e("MonoPackageManager", "OOPS : " + t); + } + } + } catch (Throwable t) { + + } finally { + try { assetStream.close(); } catch (Throwable t2) { } + } + } + public static String[] getAssemblies () { return MonoPackageManager_Resources.Assemblies;