Android中使用NDK

首先用Android Studio下载NDK 

这个比较简单,就不多说了

1.写调用jni的Java代码

新建一个JniUtils

 

1 public class JniUtils {
2     static {
3         System.loadLibrary("test");
4     }
5     public native String getString();
6 }

代码会报错,先不管,在后面解决跟方便:) 

然后修改MainActivity(主要用于显示结果)

 

 1 public class MainActivity extends AppCompatActivity {
 2     private TextView tv;
 3     @Override
 4     protected void onCreate(Bundle savedInstanceState) {
 5         super.onCreate(savedInstanceState);
 6         setContentView(R.layout.activity_main);
 7         tv= (TextView) findViewById(R.id.tv);
 8         JniUtils jni=new JniUtils();
 9         tv.setText(jni.getString());
10     }
11 }

 

 

2.修改配置文件

app对应的build.gradle文件 

defaultConfig下添加NDK的配置,如下

 

 1 ...
 2 defaultConfig {
 3         applicationId "com.vonnie.ndkexample"//你的包名
 4         minSdkVersion 14
 5         targetSdkVersion 23
 6         versionCode 1
 7         versionName "1.0"
 8         ndk {
 9             moduleName "test"            //生成的so名字
10             abiFilters "armeabi", "armeabi-v7a", "x86"    //输出指定三种abi体系结构下的so库。目前可有可无。
11         }
12     }
13 ...

 

 

之后在gradle.properties文件的末尾添加

1 android.useDeprecatedNdk=true

然后点击Sync Now,开始同步

3.写C的代码

同步完成后,就可以处理1中的错误代码了,鼠标点中报错的getString()函数按ALT+ENT键(Windows下的自动提示错误的快捷键)。 

选择Create function,就可以创建一个test.C的文件了(值根据你所加载的库的名字所创建的),修改文件如下

 

1 #include <jni.h>
2 JNIEXPORT jstring JNICALL
3 Java_com_kun_ndkexample_JniUtils_getString(JNIEnv *env, jobject instance) {
4     return (*env)->NewStringUTF(env,"Android Studio NDK JNI developer from test!");
5 }

现在运行一下程序就ok 

   

如果有朋友遇到问题,欢迎留言

   

   

   

posted @ 2016-04-18 15:00  Vonnie_Jade  阅读(840)  评论(0编辑  收藏  举报