Qt 文档在这个主题上非常冗长:
// Java class
package org.qtproject.qt5;
class TestClass
{
static String fromNumber(int x) { ... }
static String[] stringArray(String s1, String s2) { ... }
}
// C++ code
// The signature for the first function is "(I)Ljava/lang/String;"
QAndroidJniObject stringNumber = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/TestClass",
"fromNumber"
"(I)Ljava/lang/String;",
10);
// the signature for the second function is "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;"
QAndroidJniObject string1 = QAndroidJniObject::fromString("String1");
QAndroidJniObject string2 = QAndroidJniObject::fromString("String2");
QAndroidJniObject stringArray = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/TestClass",
"stringArray"
"(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;"
string1.object<jstring>(),
string2.object<jstring>());
所以你的函数的信号应该是"(I;I;)Ljava/lang/String;"
还有这个:
ANDROID_PACKAGE_SOURCE_DIR:此变量可用于指定可以对默认 Android 包模板进行添加和修改的目录。androiddeployqt 工具会将应用程序模板从 Qt 复制到构建目录中,然后它会在此之上复制 ANDROID_PACKAGE_SOURCE_DIR 的内容,覆盖所有现有文件。然后在生成的合并包上运行自动修改部分源文件以反映您的其他设置的更新步骤。例如,如果您想为您的应用程序创建一个自定义 AndroidManifest.xml,则将其直接放入此变量中指定的文件夹中。您还可以在 ANDROID_PACKAGE_SOURCE_DIR/src 中添加自定义 Java 文件。
注意:将自定义版本的构建文件(如 strings.xml、libs.xml、AndroidManifest.xml 等)添加到您的项目时,请确保从位于 $QT/src/ 的包模板中复制它们安卓/Java。您永远不应从构建目录复制任何文件,因为这些文件已被更改以匹配当前构建设置。
因此,您似乎需要指定并自动部署 java 文件。
只需将其添加到您的 .pro 文件中(假设您的 java 源代码位于/path/to/project/myjava/src
:
android {
ANDROID_PACKAGE_SOURCE_DIR=$$_PRO_FILE_PWD_/android
QT += androidextras
}
_PRO_FILE_PWD_
是一个 qmake 变量,将解析到项目目录。