2017-01-21 1 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를 사용하고 싶습니다. 왜냐하면 나는 다른 안드로이드 개발 플랫폼 (Qt, C++ Builder)을 사용하고 있기 때문이다. QAndroidJniObject::callStaticMethod 멤버 함수로이 앱을 컴파일하려고하면 Java Code worked! 출력이 나오므로 작동합니다. 하지만 순수 jni 함수 (jni.h 헤더 파일)로이 응용 프로그램을 컴파일하려고하면 Unfortunately app has stopped이 표시되고 콘솔 출력이 표시됩니다. (javac의 컴파일)MyApp/android/src/com/test/AndroidClass.java
AndroidClass.class 디렉토리 :
AndroidClass.java 디렉토리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 용으로 컴파일되었지만 결과는 동일합니다. –

관련 문제