ndk入門基礎demo
本稿では,ndkを用いた最初の関連内容を詳細に記録し,小さな例で述べる.(以下の命令と符号化を操作する前に、ndkの環境変数を構成してください.方法はjdkの構成と同じで、binディレクトリを構成するだけでいいです)
現在の操作はすべてeclipseで行われており、android studioはndkを全面的にサポートすることはできません.
ここでpublic static native String getStringFromC()最初に書くには、このnativeメソッドはjavahコマンドによってjavaのヘッダファイルを生成します.
1.「jni」というディレクトリを手動で作成します.
2.cmdを開き、現在のプロジェクトのディレクトリに切り替えます.コマンド、javah-classpath bin/classesを実行します.D:\sdk_r10\platforms\android-18\android.jar -d jni com.example.hellondk.MainActivity
[注]:javah-classpath bin/classes;[sdkplatforms任意バージョンandroid.jar]-d[ファイル格納フォルダを生成][パッケージ名.クラス名]
3.jniディレクトリの下にc言語のファイルを作成し、導入前にコンパイルする.hファイル
LOCAL_MODULEはコンパイル後のsoの名前を指定します
LOCAL_SRC_FIFESとは、どのcファイルをコンパイルするか
5.現在のディレクトリの下で、cmdでnkd-buildを実行する
実行するとobj->local->armeabiディレクトリの下にlibhelloというsoファイルが見つかります.so.
6.Activityに戻り、
soパッケージをロードして、万事順調で、呼び出すことができます
現在の操作はすべてeclipseで行われており、android studioはndkを全面的にサポートすることはできません.
package com.example.hellondk;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
static {
System.loadLibrary("hello");
}
public static native String getStringFromC();
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView)findViewById(R.id.text);
//System.out.println(getStringFromC());
text.setText(getStringFromC());
}
}
ここでpublic static native String getStringFromC()最初に書くには、このnativeメソッドはjavahコマンドによってjavaのヘッダファイルを生成します.
1.「jni」というディレクトリを手動で作成します.
2.cmdを開き、現在のプロジェクトのディレクトリに切り替えます.コマンド、javah-classpath bin/classesを実行します.D:\sdk_r10\platforms\android-18\android.jar -d jni com.example.hellondk.MainActivity
[注]:javah-classpath bin/classes;[sdkplatforms任意バージョンandroid.jar]-d[ファイル格納フォルダを生成][パッケージ名.クラス名]
3.jniディレクトリの下にc言語のファイルを作成し、導入前にコンパイルする.hファイル
#include<stdio.h>
#include<stdlib.h>
#include 'com_example_hellondk_MainActivity.h'
JNIEXPORT jstring JNICALL Java_com_example_hellondk_MainActivity_getStringFromC
(JNIEnv *env, jclass jclass){
return (*env)->NewStringUTF(env, " , ")
}
4.jniディレクトリにAndroidを導入する.mkファイル(記憶不要でコピー可能)LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.c
include $(BUILD_SHARED_LIBRARY)
LOCAL_MODULEはコンパイル後のsoの名前を指定します
LOCAL_SRC_FIFESとは、どのcファイルをコンパイルするか
5.現在のディレクトリの下で、cmdでnkd-buildを実行する
実行するとobj->local->armeabiディレクトリの下にlibhelloというsoファイルが見つかります.so.
6.Activityに戻り、
static {
System.loadLibrary("hello");
}
soパッケージをロードして、万事順調で、呼び出すことができます
public static native String getStringFromC(); ndk 。