package com.itheima.helloworld1;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.widget.Toast;public classMainActivity extends Activity {static{//加载打包完毕的so类库
System.loadLibrary("hello");//hello是Abdroid.mk中指定的名字。
}
@Overrideprotected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}/*##使用jni
1. 在项目根目录下创建jni文件夹
2. 在jni文件中创建一个c文件(src是写java代码的)
3. 在java代码中,创建一个本地方法helloFromC
public native String helloFromC();
4. 在jni中定义函数实现这个方法,函数名必须为
jstring Java_com_itheima_helloworld1_MainActivity_helloFromC(JNIEnv* env, jobject obj)
5. 返回一个字符串,用c定义一个字符串
char* cstr = "hello from c";
6. 把c的字符串转换成java的字符串
jstring jstr = (*env)->NewStringUTF(env, cstr);
return jstr;
7. 在jni中创建Android.mk文件
8. 在c文件中添加头文件
9. 在jni文件夹下执行ndk-build.cmd指令( 在磁盘jni文件夹下用cmd命令编译,编译完后在libs下的armeabi文件夹下有一个libhello.so文件,这就是编译后的c代码)
10. java代码中加载so类库,调用本地方法*/
public voidclick(View v){
Toast.makeText(this, helloFromC(), 0).show();
}//定义一个本地方法,方法体由c语言实现
publicnative String helloFromC();
}