aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/reference/modules/android-sdk-module.qdoc5
-rw-r--r--share/qbs/modules/Android/sdk/sdk.qbs12
-rw-r--r--tests/auto/blackbox/testdata-android/aidl/AndroidManifest.xml12
-rw-r--r--tests/auto/blackbox/testdata-android/aidl/aidl.qbs8
-rw-r--r--tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface1.aidl7
-rw-r--r--tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface2.aidl5
-rw-r--r--tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/MainActivity.java18
-rw-r--r--tests/auto/blackbox/tst_blackboxandroid.cpp10
8 files changed, 74 insertions, 3 deletions
diff --git a/doc/reference/modules/android-sdk-module.qdoc b/doc/reference/modules/android-sdk-module.qdoc
index 98565f8b8..40d80b021 100644
--- a/doc/reference/modules/android-sdk-module.qdoc
+++ b/doc/reference/modules/android-sdk-module.qdoc
@@ -187,3 +187,8 @@
\defaultvalue \l packageName
*/
+
+/*!
+ \qmlproperty stringList Android.sdk::aidlSearchPaths
+ Search paths for import statements to pass to the \c aidl tool via the \c{-I} option.
+*/
diff --git a/share/qbs/modules/Android/sdk/sdk.qbs b/share/qbs/modules/Android/sdk/sdk.qbs
index cb26b2ee0..d5bd29477 100644
--- a/share/qbs/modules/Android/sdk/sdk.qbs
+++ b/share/qbs/modules/Android/sdk/sdk.qbs
@@ -135,6 +135,8 @@ Module {
property path zipalignFilePath: FileInfo.joinPaths(buildToolsDir, "zipalign")
property path androidJarFilePath: FileInfo.joinPaths(sdkDir, "platforms", platform,
"android.jar")
+ property path frameworkAidlFilePath: FileInfo.joinPaths(sdkDir, "platforms", platform,
+ "framework.aidl")
property path generatedJavaFilesBaseDir: FileInfo.joinPaths(product.buildDirectory, "gen")
property path generatedJavaFilesDir: FileInfo.joinPaths(generatedJavaFilesBaseDir,
(packageName || "").split('.').join('/'))
@@ -145,6 +147,7 @@ Module {
".android", "debug.keystore")
property bool useApksigner: buildToolsVersion && Utilities.versionCompare(
buildToolsVersion, "24.0.3") >= 0
+ property stringList aidlSearchPaths
Depends { name: "java" }
java.languageVersion: platformJavaVersion
@@ -216,8 +219,13 @@ Module {
}
prepare: {
- var aidl = ModUtils.moduleProperty(product, "aidlFilePath");
- cmd = new Command(aidl, [input.filePath, output.filePath]);
+ var aidl = product.Android.sdk.aidlFilePath;
+ var args = ["-p" + product.Android.sdk.frameworkAidlFilePath];
+ var aidlSearchPaths = input.Android.sdk.aidlSearchPaths;
+ for (var i = 0; i < (aidlSearchPaths ? aidlSearchPaths.length : 0); ++i)
+ args.push("-I" + aidlSearchPaths[i]);
+ args.push(input.filePath, output.filePath);
+ cmd = new Command(aidl, args);
cmd.description = "Processing " + input.fileName;
return [cmd];
}
diff --git a/tests/auto/blackbox/testdata-android/aidl/AndroidManifest.xml b/tests/auto/blackbox/testdata-android/aidl/AndroidManifest.xml
new file mode 100644
index 000000000..e8a950847
--- /dev/null
+++ b/tests/auto/blackbox/testdata-android/aidl/AndroidManifest.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="io.qbs.aidltest">
+ <application android:label="AidlTest">
+ <activity android:name="MainActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
diff --git a/tests/auto/blackbox/testdata-android/aidl/aidl.qbs b/tests/auto/blackbox/testdata-android/aidl/aidl.qbs
new file mode 100644
index 000000000..6e827099f
--- /dev/null
+++ b/tests/auto/blackbox/testdata-android/aidl/aidl.qbs
@@ -0,0 +1,8 @@
+Application {
+ name: "io.qbs.aidltest"
+ Android.sdk.aidlSearchPaths: path
+ files: [
+ "AndroidManifest.xml",
+ "io/qbs/aidltest/*",
+ ]
+}
diff --git a/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface1.aidl b/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface1.aidl
new file mode 100644
index 000000000..34fb0386c
--- /dev/null
+++ b/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface1.aidl
@@ -0,0 +1,7 @@
+package io.qbs.aidltest;
+
+import io.qbs.aidltest.Interface2;
+
+interface Interface1 {
+ void doSomething(in Interface2 param1, in Bundle param2);
+}
diff --git a/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface2.aidl b/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface2.aidl
new file mode 100644
index 000000000..815d44f23
--- /dev/null
+++ b/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/Interface2.aidl
@@ -0,0 +1,5 @@
+package io.qbs.aidltest;
+
+interface Interface2 {
+ void someFunc(in Bundle params);
+}
diff --git a/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/MainActivity.java b/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/MainActivity.java
new file mode 100644
index 000000000..e38cfa55b
--- /dev/null
+++ b/tests/auto/blackbox/testdata-android/aidl/io/qbs/aidltest/MainActivity.java
@@ -0,0 +1,18 @@
+package io.qbs.aidltest;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.widget.TextView;
+
+public class MainActivity extends Activity
+{
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ TextView label = new TextView(this);
+ label.setText("Hello world!");
+
+ setContentView(label);
+ }
+}
diff --git a/tests/auto/blackbox/tst_blackboxandroid.cpp b/tests/auto/blackbox/tst_blackboxandroid.cpp
index 705bc6b7e..b4c431902 100644
--- a/tests/auto/blackbox/tst_blackboxandroid.cpp
+++ b/tests/auto/blackbox/tst_blackboxandroid.cpp
@@ -197,7 +197,7 @@ void TestBlackboxAndroid::android_data()
const QByteArrayList commonFiles = expandArchs(archs, {
"AndroidManifest.xml", "META-INF/ANDROIDD.RSA", "META-INF/ANDROIDD.SF",
- "META-INF/MANIFEST.MF", "classes.dex", "resources.arsc"
+ "META-INF/MANIFEST.MF", "classes.dex"
});
QTest::addColumn<QString>("projectDir");
@@ -206,6 +206,7 @@ void TestBlackboxAndroid::android_data()
QTest::newRow("teapot")
<< "teapot" << QStringList("TeapotNativeActivity")
<< (QList<QByteArrayList>() << commonFiles + expandArchs(archs, {
+ "resources.arsc",
"assets/Shaders/ShaderPlain.fsh",
"assets/Shaders/VS_ShaderPlain.vsh",
"lib/${ARCH}/gdbserver",
@@ -216,6 +217,7 @@ void TestBlackboxAndroid::android_data()
<< "no-native"
<< QStringList("com.example.android.basicmediadecoder")
<< (QList<QByteArrayList>() << commonFiles + expandArchs(archs, {
+ "resources.arsc",
"res/drawable-hdpi-v4/ic_action_play_disabled.png",
"res/drawable-hdpi-v4/ic_action_play.png",
"res/drawable-hdpi-v4/ic_launcher.png",
@@ -232,24 +234,30 @@ void TestBlackboxAndroid::android_data()
"res/menu/action_menu.xml",
"res/menu-v11/action_menu.xml",
"res/raw/vid_bigbuckbunny.mp4"}));
+ QTest::newRow("aidl") << "aidl" << QStringList("io.qbs.aidltest")
+ << QList<QByteArrayList>{commonFiles};
QTest::newRow("multiple libs")
<< "multiple-libs-per-apk"
<< QStringList("twolibs")
<< (QList<QByteArrayList>() << commonFiles + expandArchs(archs, {
+ "resources.arsc",
"lib/${ARCH}/gdbserver",
"lib/${ARCH}/liblib1.so",
"lib/${ARCH}/liblib2.so",
"lib/${ARCH}/libstlport_shared.so"}));
QByteArrayList expectedFiles1 = (commonFiles
+ expandArchs(QByteArrayList{"mips", "x86"}, {
+ "resources.arsc",
"lib/${ARCH}/gdbserver",
"lib/${ARCH}/libp1lib1.so",
"lib/${ARCH}/libstlport_shared.so"})
+ expandArchs(QByteArrayList{archs}, {
+ "resources.arsc",
"lib/${ARCH}/gdbserver",
"lib/${ARCH}/libp1lib2.so",
"lib/${ARCH}/libstlport_shared.so"})).toSet().toList();
QByteArrayList expectedFiles2 = commonFiles + expandArchs(archs, {
+ "resources.arsc",
"lib/${ARCH}/gdbserver",
"lib/${ARCH}/libp2lib1.so",
"lib/${ARCH}/libp2lib2.so",