1

我正在尝试实现三星 SDK 的 SLook 功能。用于测试的设备是三星 Galaxy prime 4G。尽管错误提示,日志在 Try 块内显示错误行,当应用程序启动时它会崩溃。

我正在使用的 JAR 是

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

初始化 Slook 的 Java 代码在测试设备上引发错误。

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')
}
4

1 回答 1

0

我遇到了同样的问题并已将其修复如下:

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

在每次调用 Slook 方法之前,我都会检查这个 (edgeWidgetSupport) 标志。

于 2016-08-10T12:42:12.807 回答