【问题标题】:Spen sample applicatoin crashes just after it launches(Runtime error)Spen 示例应用程序在启动后立即崩溃(运行时错误)
【发布时间】:2014-06-09 10:26:49
【问题描述】:

我正在为我的三星 Note 3.0 制作一个示例 Spen SDK 应用程序,并且正在使用 Android Studio。相关的xml文件是:-

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/settingBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="pen"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/eraseBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="erase"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/undoBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="undo"
            android:layout_weight="1"/>
        <Button
            android:id="@+id/redoBtn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="redo"
            android:layout_weight="1"/>
    </LinearLayout>

    <FrameLayout
        android:id="@+id/canvas_container"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <com.samsung.sdraw.CanvasView
            android:id="@+id/canvas_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_launcher"
            />
        <com.samsung.sdraw.SettingView
            android:id="@+id/setting_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>

而对应的java代码是:-

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MainActivity mContext = this;

        CanvasView mCanvasView = (CanvasView) findViewById(R.id.canvas_view);
        RelativeLayout mCanvasContainer = (RelativeLayout) findViewById(R.id.canvas_container);
        SCanvasView mSCanvas = new SCanvasView(mContext);
        mCanvasContainer.addView(mSCanvas);
    }

现在,当我尝试通过将三星 Note 3.0 连接到 PC 来调试应用程序时,应用程序启动,显示主页面并在一秒钟内崩溃。我在网上搜索,发现thisthis。我的 libs 文件夹中也没有 Spen SDK 的 armeabi 目录。因此,我包含了这些库,现在我的项目的 libs 文件夹如下所示:-

libs <-- my Project's folder
  libs
    armeabi
    libspen23.jar
    libspen23_multiwindow.jar

但同样的事情仍在发生。没有编译错误。然后我注意到的一件事是我的 xml 文件无法由 Android Studio 呈现。以下是截图:

例外情况是:- 无法实例化以下类:

  • com.samsung.sdraw.CanvasView(渲染期间不允许写访问(\mnt\sdcard\android\data\null\serial) )
  • com.samsung.sdraw.SettingView(java.lang.NullPointerException )

谁能告诉我这是什么问题?

更新:

  1. 我已经调试了应用程序,异常发生在

    setContentView(R.layout.activity_main);

在 OnCreate() 中。但我不知道为什么应用程序在那里崩溃。

  1. gradle 文件是:-
apply plugin: 'android'  

android {  
    compileSdkVersion 19  
    buildToolsVersion '19.1.0'  
    defaultConfig {  
        applicationId 'com.example.myapplication3.app'  
        minSdkVersion 9  
        targetSdkVersion 19  
        versionCode 1  
        versionName '1.0'  
    }  
    buildTypes {  
        release {  
            runProguard false  
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'  
        }  
    }  
    productFlavors {  
    }  
}  

 dependencies {  
    compile fileTree(dir: 'libs', include: ['*.jar'])  
    compile files('libs/libspen23.jar')  
    compile 'com.android.support:appcompat-v7:19.+'  
    compile files('libs/libs/libspen23.jar')  
}
  1. 如果我注释 xml 文件中的 CanvasView 和 SettingsView 块以及 OnCreate() 函数中的相应行,则应用程序运行。

【问题讨论】:

  • 您应该使用 logcat 而不是断点来检查此类问题,并将崩溃的结果 堆栈跟踪 编辑到您的问题中。但是您的 activity_main xml 可能无效或包含对未进入设备的自定义组件的引用。

标签: android android-studio samsung-mobile samsung-mobile-sdk


【解决方案1】:

当您使用 layout-weight 时,您应该将 layout-width 或 layout-height 设置为 0dip。 尝试在每个按钮中设置 android:layout_width="0dip" 。也许这会做到。如果不尝试对此发表评论:

<com.samsung.sdraw.CanvasView
            android:id="@+id/canvas_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/ic_launcher"
            />
        <com.samsung.sdraw.SettingView
            android:id="@+id/setting_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

如果有帮助,我们会知道问题出在哪里。

另外请粘贴您的 build.gradle

【讨论】:

  • @marcinm...评论 CanvasView 和 SettingView 块使应用程序在没有崩溃的情况下运行。应用主屏幕上有 4 个按钮。
  • 好的,我会告诉你我在我的项目中做了什么,也许它会有所帮助。将您的 .jars 移动到顶层(与 build.gradle 相同)libs 目录。更改 gradle.build -> 编译文件('libs/libspen23.jar')编译文件('libs/libspen23_multiwindow.jar')。比在文件夹主子文件夹 jniLibs 中创建并粘贴 armeabi 及其内容。它适用于我,因为 Android Studio 会自动将 jniLibs 文件夹中的本机库添加到项目中。
猜你喜欢
  • 1970-01-01
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多