何らかの理由で、メインアクティビティからのみネイティブ関数を呼び出すことができ、作成したカスタムビューは呼び出すことができません。これがサンプルファイルです(チュートリアルに従いましたが、クラスの名前をhttp://mindtherobot.com/blog/452/android-beginners-ndk-setup-step-by-step/に変更しました)
ネイティブ関数「getNewString」の使用法を参照してください。
package com.example.native;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.View;
public class NativeTestActivity extends Activity
{
static
{
System.loadLibrary("nativeTest");
}
private native String getNewString();
@Override public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setContentView(new BitmapView(this));
String hello = getNewString(); // This line works fine
new AlertDialog.Builder(this).setMessage(hello).show();
}
}
class BitmapView extends View
{
static
{
System.loadLibrary("nativeTest");
}
private native String getNewString();
public BitmapView(Context context)
{
super(context);
String hello = getNewString(); // This line throws the UnsatisfiedLinkError
new AlertDialog.Builder(this.getContext()).setMessage(hello).show();
}
}
カスタムビューでネイティブ関数を呼び出すにはどうすればよいですか?
私はAndroid2.2アプリとしてアプリケーションを構築しました。HTCDesireでアプリケーションを実行しています。最新のSDK(9)と最新のNDK(r5)を持っています。