Android中使用NDK
2016-04-18 14:59
435 查看
首先用Android Studio下载NDK
这个比较简单,就不多说了
代码会报错,先不管,在后面解决跟方便:)
然后修改MainActivity(主要用于显示结果)
在defaultConfig下添加NDK的配置,如下
之后在gradle.properties文件的末尾添加
然后点击Sync Now,开始同步
选择Create function,就可以创建一个test.C的文件了(值根据你所加载的库的名字所创建的),修改文件如下
现在运行一下程序就ok了
如果有朋友遇到问题,欢迎留言
这个比较简单,就不多说了
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了
如果有朋友遇到问题,欢迎留言
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories