Fix Qt tests for Android.
Change-Id: I53856056a00684a9a37596a74b79f46d3b47331f Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>bb10
parent
b02b6172a2
commit
448c3e85dd
|
|
@ -4,7 +4,7 @@
|
|||
android:versionCode="1"
|
||||
android:versionName="1.0">
|
||||
<uses-sdk android:minSdkVersion="4" />
|
||||
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="org.qtproject.qt5.android.QtNative">
|
||||
<application android:label="@string/app_name" android:name="org.qtproject.qt5.android.QtNative">
|
||||
<activity android:label="@string/app_name" android:name="org.qtproject.qt5.android.QtActivity">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
|
|
|||
|
|
@ -1,19 +1,21 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources>
|
||||
<array name="qt_libs">
|
||||
<item>QtCore</item>
|
||||
<item>QtGui</item>
|
||||
<item>QtTest</item>
|
||||
<item>QtOpenGL</item>
|
||||
<item>QtNetwork</item>
|
||||
<item>QtScript</item>
|
||||
<item>QtSql</item>
|
||||
<item>QtXml</item>
|
||||
<item>QtScriptTools</item>
|
||||
<item>QtSvg</item>
|
||||
<item>QtXmlPatterns</item>
|
||||
<item>QtDeclarative</item>
|
||||
<item>QtWebKit</item>
|
||||
<item>gnustl_shared</item>
|
||||
<item>Qt5Core</item>
|
||||
<item>Qt5Gui</item>
|
||||
<item>Qt5Widgets</item>
|
||||
<item>Qt5Test</item>
|
||||
<item>Qt5OpenGL</item>
|
||||
<item>Qt5Network</item>
|
||||
<item>Qt5Script</item>
|
||||
<item>Qt5Sql</item>
|
||||
<item>Qt5Xml</item>
|
||||
<item>Qt5ScriptTools</item>
|
||||
<item>Qt5Svg</item>
|
||||
<item>Qt5XmlPatterns</item>
|
||||
<item>Qt5Declarative</item>
|
||||
<item>Qt5WebKit</item>
|
||||
</array>
|
||||
<array name="bundled_libs"/>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
#!/usr/bin/perl -w
|
||||
#############################################################################
|
||||
##
|
||||
## Copyright (C) 2012-2013 BogDan Vatra <bogdan@kde.org>
|
||||
## Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
|
||||
## Copyright (C) 2012 BogDan Vatra <bogdan@kde.org>
|
||||
## Contact: http://www.qt-project.org/legal
|
||||
##
|
||||
## This file is part of the test suite of the Qt Toolkit.
|
||||
|
|
@ -61,7 +61,8 @@ my $help = 0;
|
|||
my $make_clean = 0;
|
||||
my $deploy_qt = 0;
|
||||
my $time_out=400;
|
||||
my $android_sdk_dir = "$ENV{'HOME'}/NecessitasQtSDK/android-sdk";
|
||||
my $android_sdk_dir = "$ENV{'ANDROID_SDK_ROOT'}";
|
||||
my $android_ndk_dir = "$ENV{'ANDROID_NDK_ROOT'}";
|
||||
my $ant_tool = `which ant`;
|
||||
chomp $ant_tool;
|
||||
my $strip_tool="";
|
||||
|
|
@ -74,6 +75,7 @@ GetOptions('h|help' => \$help
|
|||
, 'd|deploy' => \$deploy_qt
|
||||
, 'j|jobs=i' => \$jobs
|
||||
, 'sdk=s' => \$android_sdk_dir
|
||||
, 'ndk=s' => \$android_ndk_dir
|
||||
, 'ant=s' => \$ant_tool
|
||||
, 'strip=s' => \$strip_tool
|
||||
, 'readelf=s' => \$readelf_tool
|
||||
|
|
@ -87,8 +89,8 @@ system("$adb_tool devices") == 0 or die "No device found, please plug/start at l
|
|||
$device_serial = "-s $device_serial" if ($device_serial);
|
||||
$testsubset="/$testsubset" if ($testsubset);
|
||||
|
||||
$strip_tool="$ENV{'HOME'}/NecessitasQtSDK/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-strip" unless($strip_tool);
|
||||
$readelf_tool="$ENV{'HOME'}/NecessitasQtSDK/android-ndk/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf" unless($readelf_tool);
|
||||
$strip_tool="$android_ndk_dir/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-strip" unless($strip_tool);
|
||||
$readelf_tool="$android_ndk_dir/toolchains/arm-linux-androideabi-4.7/prebuilt/linux-x86/bin/arm-linux-androideabi-readelf" unless($readelf_tool);
|
||||
$readelf_tool="$readelf_tool -d -w ";
|
||||
|
||||
sub dir
|
||||
|
|
@ -141,7 +143,7 @@ sub waitForProcess
|
|||
return 0;
|
||||
}
|
||||
|
||||
my $src_dir_qt=abs_path(dirname($0)."/..");
|
||||
my $src_dir_qt=abs_path(dirname($0)."/../../..");
|
||||
my $quadruplor_dir="$src_dir_qt/tests/auto/android";
|
||||
my $qmake_path="$src_dir_qt/bin/qmake";
|
||||
my $tests_dir="$src_dir_qt/tests$testsubset";
|
||||
|
|
@ -232,11 +234,12 @@ if ($deploy_qt)
|
|||
}
|
||||
system("cp -a plugins $temp_dir");
|
||||
system("cp -a imports $temp_dir");
|
||||
system("cp -a qml $temp_dir");
|
||||
pushd($temp_dir);
|
||||
system("find -name *.so | xargs $strip_tool --strip-unneeded");
|
||||
popd;
|
||||
system("$adb_tool $device_serial shell rm -r /data/local/qt"); # remove old qt libs
|
||||
system("$adb_tool $device_serial push $temp_dir /data/local/qt"); # copy newer qt libs
|
||||
system("$adb_tool $device_serial shell rm -r /data/local/tmp/qt"); # remove old qt libs
|
||||
system("$adb_tool $device_serial push $temp_dir /data/local/tmp/qt"); # copy newer qt libs
|
||||
popd;
|
||||
}
|
||||
|
||||
|
|
@ -245,6 +248,7 @@ reinstallQuadruplor;
|
|||
|
||||
########### build qt tests and benchmarks ###########
|
||||
pushd($tests_dir);
|
||||
print "Building $tests_dir \n";
|
||||
system("make distclean") if ($make_clean);
|
||||
system("$qmake_path CONFIG-=QTDIR_build -r") == 0 or die "Can't run qmake\n"; #exec qmake
|
||||
system("make -j$jobs") == 0 or warn "Can't build all tests\n"; #exec make
|
||||
|
|
@ -273,12 +277,12 @@ foreach (split("\n",$testsFiles))
|
|||
{
|
||||
if (needsOpenGl("$temp_dir/libtst_$application.so"))
|
||||
{
|
||||
startTest("/data/local/qt/plugins/platforms/android/libandroidGL-$sdk_api.so", "/data/data/$packageName/app_files/libtst_$application.so", 1
|
||||
startTest("/data/local/tmp/qt/plugins/platforms/android/libqtforandroidGL.so", "/data/data/$packageName/app_files/libtst_$application.so", 1
|
||||
, "$output_name.xml") or warn "Can't run $application ...\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
startTest("/data/local/qt/plugins/platforms/android/libandroid-$sdk_api.so", "/data/data/$packageName/app_files/libtst_$application.so", 0
|
||||
startTest("/data/local/tmp/qt/plugins/platforms/android/libqtforandroid.so", "/data/data/$packageName/app_files/libtst_$application.so", 0
|
||||
, "$output_name.xml") or warn "Can't run $application stopping tests ...\n";
|
||||
}
|
||||
}
|
||||
|
|
@ -329,6 +333,10 @@ Make jobs when building tests.
|
|||
|
||||
Android SDK path.
|
||||
|
||||
=item B<--ndk = ndk_path>
|
||||
|
||||
Android NDK path.
|
||||
|
||||
=item B<--ant = ant_tool_path>
|
||||
|
||||
Ant tool path.
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ public class QtActivity extends Activity {
|
|||
String qtLibs[] = getResources().getStringArray(R.array.qt_libs);
|
||||
ArrayList<String> libraryList = new ArrayList<String>();
|
||||
for (int i = 0; i < qtLibs.length; i++)
|
||||
libraryList.add("/data/local/qt/lib/lib" + qtLibs[i] + ".so");
|
||||
libraryList.add("/data/local/tmp/qt/lib/lib" + qtLibs[i] + ".so");
|
||||
|
||||
String mainLib = null;
|
||||
String nativeLibDir = null;
|
||||
|
|
@ -124,8 +124,9 @@ public class QtActivity extends Activity {
|
|||
}
|
||||
String[] libs = new String[libraryList.size()];
|
||||
libs = libraryList.toArray(libs);
|
||||
loadQtLibs(libs, "QML_IMPORT_PATH=/data/local/qt/imports\tQT_PLUGIN_PATH=/data/local/qt/plugins",
|
||||
"-xml\t-silent\t-o\toutput.xml", mainLib, nativeLibDir);
|
||||
loadQtLibs(libs
|
||||
,"QT_QPA_EGLFS_HIDECURSOR=1\tQML2_IMPORT_PATH=/data/local/tmp/qt/qml\tQML_IMPORT_PATH=/data/local/tmp/qt/imports\tQT_PLUGIN_PATH=/data/local/tmp/qt/plugins"
|
||||
, "-xml\t-silent\t-o\toutput.xml", mainLib, nativeLibDir);
|
||||
} catch (Exception e) {
|
||||
Log.e(QtNative.QtTAG, "Can't create main activity", e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import android.app.Application;
|
|||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.util.Log;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.Menu;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
|
|
@ -294,6 +295,9 @@ public class QtNative extends Application
|
|||
}
|
||||
}
|
||||
|
||||
private static void updateSelection(final int selStart, final int selEnd, final int candidatesStart, final int candidatesEnd)
|
||||
{
|
||||
}
|
||||
|
||||
private static void showSoftwareKeyboard(final int x, final int y
|
||||
, final int width, final int height
|
||||
|
|
@ -327,6 +331,11 @@ public class QtNative extends Application
|
|||
});
|
||||
}
|
||||
|
||||
private static boolean isSoftwareKeyboardVisible()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void setFullScreen(final boolean fullScreen)
|
||||
{
|
||||
runAction(new Runnable() {
|
||||
|
|
@ -338,10 +347,41 @@ public class QtNative extends Application
|
|||
});
|
||||
}
|
||||
|
||||
private static void registerClipboardManager()
|
||||
{
|
||||
}
|
||||
|
||||
private static void setClipboardText(String text)
|
||||
{
|
||||
}
|
||||
|
||||
private static boolean hasClipboardText()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
private static String getClipboardText()
|
||||
{
|
||||
return "Qt";
|
||||
}
|
||||
|
||||
private static void openContextMenu()
|
||||
{
|
||||
}
|
||||
|
||||
private static void closeContextMenu()
|
||||
{
|
||||
}
|
||||
|
||||
private static void resetOptionsMenu()
|
||||
{
|
||||
}
|
||||
|
||||
// screen methods
|
||||
public static native void setDisplayMetrics(int screenWidthPixels,
|
||||
int screenHeightPixels, int desktopWidthPixels,
|
||||
int desktopHeightPixels, double XDpi, double YDpi);
|
||||
public static native void handleOrientationChanged(int newOrientation);
|
||||
// screen methods
|
||||
|
||||
private static void showOptionsMenu()
|
||||
|
|
@ -395,6 +435,7 @@ public class QtNative extends Application
|
|||
public static native void touchBegin(int winId);
|
||||
public static native void touchAdd(int winId, int pointerId, int action, boolean primary, int x, int y, float size, float pressure);
|
||||
public static native void touchEnd(int winId, int action);
|
||||
public static native void longPress(int winId, int x, int y);
|
||||
// pointer methods
|
||||
|
||||
// keyboard methods
|
||||
|
|
@ -413,9 +454,13 @@ public class QtNative extends Application
|
|||
public static native void updateWindow();
|
||||
// window methods
|
||||
|
||||
// options menu methods
|
||||
public static native void createOptionsMenu(Menu menu);
|
||||
public static native boolean prepareOptionsMenu(Menu menu);
|
||||
public static native boolean optionsItemSelected(int groupId, int itemId);
|
||||
// options menu methods
|
||||
// menu methods
|
||||
public static native boolean onPrepareOptionsMenu(Menu menu);
|
||||
public static native boolean onOptionsItemSelected(int itemId, boolean checked);
|
||||
public static native void onOptionsMenuClosed(Menu menu);
|
||||
|
||||
public static native void onCreateContextMenu(ContextMenu menu);
|
||||
public static native boolean onContextItemSelected(int itemId, boolean checked);
|
||||
public static native void onContextMenuClosed(Menu menu);
|
||||
// menu methods
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue