2

私は Android の経験がなく、Samsung S-Pen SDK 2.3 を使用して非常に単純なアプリケーションを作成しようとしています。私は、Samsung 開発者の Web サイトからこのチュートリアルに従っています。最も基本的な例を実装すると、次のエラーが発生します。

WARNING: Could not load libjni_secime natives
No implementation found for native Lcom/bst/HwBeautify/BeautifyNative;.nativeCBInitEngine:()I
threadid=11: thread exiting with uncaught exception (group=0x41a242a0)
...

FATAL EXCEPTION: Thread-1829
java.lang.UnsatisfiedLinkError: Native method not found: com.bst.HwBeautify.BeautifyNative.nativeCBInitEngine:()
at com.bst.HwBeautify.BeautifyNative.nativeCBInitEngine(Native Method)
at com.bst.HwBeautify.BeautifyNative.cbInitEngine(SourceFile:107)
at com.bst.HwBeautify.BeautifyManager.b(SourceFile:87)
at com.bst.HwBeautify.BeautifyManager.a(SourceFile:85)
at com.bst.HwBeautify.BeautifyManager$1.run(SourceFile:64)
at java.lang.Thread.run(Thread.java:856)
...
S-Canvas is not created yet. Call "changeModeTo" in onInitialized() of SCanvasInitializeListener or call it after onInitialized() SCanvasLayout is up to been initailized
... No implementation found for native Lcom/bst/HwBeautify/BeautifyNative;.nativeCBInitEngine:()I threadid=16: thread exiting with uncaught exception (group=0x41a242a0)

キャンバスを初期化するアクティビティのコード全体を次に示します。

package com.example.canvastest;

import com.samsung.spensdk.SCanvasView;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.widget.RelativeLayout;

public class CanvasSpace extends Activity {


    private Context mContext;
    private RelativeLayout mCanvasContainer;
    private SCanvasView mSCanvas;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_canvas_space);

        mContext = this;

        mCanvasContainer = (RelativeLayout) findViewById(R.id.canvas_container);
        mSCanvas = new SCanvasView(mContext);

        mCanvasContainer.addView(mSCanvas);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.canvas_space, menu);
        return true;
    }


}

そして、ここに私のレイアウトがあります:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".CanvasSpace" >

    <RelativeLayout 
            android:id="@+id/canvas_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center">        
    </RelativeLayout>

</RelativeLayout>

私が懸念しているのは、この非常に奇妙なS_Pen_SDK2.3フォルダー構造です。通常のディレクトリの代わりに、パス付きのファイル名があります (705 項目)。

SDK フォルダー

私はこのようなものを見たことがありません。なぜこのようなことをするのでしょうか?このようにフォルダを構成する利点はありますか? とにかく、私はチュートリアルに従い、ライブラリを参照し、armeabi指定されたフォルダーにファイルを含めます。 これが私のパッケージエクスプローラーのビューです:

パッケージ エクスプローラー

Web を検索したところ、この問題に対処する Samsung 開発者に関するスレッドが見つかりましたが、私の場合は役に立ちません。これまでに試したのは、フォルダー内のファイル名の前にあるこれらのパスを削除するarmeabiことでしたが、それは役に立ちませんでした。誰かがそれを機能させる方法のヒントを教えてくれれば、それは私にとって非常に役立ちます. プロジェクトに何があるのか​​を完全に明確にするために、非常に多くの明白なコードとスクリーンショットを含めました。

4

1 に答える 1

5

ライブラリが間違った方法でインポートされているため、例外が発生します。

とディレクトリlibspen23.jar全体を にコピーします。armeabilibs

次のようになります。

libs  
   armeabi
      lib* (all .so files)
   libspen23.jar

S Pen SDK 2.3 で提供されているサンプルを見てください。ライブラリを適切にインポートする方法が示されています。

于 2013-03-09T23:09:21.880 に答える