gpt4 book ai didi

java - 无法通过 QAndroidJniObject 创建 java 类

转载 作者:行者123 更新时间:2023-11-28 03:00:57 26 4
gpt4 key购买 nike

尝试从 C++ 端创建一个 java 类,但总是崩溃

appBucksAdv.java

package adv;

import org.qtproject.qt5.android.bindings.QtApplication;
import org.qtproject.qt5.android.bindings.QtActivity;

import android.os.Bundle;

public class appBucksAdv extends QtActivity
{
}

简单JNI.hpp

#include <QObject>
#include <QtAndroidExtras/QAndroidJniObject>

class simpleJNI : public QObject
{
Q_OBJECT
public:
explicit simpleJNI(QObject *parent = nullptr);

private:
QAndroidJniObject advClass_;

};

简单JNI.cpp

#include "simpleJNI.hpp"

simpleJNI::simpleJNI(QObject *parent) :
QObject(parent),
advClass_("adv/appBucksAdv") //crash when I create the java class
{
}

错误信息:#W/dalvikvm(21397): dvmFindClassByName 拒绝 'org/qtproject/qt5/android/QtMessageDialogHelper'

#D/dalvikvm(21397): 尝试加载 lib/data/data/org.qtproject.example.androidTest/lib/libQt5QuickParticles.so 0x4176efd0

#D/dalvikvm(21397): 共享库 '/data/data/org.qtproject.example.androidTest/lib/libQt5QuickParticles.so' 已经加载到同一个 CL 0x4176efd0

#D/dalvikvm(21397): 尝试加载 lib/data/data/org.qtproject.example.androidTest/lib/libandroidTest.so 0x4176efd0

#D/dalvikvm(21397): 添加了共享库/data/data/org.qtproject.example.androidTest/lib/libandroidTest.so 0x4176efd0

#D/dalvikvm(21397): 在/data/data/org.qtproject.example.androidTest/lib/libandroidTest.so 0x4176efd0 中找不到 JNI_OnLoad,跳过 init

#W/Qt (21397): kernel/qcoreapplication.cpp:416 (QCoreApplicationPrivate::QCoreApplicationPrivate(int&, char**, uint)): 警告:QApplication 未在 main() 线程中创建。

#W/dalvikvm(21397): dvmFindClassByName 拒绝'org/qtproject/qt5/android/QtNativeInputConnection'

#W/dalvikvm(21397): dvmFindClassByName 拒绝 'org/qtproject/qt5/android/QtExtractedText'

1. full messages

2。 codes

最佳答案

您是否正在加载正确的 Activity ?您需要编辑 list 以使其加载您的自定义 Activity 。您还应该避免自己调用 QtActivity 类的构造函数 (advClass_("adv/appBucksAdv")),因为它会尝试再次准备应用程序。您可能需要的是 Activity 的句柄,并且由于您已经扩展了 QtActivity 类,只需添加一个返回句柄的静态函数即可。

例如:

Java:

public class appBucksAdv extends QtActivity
{
...
static appBucksAdv getActivity() { return thisActivity; }
...
}

C++

QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("adv/appBucksAdv",
"getActivity",
"()Ladv/appBucksAdv;");

关于java - 无法通过 QAndroidJniObject 创建 java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20864758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com