您的位置:首页 > 移动开发 > Android开发

Android中使用NDK

2016-04-18 15:00 417 查看
首先用Android Studio下载NDK



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

1.写调用jni的Java代码

新建一个JniUtils类

public class JniUtils {
static {
System.loadLibrary("test");
}
public native String getString();
}


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

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

public class MainActivity extends AppCompatActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv= (TextView) findViewById(R.id.tv);
JniUtils jni=new JniUtils();
tv.setText(jni.getString());
}
}


2.修改配置文件

在app对应的build.gradle文件

在defaultConfig下添加NDK的配置,如下

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


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

android.useDeprecatedNdk=true


然后点击Sync Now,开始同步

3.写C的代码

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



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

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


现在运行一下程序就ok了



如果有朋友遇到问题,欢迎留言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: