2017-01-21 6 views
0

Android用Qt 5.7を使用しています。私はAndoridの基本的なアプリをコンパイルしようとしましたが、Unfortunately app has stoppedとアプリが閉じていました。
AndroidClass.java:Android用Qt:Jni - 残念なことに、アプリが停止しました

package com.test; 

public class AndroidClass 
{ 
    public static void work() 
    { 
    System.out.println("Java Code worked!"); 
    } 
} 

android.h:

#ifndef ANDROID_H 
#define ANDROID_H 

#include <QObject> 
#include <QAndroidJniObject> 
#include <QDebug> 
#include <jni.h> 

class Android : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit Android(QObject *parent = 0); 
    Q_INVOKABLE void work() const; 

signals: 

public slots: 
}; 

#endif // ANDROID_H 

android.cpp:

#include "android.h" 

Android::Android(QObject *parent) : QObject(parent) 
{ 
} 

void Android::work() const 
{ 
    /*****************This is work!************************************ 
    QAndroidJniObject::callStaticMethod<void>("com/test/AndroidClass", 
              "work", "()V"); 
    *****************************************************************/ 

    // This part is not working: 

    JNIEnv* env; 

    jclass class_ = env->FindClass("com/test/AndroidClass"); 
    if (!class_) 
    { 
    qDebug() << "Class Not Found!\n"; 
    } 

    jmethodID method_id = env->GetStaticMethodID(class_, "work", "()V"); 
    if (!method_id) 
    { 
    qDebug() << "Method ID Error!\n"; 
    } 

    env->CallStaticVoidMethod(class_, method_id); 
} 

.PROファイルが含ま:

android: { 
    QT += androidextras 
    INCLUDEPATH += /home/username/Android/Sdk/ndk-bundle/platforms/android-19/arch-arm/usr/include/ 
    INCLUDEPATH += /home/username/Android/Sdk/ndk-bundle/platforms/android-19/arch-arm/usr/include/android 
} 

マイコンソール出力:私は知っている

