diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java index f3e23b9da18..08fe74ebd6a 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java @@ -104,7 +104,7 @@ public class QtActivityBase extends Activity loader.loadQtLibraries(); m_delegate.startNativeApplication(loader.getApplicationParameters(), - loader.getMainLibrary()); + loader.getMainLibraryPath()); } @Override diff --git a/src/android/jar/src/org/qtproject/qt/android/QtLoader.java b/src/android/jar/src/org/qtproject/qt/android/QtLoader.java index a93dbd76598..14059f4f3f1 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtLoader.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtLoader.java @@ -37,7 +37,8 @@ abstract class QtLoader { protected final ContextWrapper m_context; protected ComponentInfo m_contextInfo; - protected String m_mainLib; + protected String m_mainLibPath; + protected String m_mainLibName; protected String m_applicationParameters = ""; protected HashMap m_environmentVariables = new HashMap<>(); @@ -155,8 +156,19 @@ abstract class QtLoader { * Returns the context's main library absolute path, * or null if the library hasn't been loaded yet. **/ - public String getMainLibrary() { - return m_mainLib; + public String getMainLibraryPath() { + return m_mainLibPath; + } + + /** + * Set the name of the main app library to libName, which is the name of the library, + * not including the path, target architecture or .so suffix. This matches the target name + * of the app target in CMakeLists.txt. + * This method can be used when the name is not provided by androiddeployqt, for example when + * embedding QML views to a native Android app. + **/ + public void setMainLibraryName(String libName) { + m_mainLibName = libName; } /** @@ -396,8 +408,10 @@ abstract class QtLoader { return; } + if (m_mainLibName == null) + m_mainLibName = getMetaData("android.app.lib_name"); // Load main lib - if (!loadMainLibrary(getMetaData("android.app.lib_name") + "_" + m_preferredAbi)) { + if (!loadMainLibrary(m_mainLibName + "_" + m_preferredAbi)) { Log.e(QtTAG, "Loading main library failed"); finish(); } @@ -456,8 +470,8 @@ abstract class QtLoader { String mainLibPath = getLibrariesFullPaths(oneEntryArray).get(0); final boolean[] success = {true}; QtNative.getQtThread().run(() -> { - m_mainLib = loadLibraryHelper(mainLibPath); - if (m_mainLib == null) + m_mainLibPath = loadLibraryHelper(mainLibPath); + if (m_mainLibPath == null) success[0] = false; }); diff --git a/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java b/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java index f0370a2d8a0..b69dea44166 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtServiceBase.java @@ -27,7 +27,7 @@ public class QtServiceBase extends Service { QtServiceLoader loader = new QtServiceLoader(this); loader.loadQtLibraries(); - QtNative.startApplication(loader.getApplicationParameters(), loader.getMainLibrary()); + QtNative.startApplication(loader.getApplicationParameters(), loader.getMainLibraryPath()); QtNative.setApplicationState(QtNative.ApplicationState.ApplicationHidden); }