プロジェクトでネイティブc/C++を使用する必要があるため、NDKを使用する必要があります。 eclipseで簡単に設定する方法はありますか?android projectのNDKの使い方は?
ありがとうございました。
プロジェクトでネイティブc/C++を使用する必要があるため、NDKを使用する必要があります。 eclipseで簡単に設定する方法はありますか?android projectのNDKの使い方は?
ありがとうございました。
私はしばらくの間実験をした後、初心者がNDKをEclipseで使い始める最良の方法は、最初にこのチュートリアルを参照してください:http://marakana.com/forums/android/examples/49.htmlとjniフォルダに必要なファイルを作成するだけです他に何もしないでください)。次に、このhttp://mobilepearls.com/labs/ndk-builder-in-eclipse/を読み、手順に従ってください。その後、あなたは準備が整いました。
は、次の手順
1があります。プロジェクトディレクトリ
2にJNIフォルダを作成します:ファイル名を作成Android.mkを新しく作成したフォルダにJNIをして作成しますCまたはC++の新しいファイルは、私たちがCファイルを使用していると考えることができ、ファイルの名前はMyNativeC.cです
3:今Android.mkファイルに次のコードを入力してください
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_LDLIBS := -llog
LOCAL_MODULE := local_module_ndk // this is the name of local module by which you can call the Local source file
LOCAL_SRC_FILES := MyNativeC.c// hear we can pass the name of your native file name hear we are use MyNativeC.c file so we pass the name of MyNativeC.c in local source file name
include $(BUILD_SHARED_LIBRA
4オープンしましMyNativeC.cファイルと 聞く私たちは今、あなたの活動場所を編集コード
#include <jni.h>
#include <string.h>
#include <stdio.h>
#include <android/log.h>
#define DEBUG_TAG "MY_NDK_DEMO"
jstring Java_com_myNDKDemo_MainActivity_getString(JNIEnv * env, jobject this, jint value1, jint value2)
{
char *szFormat = "Addition : %i";
char *szResult;
jlong sum = value1+value2;
szResult = malloc(sizeof(szFormat) + 20);
sprintf(szResult, szFormat, sum);
jstring result = (*env)->NewStringUTF(env, szResult);
free(szResult);
return result;
}
5次作成するには、(自分の活動から)あなたのAndroidコードから呼び出したい2つのメソッドを作成します
最初にネイティブコードのライブラリをロードする必要がある静的ブロックを作成します。私たちは、私の活動の名のコードがMainActivity.java
Cコードをコンパイルし、ため NDK development kitにあなたが持っている最初のCコードをコンパイルし、今オープン
package com.myNDKDemo
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends Activity {
private static final String DEBUG_TAG = "MainActivity";
private native String getStringAdd(int fist, int second);
static {
System.loadLibrary("local_module_ndk");
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
button b = new Button(this);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),""+getStringAdd(100,200), 2000).show();
}
});
setContentView(b);
}
}
6今最初であることを示し
聞きます走るそして、タイプは、今私たちが自動に入る押す
私のNDKのNDKビルドファイルパスのパスtypw今のパスにその後
を投影する行く
をcmdをあなたのプロジェクトにlibsディレクトリを作成します。
7プロジェクトに表示されている場合は、libs、objが自動的に作成されます。
8.Refresh(右クリック)JNIフォルダ(TEH NDKビルドを使用してそれをビルドするたびにリフレッシュし、これは実際のlibsフォルダに新しく建設された共有ライブラリをロードします。)
9。今すぐあなたのアンドロイドプロジェクトを実行し、ボタンを押すと、あなたに追加が表示されます
ありがとう
ありがとうございます。私はあなたが一歩一歩説明した方法が本当に好きです。再度、感謝します。 –
Android Studioを使用しているすべての人に、この例を実行しようとしています。 1./app/src/mainディレクトリに "jniLibs"という名前のフォルダを作成します 2.上記のチュートリアルを使用してモジュールをビルドしたら、libフォルダの内容をコピーします(おそらく "armeabi"別のアーキテクチャのために構築された)を "jniLibs"に置き換えてください。 これで動作します。 –
最初のリンクは古いです。/app /ディレクトリはもはや必要ではありません。あなたはAndroid.mkだけが必要で、ndk-buildはJust Workです。 – richq