From 1a42ce18e9b976919fc150b5fb4ce7129f22a6a4 Mon Sep 17 00:00:00 2001 From: akshayaurora Date: Sun, 9 Oct 2016 14:56:41 +0530 Subject: [PATCH 1/4] load `ssl` and `crypto` libs before loading python, for (4.1.2 or earlier devices) closes #866 --- .../bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java index 9174cd3afc..cd0d3f459f 100644 --- a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java +++ b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java @@ -14,6 +14,8 @@ protected static String[] getLibraries() { "SDL2_image", "SDL2_mixer", "SDL2_ttf", + "crypto1.0.2h", + "ssl1.0.2h", "python2.7", "python3.5m", "python3.6m", From 6f33b48f194eb0cff3d4171cb520882a6a343d2f Mon Sep 17 00:00:00 2001 From: Akshay Arora Date: Fri, 4 Nov 2016 02:45:52 +0530 Subject: [PATCH 2/4] dynamically load libcrypto ans libel if they exist --- .../src/org/kivy/android/PythonUtil.java | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java index cd0d3f459f..cfb376a451 100644 --- a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java +++ b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java @@ -3,32 +3,48 @@ import java.io.File; import android.util.Log; - +import java.util.ArrayList; +import java.io.FilenameFilter; public class PythonUtil { private static final String TAG = "pythonutil"; - protected static String[] getLibraries() { - return new String[] { - "SDL2", - "SDL2_image", - "SDL2_mixer", - "SDL2_ttf", - "crypto1.0.2h", - "ssl1.0.2h", - "python2.7", - "python3.5m", - "python3.6m", - "main" + protected static ArrayList getLibraries(File filesDir) { + + ArrayList MyList = new ArrayList(); + MyList.add("SDL2"); + MyList.add("SDL2_image"); + MyList.add("SDL2_mixer"); + MyList.add("SDL2_ttf"); + + String absPath = filesDir.getParentFile().getParentFile().getAbsolutePath() + "/lib/"; + filesDir = new File(absPath); + File [] files = filesDir.listFiles(new FilenameFilter() { + @Override + public boolean accept(File dir, String name) { + return name.matches(".*ssl.*") || name.matches(".*crypto.*"); + } + }); + + for (int i = 0; i < files.length; ++i) { + File mfl = files[i]; + String name = mfl.getName(); + name = name.substring(3, name.length() - 3); + MyList.add(name); }; + + MyList.add("python2.7"); + MyList.add("python3.5m"); + MyList.add("main"); + return MyList; } - public static void loadLibraries(File filesDir) { + public static void loadLibraries(File filesDir) { String filesDirPath = filesDir.getAbsolutePath(); boolean foundPython = false; - for (String lib : getLibraries()) { + for (String lib : getLibraries(filesDir)) { Log.v(TAG, "Loading library: " + lib); try { System.loadLibrary(lib); @@ -68,3 +84,4 @@ public static void loadLibraries(File filesDir) { Log.v(TAG, "Loaded everything!"); } } + From 6703ffd60b12f95b1a8a16c75450bee09126db12 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Fri, 1 Sep 2017 01:29:41 +0100 Subject: [PATCH 3/4] Restructured code for adding libs by regex --- .../src/org/kivy/android/PythonUtil.java | 58 +++++++++++-------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java index cfb376a451..20a4a7b27b 100644 --- a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java +++ b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java @@ -5,38 +5,48 @@ import android.util.Log; import java.util.ArrayList; import java.io.FilenameFilter; +// import android.os.PatternMatcher; +import java.util.regex.Pattern; public class PythonUtil { private static final String TAG = "pythonutil"; - protected static ArrayList getLibraries(File filesDir) { - - ArrayList MyList = new ArrayList(); - MyList.add("SDL2"); - MyList.add("SDL2_image"); - MyList.add("SDL2_mixer"); - MyList.add("SDL2_ttf"); + protected static void addLibraryIfExists(ArrayList libsList, String pattern, File libsDir) { + // pattern should be the name of the lib file, without the + // preceding "lib" or suffix ".so", for instance "ssl.*" will + // match files of the form "libssl.*.so". + File [] files = libsDir.listFiles(); - String absPath = filesDir.getParentFile().getParentFile().getAbsolutePath() + "/lib/"; - filesDir = new File(absPath); - File [] files = filesDir.listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String name) { - return name.matches(".*ssl.*") || name.matches(".*crypto.*"); + pattern = "lib" + pattern + "\\.so"; + Pattern p = Pattern.compile(pattern); + for (int i = 0; i < files.length; ++i) { + File file = files[i]; + String name = file.getName(); + Log.v(TAG, "Checking pattern " + pattern + " against " + name); + if (p.matcher(name).matches()) { + Log.v(TAG, "Pattern " + pattern + " matched file " + name); + libsList.add(name.substring(3, name.length() - 3)); } - }); + } + } - for (int i = 0; i < files.length; ++i) { - File mfl = files[i]; - String name = mfl.getName(); - name = name.substring(3, name.length() - 3); - MyList.add(name); - }; + protected static ArrayList getLibraries(File filesDir) { + + String libsDirPath = filesDir.getParentFile().getParentFile().getAbsolutePath() + "/lib/"; + File libsDir = new File(libsDirPath); - MyList.add("python2.7"); - MyList.add("python3.5m"); - MyList.add("main"); - return MyList; + ArrayList libsList = new ArrayList(); + addLibraryIfExists(libsList, "crystax", libsDir); + libsList.add("SDL2"); + libsList.add("SDL2_image"); + libsList.add("SDL2_mixer"); + libsList.add("SDL2_ttf"); + addLibraryIfExists(libsList, "ssl.*", libsDir); + addLibraryIfExists(libsList, "crypto.*", libsDir); + libsList.add("python2.7"); + libsList.add("python3.5m"); + libsList.add("main"); + return libsList; } public static void loadLibraries(File filesDir) { From 0aac1947ba24c035ad45daa61db5646f521f1b28 Mon Sep 17 00:00:00 2001 From: Alexander Taylor Date: Fri, 1 Sep 2017 01:32:48 +0100 Subject: [PATCH 4/4] Added sqlite3 to conditional library loads --- .../bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java index 20a4a7b27b..6574dae787 100644 --- a/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java +++ b/pythonforandroid/bootstraps/sdl2/build/src/org/kivy/android/PythonUtil.java @@ -5,7 +5,6 @@ import android.util.Log; import java.util.ArrayList; import java.io.FilenameFilter; -// import android.os.PatternMatcher; import java.util.regex.Pattern; public class PythonUtil { @@ -37,6 +36,7 @@ protected static ArrayList getLibraries(File filesDir) { ArrayList libsList = new ArrayList(); addLibraryIfExists(libsList, "crystax", libsDir); + addLibraryIfExists(libsList, "sqlite3", libsDir); libsList.add("SDL2"); libsList.add("SDL2_image"); libsList.add("SDL2_mixer");