Попробуйте создать Java-класс со стороны C ++, но продолжайте падать
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
{
}
simpleJNI.hpp
#include <QObject>
#include <QtAndroidExtras/QAndroidJniObject>
class simpleJNI : public QObject
{
Q_OBJECT
public:
explicit simpleJNI(QObject *parent = nullptr);
private:
QAndroidJniObject advClass_;
};
simpleJNI.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): общий lib ‘/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): добавлен общий lib /data/data/org.qtproject.example.androidTest/lib/libandroidTest.so 0x4176efd0
#
D / dalvikvm (21397): JNI_OnLoad не найден в /data/data/org.qtproject.example.androidTest/lib/libandroidTest.so 0x4176efd0, пропуская инициализацию
#
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’
2.коды
Вы загружаете правильную активность? вам нужно отредактировать манифест, чтобы он загружал ваши собственные действия. Вам также следует избегать вызова конструктора класса QtActivity самостоятельно (advClass _ («adv / appBucksAdv»)), так как он попытается снова подготовить приложение. Вероятно, вам нужен дескриптор действия, и, поскольку вы уже расширяете класс QtActivity, просто добавьте статическую функцию, которая возвращает дескриптор.
Например.:
Джава:
public class appBucksAdv extends QtActivity
{
...
static appBucksAdv getActivity() { return thisActivity; }
...
}
C ++
QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("adv/appBucksAdv",
"getActivity",
"()Ladv/appBucksAdv;");
Других решений пока нет …