Android Studio Ndk 编程
如今开发Android程序基本都已经从Eclipse转到了Android Studio了, 近期项目需求, 须要用到ndk编程, 于是就折腾了一下。
开发环境
- Android Studio 1.5.1
- android-ndk-r10e
- gradle 2.8
首先我们新建一个project叫做NdkDemo, 创建后的project文件夹结构例如以下
然后我们打开gradle.properties文件, 在文件的尾端写一句。 假设没有写这一句会编译不通过
android.useDeprecatedNdk=true
接着配置ndk路径, 点击左上角File然后选择Project Structure(或者直接点击红框标注的那个button)进入配置界面, 然后在红框内配置下载好的ndk路径就可以。
到此,配置工作就所有完毕。 以下进行开发相关的工作。
相信在Eclipse进行ndk编程过的同学都知道我们要去编写Android.mk, 可是在Android Studio是全然不用我们去编写的, 我们仅仅须要在gradle下写几个简单的语句。 Studio就会自己主动帮我们写好Android.mk,很方便。
defaultConfig {
...
ndk{
moduleName "ndk-demo" //要引用module的名字
ldLibs "log" //引用库的名字(选填)
abiFilters "armeabi" //配置须要编译出那些版本号的so库(假设不写,就编译出所有版本号的so库)
}
}
以上就是app文件夹的build.gradle的配置, 仅仅须要在defaultConfig 节点下写入ndk相关的配置就能够了。
接着我们新建一个Comman类, 写一个本地函数, System.loadLibrary的參数填的就是刚才在build.gradle配置的moduleName
public class Command {
public static native String getStringFromC();
static{
System.loadLibrary("ndk-demo");
}
}
然后我们右键app文件夹, 选择新建一个jni文件夹
点击下方的控制台Tab。 输入一下命令, 就会发现奇妙的在jni文件夹下会自己主动生成相关的.h文件
解释一下两句命令行的意思。第一句意思是进入到app/src/main/java文件夹下。第二句中, javah是jdk一个生成头文件的工具。 -d ../jni 表示生成的文件要放到上一层文件夹的jni文件夹下。 com.zwf.ndkdemo.ndk.Command就是刚才我们写的Command的全路径。
有了头文件我们就能够開始编写相关的c文件了, 在jni文件夹下新建一个c文件跟刚才的头文件名称字一样。 写入相关的功能。
点击执行, 成功!
那么。 我们生成的so库在哪里找呢。
完毕!
相关文章
- Android无法导入下载好的项目(和Eclipse中已经存在的项目命名一样导致冲突)解决的方法
- android ndk-build 编译静态库libxx.a 以及Android studio openssl 静态库配置(cmake)
- Android之 ImageView android:src和tools:src的区别是什么?
- Android中自定义Textview解决文字和数字换行不整齐
- Android-studio 连接真机 调试weex项目
- 为Android Studio中的SettingsActivity定制任务栏 (Setting Activity其实本质上是从PreferenceActivity中继承过来的)
- Android Studio中新建和引用assets文件
- Android Studio 2.2 新功能详解
- Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
- Android Studio 打印调试信息
- Android studio如何导出.so库(NDK开发入门)
- android学习-Toast的延迟时间
- Android Studio使用Lint进行代码检查
- Android 5.1 Settings源代码简要分析
- Android Studio 怎样打开两个项目?
- 【Android Studio报错】:Failed to read key AndroidDebugKey from store “C:Users13181.androiddebug.keys
- 一份完整的Android Studio搭建Flutter教程
- Android Studio 3.X NDK 开发基础
- Android studio 编译项目时报错: Gradle 'XXX' project refresh failed