summaryrefslogtreecommitdiffstats
path: root/src/android
diff options
context:
space:
mode:
authorSergio Ahumada <sergio.ahumada@digia.com>2013-04-10 15:41:47 +0200
committerSergio Ahumada <sergio.ahumada@digia.com>2013-04-10 15:42:22 +0200
commit90297a64f203959f90041887ea31f4bd04bc059a (patch)
tree86f8ad6a5af26fd618cdb2e20601e6df89ac94d6 /src/android
parent537a4bc4011d32de193dc31caf09a44c1810ab33 (diff)
parentf273d6fbc02055ff3999adc0df76360ca0670435 (diff)
Merge branch 'stable' into dev
Diffstat (limited to 'src/android')
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java124
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtNative.java14
-rw-r--r--src/android/jar/src/org/qtproject/qt5/android/QtSurface.java5
-rw-r--r--src/android/java/AndroidManifest.xml2
-rw-r--r--src/android/java/res/values/libs.xml7
-rw-r--r--src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl11
-rw-r--r--src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl6
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java74
-rw-r--r--src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java2
-rw-r--r--src/android/java/version.xml2
10 files changed, 187 insertions, 60 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 b6e6e3397e..dedfc9d417 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
@@ -43,6 +43,7 @@
package org.qtproject.qt5.android;
import java.io.File;
+import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -368,6 +369,11 @@ public class QtActivityDelegate
return true;
}
+ public void debugLog(String msg)
+ {
+ Log.i(QtNative.QtTAG, "DEBUGGER: " + msg);
+ }
+
public boolean startApplication()
{
// start application
@@ -414,25 +420,111 @@ public class QtActivityDelegate
&&*/ extras != null
&& extras.containsKey("debug_ping")
&& extras.getString("debug_ping").equals("true")) {
- String packagePath =
- m_activity.getPackageManager().getApplicationInfo(m_activity.getPackageName(),
- PackageManager.GET_CONFIGURATIONS).dataDir + "/";
- String debugPing = packagePath + "debug_ping";
- int i = 0;
- while (true) {
- ++i;
- Log.i(QtNative.QtTAG, "DEBUGGER: WAITING FOR PING AT " + debugPing + ", ATTEMPT " + i);
- File file = new File(debugPing);
- if (file.exists()) {
- file.delete();
- break;
+ try {
+ debugLog("extra parameters: " + extras);
+ String packageName = m_activity.getPackageName();
+ String pingFile = extras.getString("ping_file");
+ String pongFile = extras.getString("pong_file");
+ String gdbserverSocket = extras.getString("gdbserver_socket");
+ String gdbserverCommand = extras.getString("gdbserver_command");
+ boolean usePing = pingFile != null;
+ boolean usePong = pongFile != null;
+ boolean useSocket = gdbserverSocket != null;
+ int napTime = 200; // milliseconds between file accesses
+ int timeOut = 30000; // ms until we give up on ping and pong
+ int maxAttempts = timeOut / napTime;
+
+ if (usePing) {
+ debugLog("removing ping file " + pingFile);
+ File ping = new File(pingFile);
+ if (ping.exists()) {
+ if (!ping.delete())
+ debugLog("ping file cannot be deleted");
}
- Thread.sleep(1000);
}
- Log.i(QtNative.QtTAG, "DEBUGGER: GOT PING " + debugPing);
- }
+ if (usePong) {
+ debugLog("removing pong file " + pongFile);
+ File pong = new File(pongFile);
+ if (pong.exists()) {
+ if (!pong.delete())
+ debugLog("pong file cannot be deleted");
+ }
+ }
+
+ debugLog("starting " + gdbserverCommand);
+ m_debuggerProcess = Runtime.getRuntime().exec(gdbserverCommand);
+ debugLog("gdbserver started");
+
+ if (useSocket) {
+ int i;
+ for (i = 0; i < maxAttempts; ++i) {
+ debugLog("waiting for socket at " + gdbserverSocket + ", attempt " + i);
+ File file = new File(gdbserverSocket);
+ if (file.exists()) {
+ file.setReadable(true, false);
+ file.setWritable(true, false);
+ file.setExecutable(true, false);
+ break;
+ }
+ Thread.sleep(napTime);
+ }
+
+ if (i == maxAttempts) {
+ debugLog("time out when waiting for socket");
+ return false;
+ }
+
+ debugLog("socket ok");
+ } else {
+ debugLog("socket not used");
+ }
+
+ if (usePing) {
+ // Tell we are ready.
+ debugLog("writing ping at " + pingFile);
+ FileWriter writer = new FileWriter(pingFile);
+ writer.write("" + android.os.Process.myPid());
+ writer.close();
+ File file = new File(pingFile);
+ file.setReadable(true, false);
+ file.setWritable(true, false);
+ file.setExecutable(true, false);
+ debugLog("wrote ping");
+ } else {
+ debugLog("ping not requested");
+ }
+
+ // Wait until other side is ready.
+ if (usePong) {
+ int i;
+ for (i = 0; i < maxAttempts; ++i) {
+ debugLog("waiting for pong at " + pongFile + ", attempt " + i);
+ File file = new File(pongFile);
+ if (file.exists()) {
+ file.delete();
+ break;
+ }
+ debugLog("go to sleep");
+ Thread.sleep(napTime);
+ }
+
+ if (i == maxAttempts) {
+ debugLog("time out when waiting for pong file");
+ return false;
+ }
+ debugLog("got pong " + pongFile);
+ } else {
+ debugLog("pong not requested");
+ }
+
+ } catch (IOException ioe) {
+ Log.e(QtNative.QtTAG,"Can't start debugger" + ioe.getMessage());
+ } catch (SecurityException se) {
+ Log.e(QtNative.QtTAG,"Can't start debugger" + se.getMessage());
+ }
+ }
if (/*(ai.flags&ApplicationInfo.FLAG_DEBUGGABLE) != 0
&&*/ extras != null
@@ -476,7 +568,7 @@ public class QtActivityDelegate
m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels,
metrics.widthPixels, metrics.heightPixels,
- metrics.xdpi, metrics.ydpi);
+ metrics.xdpi, metrics.ydpi, metrics.scaledDensity);
}
m_layout = new QtLayout(m_activity);
m_surface = new QtSurface(m_activity, 0);
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 7cb3fdff45..4586ae2002 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
@@ -72,6 +72,7 @@ public class QtNative
private static int m_displayMetricsDesktopHeightPixels = 0;
private static double m_displayMetricsXDpi = .0;
private static double m_displayMetricsYDpi = .0;
+ private static double m_displayMetricsScaledDensity = 1.0;
private static int m_oldx, m_oldy;
private static final int m_moveThreshold = 0;
private static ClipboardManager m_clipboardManager = null;
@@ -195,7 +196,8 @@ public class QtNative
m_displayMetricsDesktopWidthPixels,
m_displayMetricsDesktopHeightPixels,
m_displayMetricsXDpi,
- m_displayMetricsYDpi);
+ m_displayMetricsYDpi,
+ m_displayMetricsScaledDensity);
if (params.length() > 0)
params = "\t" + params;
startQtApplication(f.getAbsolutePath() + "\t" + params, environment);
@@ -209,7 +211,8 @@ public class QtNative
int desktopWidthPixels,
int desktopHeightPixels,
double XDpi,
- double YDpi)
+ double YDpi,
+ double scaledDensity)
{
/* Fix buggy dpi report */
if (XDpi < android.util.DisplayMetrics.DENSITY_LOW)
@@ -224,7 +227,8 @@ public class QtNative
desktopWidthPixels,
desktopHeightPixels,
XDpi,
- YDpi);
+ YDpi,
+ scaledDensity);
} else {
m_displayMetricsScreenWidthPixels = screenWidthPixels;
m_displayMetricsScreenHeightPixels = screenHeightPixels;
@@ -232,6 +236,7 @@ public class QtNative
m_displayMetricsDesktopHeightPixels = desktopHeightPixels;
m_displayMetricsXDpi = XDpi;
m_displayMetricsYDpi = YDpi;
+ m_displayMetricsScaledDensity = scaledDensity;
}
}
}
@@ -535,7 +540,8 @@ public class QtNative
int desktopWidthPixels,
int desktopHeightPixels,
double XDpi,
- double YDpi);
+ double YDpi,
+ double scaledDensity);
public static native void handleOrientationChanged(int newOrientation);
// screen methods
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
index 77126ec1c8..b994a43ac4 100644
--- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
+++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java
@@ -103,7 +103,7 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
DisplayMetrics metrics = new DisplayMetrics();
((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics);
QtNative.setApplicationDisplayMetrics(metrics.widthPixels,
- metrics.heightPixels, getWidth(), getHeight(), metrics.xdpi, metrics.ydpi);
+ metrics.heightPixels, getWidth(), getHeight(), metrics.xdpi, metrics.ydpi, metrics.scaledDensity);
if (m_usesGL)
holder.setFormat(PixelFormat.RGBA_8888);
@@ -136,7 +136,8 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback
width,
height,
metrics.xdpi,
- metrics.ydpi);
+ metrics.ydpi,
+ metrics.scaledDensity);
if (!m_started)
return;
diff --git a/src/android/java/AndroidManifest.xml b/src/android/java/AndroidManifest.xml
index 1161b15e8d..6a407dcb6e 100644
--- a/src/android/java/AndroidManifest.xml
+++ b/src/android/java/AndroidManifest.xml
@@ -6,6 +6,8 @@
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
+ <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
+ <meta-data android:name="android.app.repository" android:value="@string/repository"/>
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
<meta-data android:name="android.app.lib_name" android:value=""/>
diff --git a/src/android/java/res/values/libs.xml b/src/android/java/res/values/libs.xml
index 92ce09b7c0..f47174e3d3 100644
--- a/src/android/java/res/values/libs.xml
+++ b/src/android/java/res/values/libs.xml
@@ -1,8 +1,11 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
+ <array name="qt_sources">
+ <item>https://files.kde.org/necessitas/ministro/android/necessitas/qt5/latest</item>
+ </array>
+ <string name="repository">default</string>
<array name="qt_libs">
- <item>QtCore</item>
- <item>QtGui</item>
+ <item>Qt5Core</item>
</array>
<array name="bundled_libs"/>
</resources>
diff --git a/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl b/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl
index 1c33a77fdb..236a62f63e 100644
--- a/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl
+++ b/src/android/java/src/org/kde/necessitas/ministro/IMinistro.aidl
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ Copyright (c) 2011-2013, BogDan Vatra <bogdan@kde.org>
Contact: http://www.qt-project.org/legal
Redistribution and use in source and binary forms, with or without
@@ -24,6 +24,7 @@
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+
package org.kde.necessitas.ministro;
import org.kde.necessitas.ministro.IMinistroCallback;
@@ -37,13 +38,13 @@ interface IMinistro
* param parameters
* parameters fields:
* * Key Name Key type Explanations
+* "sources" StringArray Sources list from where Ministro will download the libs. Make sure you are using ONLY secure locations.
+* "repository" String Overwrites the default Ministro repository. Possible values: default, stable, testing and unstable
* "required.modules" StringArray Required modules by your application
* "application.title" String Application name, used to show more informations to user
* "qt.provider" String Qt libs provider, currently only "necessitas" is supported.
-* "minimum.ministro.api" Integer Minimum Ministro API level, used to check if Ministro service compatible with your application. Current API Level is 1 !
-* "minimum.qt.version" Integer Minimim Qt version (e.g. 0x040800, which means Qt 4.8.0, check http://doc.trolltech.com/4.8/qtglobal.html#QT_VERSION)!
-* "3rd.party.repositories" StringArray 3rd party repositories, which should be downloaded by ministro, needs minimum.ministro.api >= 2
-* Check http://community.kde.org/Necessitas/Ministro for more details.
+* "minimum.ministro.api" Integer Minimum Ministro API level, used to check if Ministro service compatible with your application. Current API Level is 3 !
+* "minimum.qt.version" Integer Minimim Qt version (e.g. 0x040800, which means Qt 4.8.0, check http://qt-project.org/doc/qt-4.8/qtglobal.html#QT_VERSION)!
*/
void requestLoader(in IMinistroCallback callback, in Bundle parameters);
}
diff --git a/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl b/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl
index eec270aec1..0bcb5285b8 100644
--- a/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl
+++ b/src/android/java/src/org/kde/necessitas/ministro/IMinistroCallback.aidl
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ Copyright (c) 2011-2013, BogDan Vatra <bogdan@kde.org>
Contact: http://www.qt-project.org/legal
Redistribution and use in source and binary forms, with or without
@@ -45,8 +45,10 @@ oneway interface IMinistroCallback {
* - 1 incompatible Ministro version. Ministro needs to be upgraded.
* - 2 not all modules could be satisfy.
* - 3 invalid parameters
+* - 4 invalid qt version
+* - 5 download canceled
*
-* This parameter will contain additional fields which are used by the loader to start your application, so it must be passed to loader.
+* The parameter contains additional fields which are used by the loader to start your application, so it must be passed to the loader.
*/
void loaderReady(in Bundle loaderParams);
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
index 4b01d29143..dfb638fbb0 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ Copyright (c) 2012-2013, BogDan Vatra <bogdan@kde.org>
Contact: http://www.qt-project.org/legal
Redistribution and use in source and binary forms, with or without
@@ -76,9 +76,8 @@ import android.view.ActionMode.Callback;
public class QtActivity extends Activity
{
private final static int MINISTRO_INSTALL_REQUEST_CODE = 0xf3ee; // request code used to know when Ministro instalation is finished
- private static final int MINISTRO_API_LEVEL = 2; // Ministro api level (check IMinistro.aidl file)
+ private static final int MINISTRO_API_LEVEL = 3; // Ministro api level (check IMinistro.aidl file)
private static final int NECESSITAS_API_LEVEL = 2; // Necessitas api level used by platform plugin
- private static final String QT_PROVIDER = "necessitas";
private static final int QT_VERSION = 0x050100; // This app requires at least Qt version 5.1.0
private static final String ERROR_CODE_KEY = "error.code";
@@ -97,30 +96,44 @@ public class QtActivity extends Activity
/// Ministro server parameter keys
private static final String REQUIRED_MODULES_KEY = "required.modules";
private static final String APPLICATION_TITLE_KEY = "application.title";
- private static final String QT_PROVIDER_KEY = "qt.provider";
private static final String MINIMUM_MINISTRO_API_KEY = "minimum.ministro.api";
private static final String MINIMUM_QT_VERSION_KEY = "minimum.qt.version";
-// private static final String REPOSITORIES="3rd.party.repositories"; // needs MINISTRO_API_LEVEL >=2 !!!
- // Use this key to specify any 3rd party repositories urls
- // Ministro will download these repositories into thier
+ private static final String SOURCES_KEY = "sources"; // needs MINISTRO_API_LEVEL >=3 !!!
+ // Use this key to specify any 3rd party sources urls
+ // Ministro will download these repositories into their
// own folders, check http://community.kde.org/Necessitas/Ministro
// for more details.
+ private static final String REPOSITORY_KEY = "repository"; // use this key to overwrite the default ministro repsitory
+
private static final String APPLICATION_PARAMETERS = null; // use this variable to pass any parameters to your application,
// the parameters must not contain any white spaces
// and must be separated with "\t"
// e.g "-param1\t-param2=value2\t-param3\tvalue3"
- private static final String ENVIRONMENT_VARIABLES = "QT_USE_ANDROID_NATIVE_STYLE=1\t";
+ private static final String ENVIRONMENT_VARIABLES = "QT_USE_ANDROID_NATIVE_STYLE=0\t";
// use this variable to add any environment variables to your application.
// the env vars must be separated with "\t"
// e.g. "ENV_VAR1=1\tENV_VAR2=2\t"
// Currently the following vars are used by the android plugin:
- // * QT_USE_ANDROID_NATIVE_STYLE - 0 if you don't want to use android style plugin, it will save a few ms at startup.
+ // * QT_USE_ANDROID_NATIVE_STYLE - 1 to use the android widget style if available,
+ // note that the android style plugin in Qt 5.1 is not fully functional.
private static final int INCOMPATIBLE_MINISTRO_VERSION = 1; // Incompatible Ministro version. Ministro needs to be upgraded.
private ActivityInfo m_activityInfo = null; // activity info object, used to access the libs and the strings
private DexClassLoader m_classLoader = null; // loader object
+ private String[] m_sources = {"https://files.kde.org/necessitas/ministro/android/necessitas/qt5/latest"}; // Make sure you are using ONLY secure locations
+ private String m_repository = "default"; // Overwrites the default Ministro repository
+ // Possible values:
+ // * default - Ministro default repository set with "Ministro configuration tool".
+ // By default the stable version is used. Only this or stable repositories should
+ // be used in production.
+ // * stable - stable repository, only this and default repositories should be used
+ // in production.
+ // * testing - testing repository, DO NOT use this repository in production,
+ // this repository is used to push a new release, and should be used to test your application.
+ // * unstable - unstable repository, DO NOT use this repository in production,
+ // this repository is used to push Qt snapshots.
private String[] m_qtLibs = null; // required qt libs
// this function is used to load and start the loader
@@ -190,7 +203,7 @@ public class QtActivity extends Activity
} catch (Exception e) {
e.printStackTrace();
AlertDialog errorDialog = new AlertDialog.Builder(QtActivity.this).create();
- if (m_activityInfo != null && m_activityInfo.metaData.containsKey("android.app.fatal_error_msg"))
+ if (m_activityInfo.metaData.containsKey("android.app.fatal_error_msg"))
errorDialog.setMessage(m_activityInfo.metaData.getString("android.app.fatal_error_msg"));
else
errorDialog.setMessage("Fatal error, your application can't be started.");
@@ -217,12 +230,12 @@ public class QtActivity extends Activity
parameters.putStringArray(REQUIRED_MODULES_KEY, m_qtLibs);
parameters.putString(APPLICATION_TITLE_KEY, (String)QtActivity.this.getTitle());
parameters.putInt(MINIMUM_MINISTRO_API_KEY, MINISTRO_API_LEVEL);
- parameters.putString(QT_PROVIDER_KEY, QT_PROVIDER);
parameters.putInt(MINIMUM_QT_VERSION_KEY, QT_VERSION);
parameters.putString(ENVIRONMENT_VARIABLES_KEY, ENVIRONMENT_VARIABLES);
if (null!=APPLICATION_PARAMETERS)
parameters.putString(APPLICATION_PARAMETERS_KEY, APPLICATION_PARAMETERS);
- // parameters.putStringArray(REPOSITORIES, null);
+ parameters.putStringArray(SOURCES_KEY, m_sources);
+ parameters.putString(REPOSITORY_KEY, m_repository);
m_service.requestLoader(m_ministroCallback, parameters);
}
} catch (RemoteException e) {
@@ -281,7 +294,7 @@ public class QtActivity extends Activity
{
AlertDialog errorDialog = new AlertDialog.Builder(QtActivity.this).create();
- if (m_activityInfo != null && m_activityInfo.metaData.containsKey("android.app.ministro_not_found_msg"))
+ if (m_activityInfo.metaData.containsKey("android.app.ministro_not_found_msg"))
errorDialog.setMessage(m_activityInfo.metaData.getString("android.app.ministro_not_found_msg"));
else
errorDialog.setMessage("Can't find Ministro service.\nThe application can't start.");
@@ -298,27 +311,34 @@ public class QtActivity extends Activity
private void startApp(final boolean firstStart)
{
try {
- ActivityInfo ai=getPackageManager().getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
- if (ai.metaData.containsKey("android.app.qt_libs_resource_id")) {
- int resourceId = ai.metaData.getInt("android.app.qt_libs_resource_id");
+ if (m_activityInfo.metaData.containsKey("android.app.qt_sources_resource_id")) {
+ int resourceId = m_activityInfo.metaData.getInt("android.app.qt_sources_resource_id");
+ m_sources = getResources().getStringArray(resourceId);
+ }
+
+ if (m_activityInfo.metaData.containsKey("android.app.repository"))
+ m_repository = m_activityInfo.metaData.getString("android.app.repository");
+
+ if (m_activityInfo.metaData.containsKey("android.app.qt_libs_resource_id")) {
+ int resourceId = m_activityInfo.metaData.getInt("android.app.qt_libs_resource_id");
m_qtLibs = getResources().getStringArray(resourceId);
}
- if (ai.metaData.containsKey("android.app.use_local_qt_libs")
- && ai.metaData.getInt("android.app.use_local_qt_libs") == 1) {
+ if (m_activityInfo.metaData.containsKey("android.app.use_local_qt_libs")
+ && m_activityInfo.metaData.getInt("android.app.use_local_qt_libs") == 1) {
ArrayList<String> libraryList = new ArrayList<String>();
String localPrefix = "/data/local/tmp/qt/";
- if (ai.metaData.containsKey("android.app.libs_prefix"))
- localPrefix = ai.metaData.getString("android.app.libs_prefix");
+ if (m_activityInfo.metaData.containsKey("android.app.libs_prefix"))
+ localPrefix = m_activityInfo.metaData.getString("android.app.libs_prefix");
if (m_qtLibs != null) {
for (int i=0;i<m_qtLibs.length;i++)
libraryList.add(localPrefix+"lib/lib"+m_qtLibs[i]+".so");
}
- if (ai.metaData.containsKey("android.app.load_local_libs")) {
- String[] extraLibs = ai.metaData.getString("android.app.load_local_libs").split(":");
+ if (m_activityInfo.metaData.containsKey("android.app.load_local_libs")) {
+ String[] extraLibs = m_activityInfo.metaData.getString("android.app.load_local_libs").split(":");
for (String lib : extraLibs) {
if (lib.length() > 0)
libraryList.add(localPrefix + lib);
@@ -327,8 +347,8 @@ public class QtActivity extends Activity
String dexPaths = new String();
String pathSeparator = System.getProperty("path.separator", ":");
- if (ai.metaData.containsKey("android.app.load_local_jars")) {
- String[] jarFiles = ai.metaData.getString("android.app.load_local_jars").split(":");
+ if (m_activityInfo.metaData.containsKey("android.app.load_local_jars")) {
+ String[] jarFiles = m_activityInfo.metaData.getString("android.app.load_local_jars").split(":");
for (String jar:jarFiles) {
if (jar.length() > 0) {
if (dexPaths.length() > 0)
@@ -342,9 +362,9 @@ public class QtActivity extends Activity
loaderParams.putInt(ERROR_CODE_KEY, 0);
loaderParams.putString(DEX_PATH_KEY, dexPaths);
loaderParams.putString(LOADER_CLASS_NAME_KEY, "org.qtproject.qt5.android.QtActivityDelegate");
- if (ai.metaData.containsKey("android.app.static_init_classes")) {
+ if (m_activityInfo.metaData.containsKey("android.app.static_init_classes")) {
loaderParams.putStringArray(STATIC_INIT_CLASSES_KEY,
- ai.metaData.getString("android.app.static_init_classes").split(":"));
+ m_activityInfo.metaData.getString("android.app.static_init_classes").split(":"));
}
loaderParams.putStringArrayList(NATIVE_LIBRARIES_KEY, libraryList);
loaderParams.putString(ENVIRONMENT_VARIABLES_KEY, ENVIRONMENT_VARIABLES
@@ -365,7 +385,7 @@ public class QtActivity extends Activity
} catch (Exception e) {
if (firstStart) {
String msg = "This application requires Ministro service. Would you like to install it?";
- if (m_activityInfo != null && m_activityInfo.metaData.containsKey("android.app.ministro_needed_msg"))
+ if (m_activityInfo.metaData.containsKey("android.app.ministro_needed_msg"))
msg = m_activityInfo.metaData.getString("android.app.ministro_needed_msg");
downloadUpgradeMinistro(msg);
} else {
diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java
index a23c3afb4d..4de1c833f5 100644
--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java
+++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtApplication.java
@@ -1,5 +1,5 @@
/*
- Copyright (c) 2012, BogDan Vatra <bogdan@kde.org>
+ Copyright (c) 2012-2013, BogDan Vatra <bogdan@kde.org>
Contact: http://www.qt-project.org/legal
Redistribution and use in source and binary forms, with or without
diff --git a/src/android/java/version.xml b/src/android/java/version.xml
index 1cd8eb31fe..e709357ba6 100644
--- a/src/android/java/version.xml
+++ b/src/android/java/version.xml
@@ -1,4 +1,4 @@
-<version value="3">
+<version value="5">
<ignore>
<file>AndroidManifest.xml</file>
<file>libs.xml</file>