Android Studio NDK 入门教程
2016-03-08 11:24
609 查看
下载NDK,有两种方法:
-在Android Studio 中打开 Module Setting,选择DownLoad
-在Android 官网下载,下载链接(可以直接复制到迅雷中下载):
https://dl.google.com/android/ndk/android-ndk-r10e-windows-x86_64.exe
下载完成后双击.exe文件,将会把NDK解压到当前文件夹。
配置NDK到Android Studio工程中:打开Module Setting,在NDK Location里选择NDK的位置。
修改Gradle 插件版本,这里使用的是 experimental版本,这个版本可以直接在build.gradle对ndk进行操作,不需要使用命令行生成.so。关于这个版本插件的使用,详见 http://tools.android.com/tech-docs/new-build-system/gradle-experimental
project/build.gradle
修改app/build.gradle配置,这里把我的代码贴出来。
以上代码有几点注意的:
apply plugin: ‘com.android.model.application’
属性值使用“=”号赋值
添加了modle块
5.在activity中写native方法。
6. 生成.c文件。选择方法名按alt+enter,选择create function。
7. 这时便在jni文件夹生成c文件,现在就可以在c代码里写相关的逻辑。下面贴出我的代码。
源码下载:http://download.csdn.net/detail/scheming13/9455283
-在Android Studio 中打开 Module Setting,选择DownLoad
-在Android 官网下载,下载链接(可以直接复制到迅雷中下载):
https://dl.google.com/android/ndk/android-ndk-r10e-windows-x86_64.exe
下载完成后双击.exe文件,将会把NDK解压到当前文件夹。
配置NDK到Android Studio工程中:打开Module Setting,在NDK Location里选择NDK的位置。
修改Gradle 插件版本,这里使用的是 experimental版本,这个版本可以直接在build.gradle对ndk进行操作,不需要使用命令行生成.so。关于这个版本插件的使用,详见 http://tools.android.com/tech-docs/new-build-system/gradle-experimental
project/build.gradle
classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha5'
修改app/build.gradle配置,这里把我的代码贴出来。
apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.2" defaultConfig.with { applicationId = "org.scheming.jnidemo" minSdkVersion.apiLevel = 15 targetSdkVersion.apiLevel = 23 versionCode = 1 versionName = "1.0" } } android.ndk { moduleName = "native"//这个名称会在调用JNI的时候使用 ldLibs.addAll(["android", "log"]) //添加JNI打印log的相关库 stl = "stlport_static" //添加C++ stl容器支持 /* * Other ndk flags configurable here are * cppFlags.add("-fno-rtti") * cppFlags.add("-fno-exceptions") * ldLibs.addAll(["android", "log"]) * stl = "system" */ } android.buildTypes { release { minifyEnabled = false proguardFiles.add(file('proguard-android.txt')) } } android.productFlavors { // for detailed abiFilter descriptions, refer to "Supported ABIs" @ // https://developer.android.com/ndk/guides/abis.html#sa create("arm") { ndk.abiFilters.add("armeabi") } create("arm7") { ndk.abiFilters.add("armeabi-v7a") } create("arm8") { ndk.abiFilters.add("arm64-v8a") } create("x86") { ndk.abiFilters.add("x86") } create("x86-64") { ndk.abiFilters.add("x86_64") } create("mips") { ndk.abiFilters.add("mips") } create("mips-64") { ndk.abiFilters.add("mips64") } // To include all cpu architectures, leaves abiFilters empty create("all") } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.0' }
以上代码有几点注意的:
apply plugin: ‘com.android.model.application’
属性值使用“=”号赋值
添加了modle块
5.在activity中写native方法。
6. 生成.c文件。选择方法名按alt+enter,选择create function。
7. 这时便在jni文件夹生成c文件,现在就可以在c代码里写相关的逻辑。下面贴出我的代码。
#include <jni.h> #include <string.h> JNIEXPORT jstring JNICALL Java_org_scheming_jnidemo_MainActivity_sayHello(JNIEnv *env, jobject instance, jstring name_) { const char *name = (*env)->GetStringUTFChars(env, name_, 0); // TODO char s[20] = "Hello "; strcat(s, name); (*env)->ReleaseStringUTFChars(env, name_, name); return (*env)->NewStringUTF(env, s); }
源码下载:http://download.csdn.net/detail/scheming13/9455283
相关文章推荐
- 使用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