W/System.err(10313): java.lang.ClassNotFoundException: android.graphics.drawable.RippleDrawable 
W/System.err(10313): at java.lang.Class.classForName(Native Method) 
W/System.err(10313): at java.lang.Class.forName(Class.java:251) 
W/System.err(10313): at java.lang.Class.forName(Class.java:216) 
W/System.err(10313): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:395) 
W/System.err(10313): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:98) 
W/System.err(10313): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:512) 
W/System.err(10313): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(10313): at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:237) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:647) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:181) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:269) 
W/System.err(10313): at android.app.Activity.performCreate(Activity.java:5447) 
W/System.err(10313): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
W/System.err(10313): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) 
W/System.err(10313): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
W/System.err(10313): at android.app.ActivityThread.access$800(ActivityThread.java:166) 
W/System.err(10313): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
W/System.err(10313): at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err(10313): at android.os.Looper.loop(Looper.java:136) 
W/System.err(10313): at android.app.ActivityThread.main(ActivityThread.java:5584) 
W/System.err(10313): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(10313): at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err(10313): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
W/System.err(10313): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
W/System.err(10313): at dalvik.system.NativeStart.main(Native Method) 
W/System.err(10313): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/RippleDrawable 
W/System.err(10313): ... 26 more 
W/System.err(10313): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.RippleDrawable" on path: DexPathList[[zip file "/data/app/org.qtproject.example-8.apk"],nativeLibraryDirectories=[/data/app-lib/org.qtproject.example-8, /vendor/lib, /system/lib]] 
W/System.err(10313): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
W/System.err(10313): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
W/System.err(10313): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
W/System.err(10313): ... 26 more 
W/System.err(10313): java.lang.ClassNotFoundException: android.graphics.drawable.AnimatedStateListDrawable 
W/System.err(10313): at java.lang.Class.classForName(Native Method) 
W/System.err(10313): at java.lang.Class.forName(Class.java:251) 
W/System.err(10313): at java.lang.Class.forName(Class.java:216) 
W/System.err(10313): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:395) 
W/System.err(10313): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:99) 
W/System.err(10313): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:512) 
W/System.err(10313): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(10313): at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:237) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:647) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:181) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:269) 
W/System.err(10313): at android.app.Activity.performCreate(Activity.java:5447) 
W/System.err(10313): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
W/System.err(10313): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) 
W/System.err(10313): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
W/System.err(10313): at android.app.ActivityThread.access$800(ActivityThread.java:166) 
W/System.err(10313): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
W/System.err(10313): at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err(10313): at android.os.Looper.loop(Looper.java:136) 
W/System.err(10313): at android.app.ActivityThread.main(ActivityThread.java:5584) 
W/System.err(10313): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(10313): at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err(10313): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
W/System.err(10313): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
W/System.err(10313): at dalvik.system.NativeStart.main(Native Method) 
W/System.err(10313): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/AnimatedStateListDrawable 
W/System.err(10313): ... 26 more 
W/System.err(10313): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.AnimatedStateListDrawable" on path: DexPathList[[zip file "/data/app/org.qtproject.example-8.apk"],nativeLibraryDirectories=[/data/app-lib/org.qtproject.example-8, /vendor/lib, /system/lib]] 
W/System.err(10313): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
W/System.err(10313): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
W/System.err(10313): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
W/System.err(10313): ... 26 more 
W/System.err(10313): java.lang.ClassNotFoundException: android.graphics.drawable.VectorDrawable 
W/System.err(10313): at java.lang.Class.classForName(Native Method) 
W/System.err(10313): at java.lang.Class.forName(Class.java:251) 
W/System.err(10313): at java.lang.Class.forName(Class.java:216) 
W/System.err(10313): at org.qtproject.qt5.android.ExtractStyle.getClass(ExtractStyle.java:395) 
W/System.err(10313): at org.qtproject.qt5.android.ExtractStyle.<init>(ExtractStyle.java:100) 
W/System.err(10313): at org.qtproject.qt5.android.QtActivityDelegate.loadApplication(QtActivityDelegate.java:512) 
W/System.err(10313): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(10313): at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtLoader.loadApplication(QtLoader.java:237) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtLoader.startApp(QtLoader.java:647) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtActivityLoader.onCreate(QtActivityLoader.java:181) 
W/System.err(10313): at org.qtproject.qt5.android.bindings.QtActivity.onCreate(QtActivity.java:269) 
W/System.err(10313): at android.app.Activity.performCreate(Activity.java:5447) 
W/System.err(10313): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
W/System.err(10313): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393) 
W/System.err(10313): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493) 
W/System.err(10313): at android.app.ActivityThread.access$800(ActivityThread.java:166) 
W/System.err(10313): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283) 
W/System.err(10313): at android.os.Handler.dispatchMessage(Handler.java:102) 
W/System.err(10313): at android.os.Looper.loop(Looper.java:136) 
W/System.err(10313): at android.app.ActivityThread.main(ActivityThread.java:5584) 
W/System.err(10313): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(10313): at java.lang.reflect.Method.invoke(Method.java:515) 
W/System.err(10313): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
W/System.err(10313): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
W/System.err(10313): at dalvik.system.NativeStart.main(Native Method) 
W/System.err(10313): Caused by: java.lang.NoClassDefFoundError: android/graphics/drawable/VectorDrawable 
W/System.err(10313): ... 26 more 
W/System.err(10313): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.graphics.drawable.VectorDrawable" on path: DexPathList[[zip file "/data/app/org.qtproject.example-8.apk"],nativeLibraryDirectories=[/data/app-lib/org.qtproject.example-8, /vendor/lib, /system/lib]] 
W/System.err(10313): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
W/System.err(10313): at java.lang.ClassLoader.loadClass(ClassLoader.java:497) 
W/System.err(10313): at java.lang.ClassLoader.loadClass(ClassLoader.java:457) 
W/System.err(10313): ... 26 more 
W/ResourceType(10313): Skipping entry 0x1080892 in package table 0 because it is not complex! 
D/dalvikvm(10313): GC_CONCURRENT freed 7227K, 56% free 6322K/14364K, paused 2ms+4ms, total 38ms 
D/dalvikvm(10313): Trying to load lib /data/app-lib/org.qtproject.example-8/libQtQuick2_Android.so 0x41c0caf0 
D/  (10313): (null):0 ((null)): QML debugging is enabled. Only use this in a safe environment. 
D/dalvikvm(10313): Added shared lib /data/app-lib/org.qtproject.example-8/libQtQuick2_Android.so 0x41c0caf0 
D/dalvikvm(10313): No JNI_OnLoad found in /data/app-lib/org.qtproject.example-8/libQtQuick2_Android.so 0x41c0caf0, skipping init 
D/StatusBarManagerService( 591): semi p:10313,o:t 
D/OpenGLRenderer(10313): Enabling debug mode 0 
D/dalvikvm(10313): GC_CONCURRENT freed 1644K, 65% free 5114K/14364K, paused 2ms+2ms, total 25ms 
I/Timeline(10313): Timeline: Activity_idle id: [email protected] time:54858979 
I/InputDispatcher( 591): Delivering touch to (10313): action: 0x0, toolType: 1 
I/InputDispatcher( 591): Delivering touch to (10313): action: 0x1, toolType: 1 
F/libc (10313): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 10365 (project.example) 
I/DEBUG ( 163): pid: 10313, tid: 10365, name: project.example >>> org.qtproject.example <<< 
I/DEBUG ( 163): [email protected] -k -t -z -d -o /data/log/dumpstate_app_native -m 10313 
D/CrashAnrDetector( 591): pid: 10313, tid: 10365, name: project.example >>> org.qtproject.example <<< 
E/android.os.Debug( 591): [email protected] > dumpstate -k -t -z -d -m 10313 -o /data/log/dumpstate_app_error 


"org.qtproject.example" terminated. 

、QtのためのQtAndroidExtrasモジュールがあります。しかし、私はAndroid用の純粋なJniを使いたいです。私はjniを他のAndroid開発プラットフォーム(Qt、C++ Builder)を使用しているからです。 このアプリケーションをQAndroidJniObject::callStaticMethodメンバ関数でコンパイルしようとすると、Java Code worked!という出力が出るので、動作します。しかし、純粋なjni関数(jni.hヘッダーファイル)でこのアプリケーションをコンパイルしようとすると、Unfortunately app has stoppedが表示され、コンソール出力が表示されます。
AndroidClass.javaディレクトリ:(あるJavacしてコンパイル)MyApp/android/src/com/test/AndroidClass.java
AndroidClass.classディレクトリ:build-MyApp-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_0-Debug/com/test/AndroidClass.classと私は純粋なJNIでこのアプリを動作することができますどのようにbuild-MyApp-Android_for_armeabi_v7a_GCC_4_9_Qt_5_7_0-Debug/android-build/src/com/test/AndroidClass.class
で同じファイルがありますか?ありがとう。

答えて

0

アプリケーションがクラスandroid.graphics.drawable.RippleDrawableを見つけることができません。このクラスはAPIレベル21で追加されました。Androidの古いバージョンで動作している可能性があります。

RippleDrawable

+0

Android 4.4.4を試してみました。私はAPI 19のためにコンパイルしましたが、結果は同じです。 –

関連する問題