summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java17
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java65
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java14
3 files changed, 51 insertions, 45 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
index 02033859e9..4b87c25787 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -606,11 +606,14 @@ public class QtActivityDelegate
}
QtNative.loadQtLibraries(loaderParams.getStringArrayList(NATIVE_LIBRARIES_KEY));
ArrayList<String> libraries = loaderParams.getStringArrayList(BUNDLED_LIBRARIES_KEY);
- QtNative.loadBundledLibraries(libraries, QtNativeLibrariesDir.nativeLibrariesDir(m_activity));
+ String nativeLibsDir = QtNativeLibrariesDir.nativeLibrariesDir(m_activity);
+ QtNative.loadBundledLibraries(libraries, nativeLibsDir);
m_mainLib = loaderParams.getString(MAIN_LIBRARY_KEY);
// older apps provide the main library as the last bundled library; look for this if the main library isn't provided
- if (null == m_mainLib && libraries.size() > 0)
+ if (null == m_mainLib && libraries.size() > 0) {
m_mainLib = libraries.get(libraries.size() - 1);
+ libraries.remove(libraries.size() - 1);
+ }
if (loaderParams.containsKey(EXTRACT_STYLE_KEY)) {
String path = loaderParams.getString(EXTRACT_STYLE_KEY);
@@ -664,8 +667,8 @@ public class QtActivityDelegate
} catch (Exception e) {
e.printStackTrace();
}
-
- return true;
+ m_mainLib = QtNative.loadMainLibrary(m_mainLib, nativeLibsDir);
+ return m_mainLib != null;
}
public boolean startApplication()
@@ -728,11 +731,7 @@ public class QtActivityDelegate
@Override
public void run() {
try {
- String nativeLibraryDir = QtNativeLibrariesDir.nativeLibrariesDir(m_activity);
- QtNative.startApplication(m_applicationParameters,
- m_environmentVariables,
- m_mainLib,
- nativeLibraryDir);
+ QtNative.startApplication(m_applicationParameters, m_environmentVariables, m_mainLib);
m_started = true;
} catch (Exception e) {
e.printStackTrace();
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
index 5562c010aa..1d2b70ab5f 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -231,6 +231,41 @@ public class QtNative
});
}
+ public static String loadMainLibrary(final String mainLibrary, final String nativeLibraryDir)
+ {
+ final String[] res = new String[1];
+ res[0] = null;
+ m_qtThread.run(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ String mainLibNameTemplate = "lib" + mainLibrary + ".so";
+ File f = new File(nativeLibraryDir + mainLibNameTemplate);
+ if (!f.exists()) {
+ try {
+ ActivityInfo info = m_activity.getPackageManager().getActivityInfo(m_activity.getComponentName(),
+ PackageManager.GET_META_DATA);
+ String systemLibraryDir = QtNativeLibrariesDir.systemLibrariesDir;
+ if (info.metaData.containsKey("android.app.system_libs_prefix"))
+ systemLibraryDir = info.metaData.getString("android.app.system_libs_prefix");
+ f = new File(systemLibraryDir + mainLibNameTemplate);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return;
+ }
+ }
+ if (!f.exists())
+ return;
+ System.load(f.getAbsolutePath());
+ res[0] = f.getAbsolutePath();
+ } catch (Exception e) {
+ Log.e(QtTAG, "Can't load '" + mainLibrary + "'", e);
+ }
+ }
+ });
+ return res[0];
+ }
+
public static void setActivity(Activity qtMainActivity, QtActivityDelegate qtActivityDelegate)
{
synchronized (m_mainActivityMutex) {
@@ -308,46 +343,20 @@ public class QtNative
});
}
- public static boolean startApplication(String params,
- final String environment,
- String mainLibrary,
- String nativeLibraryDir) throws Exception
+ public static boolean startApplication(String params, final String environment, String mainLib) throws Exception
{
- String mainLibNameTemplate = "lib" + mainLibrary + ".so";
- File f = new File(nativeLibraryDir + mainLibNameTemplate);
- if (!f.exists()) {
- try {
- ActivityInfo info = m_activity.getPackageManager().getActivityInfo(m_activity.getComponentName(),
- PackageManager.GET_META_DATA);
- String systemLibraryDir = QtNativeLibrariesDir.systemLibrariesDir;
- if (info.metaData.containsKey("android.app.system_libs_prefix"))
- systemLibraryDir = info.metaData.getString("android.app.system_libs_prefix");
- f = new File(systemLibraryDir + mainLibNameTemplate);
- } catch (Exception e) {
-
- }
- }
- if (!f.exists())
- throw new Exception("Can't find main library '" + mainLibrary + "'");
-
if (params == null)
params = "-platform\tandroid";
- final String mainLibraryPath = f.getAbsolutePath();
final boolean[] res = new boolean[1];
res[0] = false;
synchronized (m_mainActivityMutex) {
if (params.length() > 0 && !params.startsWith("\t"))
params = "\t" + params;
- final String qtParams = f.getAbsolutePath() + params;
+ final String qtParams = mainLib + params;
m_qtThread.run(new Runnable() {
@Override
public void run() {
- try {
- System.load(mainLibraryPath);
- } catch (Exception e) {
- Log.i(QtTAG, "Can't load '" + mainLibraryPath + "'", e);
- }
res[0] = startQtAndroidPlugin(qtParams, environment);
setDisplayMetrics(m_displayMetricsScreenWidthPixels,
m_displayMetricsScreenHeightPixels,
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
index ae06fa6268..33bcb364de 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtServiceDelegate.java
@@ -98,8 +98,8 @@ public class QtServiceDelegate
private static final String APP_DISPLAY_METRIC_SCREEN_YDPI_KEY = "display.screen.dpi.y";
private static final String APP_DISPLAY_METRIC_SCREEN_DENSITY_KEY = "display.screen.density";
+ private String m_mainLib = null;
private Service m_service = null;
- private String m_mainLib;
private static String m_environmentVariables = null;
private static String m_applicationParameters = null;
@@ -142,9 +142,9 @@ public class QtServiceDelegate
}
QtNative.loadQtLibraries(loaderParams.getStringArrayList(NATIVE_LIBRARIES_KEY));
ArrayList<String> libraries = loaderParams.getStringArrayList(BUNDLED_LIBRARIES_KEY);
- QtNative.loadBundledLibraries(libraries, QtNativeLibrariesDir.nativeLibrariesDir(m_service));
+ String nativeLibsDir = QtNativeLibrariesDir.nativeLibrariesDir(m_service);
+ QtNative.loadBundledLibraries(libraries, nativeLibsDir);
m_mainLib = loaderParams.getString(MAIN_LIBRARY_KEY);
-
m_environmentVariables = loaderParams.getString(ENVIRONMENT_VARIABLES_KEY);
String additionalEnvironmentVariables = "QT_ANDROID_FONTS_MONOSPACE=Droid Sans Mono;Droid Sans;Droid Sans Fallback"
+ "\tQT_ANDROID_FONTS_SERIF=Droid Serif"
@@ -165,7 +165,8 @@ public class QtServiceDelegate
else
m_applicationParameters = "";
- return true;
+ m_mainLib = QtNative.loadMainLibrary(m_mainLib, nativeLibsDir);
+ return m_mainLib != null;
}
public boolean startApplication()
@@ -173,10 +174,7 @@ public class QtServiceDelegate
// start application
try {
String nativeLibraryDir = QtNativeLibrariesDir.nativeLibrariesDir(m_service);
- QtNative.startApplication(m_applicationParameters,
- m_environmentVariables,
- m_mainLib,
- nativeLibraryDir);
+ QtNative.startApplication(m_applicationParameters, m_environmentVariables, m_mainLib);
return true;
} catch (Exception e) {
e.printStackTrace();