diff options
Diffstat (limited to 'src/android/java/src/org/qtproject/qt')
-rw-r--r-- | src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java | 73 |
1 files changed, 38 insertions, 35 deletions
diff --git a/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java b/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java index 81304e23f6..66ba029ace 100644 --- a/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java +++ b/src/android/java/src/org/qtproject/qt/android/bindings/QtLoader.java @@ -76,7 +76,6 @@ public abstract class QtLoader { // These parameters matter in case of deploying application as system (embedded into firmware) public static final String SYSTEM_LIB_PATH = "/system/lib/"; - public String[] SYSTEM_APP_PATHS = {"/system/priv-app/", "/system/app/"}; public String APPLICATION_PARAMETERS = null; // use this variable to pass any parameters to your application, // the parameters must not contain any white spaces @@ -255,33 +254,40 @@ public abstract class QtLoader { if (useLocalLibs == 1) { ArrayList<String> libraryList = new ArrayList<>(); - - boolean apkDeployFromSystem = false; - String apkPath = m_context.getApplicationInfo().publicSourceDir; - File apkFile = new File(apkPath); - if (apkFile.exists()) { - for (String systemAppPath : SYSTEM_APP_PATHS) { - apkDeployFromSystem = apkFile.getAbsolutePath().startsWith(systemAppPath); - if (apkDeployFromSystem) - break; - } - } - String libsDir = null; String bundledLibsDir = null; - if (apkDeployFromSystem) { - String systemLibsPrefix = SYSTEM_LIB_PATH; - if (m_contextInfo.metaData.containsKey("android.app.system_libs_prefix")) { - systemLibsPrefix = m_contextInfo.metaData.getString("android.app.system_libs_prefix"); + + id = resources.getIdentifier("bundle_local_qt_libs", "string", packageName); + final int bundleLocalLibs = Integer.parseInt(resources.getString(id)); + if (bundleLocalLibs == 0) { + String systemLibsPrefix; + final String systemLibsKey = "android.app.system_libs_prefix"; + // First check if user has provided system libs prefix in AndroidManifest + if (m_contextInfo.applicationInfo.metaData != null && + m_contextInfo.applicationInfo.metaData.containsKey(systemLibsKey)) { + systemLibsPrefix = m_contextInfo.applicationInfo.metaData.getString(systemLibsKey); } else { - Log.e(QtApplication.QtTAG, "It looks like app deployed as system app. " - + "It may be necessary to specify path to system lib directory using " - + "android.app.system_libs_prefix metadata variable in your AndroidManifest.xml"); + // If not, check if it's provided by androiddeployqt in libs.xml + id = resources.getIdentifier("system_libs_prefix","string", + packageName); + systemLibsPrefix = resources.getString(id); + } + if (systemLibsPrefix.isEmpty()) { + systemLibsPrefix = SYSTEM_LIB_PATH; + Log.e(QtApplication.QtTAG, "It looks like app deployed using Unbundled " + + "deployment. It may be necessary to specify path to directory " + + "where Qt libraries are installed using either " + + "android.app.system_libs_prefix metadata variable in your " + + "AndroidManifest.xml or QT_ANDROID_SYSTEM_LIBS_PATH in your " + + "CMakeLists.txt"); Log.e(QtApplication.QtTAG, "Using " + SYSTEM_LIB_PATH + " as default path"); } + File systemLibraryDir = new File(systemLibsPrefix); - if (systemLibraryDir.exists() && systemLibraryDir.isDirectory() && systemLibraryDir.list().length > 0) { + if (systemLibraryDir.exists() && systemLibraryDir.isDirectory() + && systemLibraryDir.list().length > 0) { libsDir = systemLibsPrefix; + bundledLibsDir = systemLibsPrefix; } else { Log.e(QtApplication.QtTAG, "System library directory " + systemLibsPrefix @@ -300,7 +306,7 @@ public abstract class QtLoader { } } - if (apkDeployFromSystem && libsDir == null) + if (libsDir == null) throw new Exception(""); @@ -310,20 +316,17 @@ public abstract class QtLoader { libraryList.add(libPrefix + lib + ".so"); } - id = resources.getIdentifier("bundle_local_qt_libs", "string", packageName); - final int bundleLocalLibs = Integer.parseInt(resources.getString(id)); - - if (bundleLocalLibs == 1) { - id = resources.getIdentifier("load_local_libs", "array", packageName); - ArrayList<String> localLibs = prefferedAbiLibs(resources.getStringArray(id)); - for (String libs : localLibs) { - for (String lib : libs.split(":")) { - if (!lib.isEmpty()) - libraryList.add(libsDir + lib); - } + id = resources.getIdentifier("load_local_libs", "array", packageName); + ArrayList<String> localLibs = prefferedAbiLibs(resources.getStringArray(id)); + for (String libs : localLibs) { + for (String lib : libs.split(":")) { + if (!lib.isEmpty()) + libraryList.add(libsDir + lib); } - if (bundledLibsDir != null) - ENVIRONMENT_VARIABLES += "\tQT_BUNDLED_LIBS_PATH=" + bundledLibsDir; + } + if (bundledLibsDir != null) { + ENVIRONMENT_VARIABLES += "\tQT_PLUGIN_PATH=" + bundledLibsDir; + ENVIRONMENT_VARIABLES += "\tQML_PLUGIN_PATH=" + bundledLibsDir; } Bundle loaderParams = new Bundle(); |