首先用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了
如果有朋友遇到问题,欢迎留言