java.lang.NoClassDefFoundError: Не удалось разрешить: Lcom/samsung/android/sdk/look/SlookImpl;

Я пытаюсь реализовать функцию SLook в Samsung SDK. Устройство, используемое для тестирования, — Samsung Galaxy Prime 4G. Несмотря на тост об ошибке, журнал показывает строку ошибки внутри блока Try, при запуске приложения происходит сбой.

JAR, который я использую,

-: sdk-v1.0.0.jar
-: look_v1.3.1.jar

Код Java, инициализирующий Slook, выдает ошибку на тестовом устройстве.

Slook slook = new Slook();
LinearLayout l = (LinearLayout) findViewById(R.id.information);
try {
    slook.initialize(this);
} catch (SsdkUnsupportedException e) {
    //l.addView(createTextView(e.toString()));
    Toast.makeText(ICD.this, e.toString(), Toast.LENGTH_LONG).show();
    return;
}

Полная трассировка стека ошибок

 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.a1technology.android, PID: 25097
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/samsung/android/sdk/look/SlookImpl;
        at com.samsung.android.sdk.look.Slook.isSupportedDevice(Slook.java:160)
        at com.samsung.android.sdk.look.Slook.initialize(Slook.java:137)
        at com.a1technology.android.ICD.onCreate(ICD.java:60)
        at android.app.Activity.performCreate(Activity.java:6178)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769)
        at android.app.ActivityThread.access$900(ActivityThread.java:177)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5910)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.samsung.android.sdk.look.SlookImpl" on path: DexPathList[[zip file "/data/app/com.a1technology.android-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
        at com.samsung.android.sdk.look.Slook.isSupportedDevice(Slook.java:160) 
        at com.samsung.android.sdk.look.Slook.initialize(Slook.java:137) 
        at com.a1technology.android.ICD.onCreate(ICD.java:60) 
        at android.app.Activity.performCreate(Activity.java:6178) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2648) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2769) 
        at android.app.ActivityThread.access$900(ActivityThread.java:177) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1430) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5910) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
        Suppressed: java.lang.ClassNotFoundException: com.samsung.android.sdk.look.SlookImpl
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                ... 17 more
     Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Сборка приложения Gradle:

apply plugin: 'com.android.application'
android {
    compileSdkVersion 21
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.a1technology.android"
        minSdkVersion 4
        targetSdkVersion 4
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile files('libs/look_v1.3.1.jar')
    compile files('libs/sdk-v1.0.0.jar')
}

person Akash kumar    schedule 21.07.2016    source источник
comment
Вам нужно включить оба JAR в свой APK. Отредактируйте свой вопрос и опубликуйте app/build.gradle.   -  person Robert    schedule 21.07.2016
comment
@Robert - это то, что связано с тестированием устройства, какое устройство Samsung мне следует использовать для Look Spen, пожалуйста, предложите   -  person Akash kumar    schedule 21.07.2016


Ответы (1)


У меня была такая же проблема, и я исправил ее, как показано ниже:

try { 
    Slook slook = new Slook();           
    slook.initialize(getApplicationContext());
    edgeWidgetSupport = true;   
} catch (SsdkUnsupportedException | NoClassDefFoundError e) {
    edgeWidgetSupport = false;
}

перед каждым вызовом методов Slook я проверяю этот флаг (edgeWidgetSupport).

person Rahul Sharma    schedule 10.08.2016
comment
Спасибо за ваш ответ, но код работает на реальном устройстве, в моем случае Samsung Galaxy Note 4. Вы также можете использовать тестовую лабораторию, чтобы проверить вспомогательную функцию. - person Akash kumar; 10.08.2016