From 78e88a74735861a542c800a634b734fafbcc1b1e Mon Sep 17 00:00:00 2001 From: Miku AuahDark Date: Sat, 20 Jul 2019 20:49:25 +0800 Subject: [PATCH] Override getMainSharedObject() This theoretically allows LOVE libs not to be extracted in Marshmallow and later by utilizing extractNativeLibs=false. However this is left to users (developer) to decide whetever to use this or not. --- .../java/org/love2d/android/GameActivity.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/love/src/main/java/org/love2d/android/GameActivity.java b/love/src/main/java/org/love2d/android/GameActivity.java index 45dbebb8..cf446f66 100644 --- a/love/src/main/java/org/love2d/android/GameActivity.java +++ b/love/src/main/java/org/love2d/android/GameActivity.java @@ -45,14 +45,30 @@ public class GameActivity extends SDLActivity { @Override protected String[] getLibraries() { return new String[]{ - "c++_shared", - "mpg123", - "openal", - "hidapi", - "love", + "c++_shared", + "mpg123", + "openal", + "hidapi", + "love", }; } + @Override + protected String getMainSharedObject() { + String[] libs = getLibraries(); + String libname = "lib" + libs[libs.length - 1] + ".so"; + + // Since Lollipop, you can simply pass "libname.so" to dlopen + // and it will resolve correct paths and load correct library. + // This is mandatory for extractNativeLibs=false support in + // Marshmallow. + if (android.os.Build.VERSION.SDK_INT >= 21) { + return libname; + } else { + return getContext().getApplicationInfo().nativeLibraryDir + "/" + libname; + } + } + @Override protected void onCreate(Bundle savedInstanceState) { Log.d("GameActivity", "started");