JNI开发(2)——开发实战
2016-04-21 23:05
411 查看
JNI开发(1)——概述、环境搭建、必要知识点
JNI开发(2)——开发实战
本篇是重头戏:JNI实战开发,如果你对于 JNI、NDK 还没概念的话 那么观看本篇 也是没有太大难度的 ,哈哈哈哈!!!一些关于Android中NDK开发的一些知识请看我们上一篇: JNI开发(1)——概述、环境搭建、必要知识点
划掉的部分是Eclipse需要 Android studio不需要的流程
配置
红色标注的4个文件是需要手动修改的文件:gradle-wrapper.properties文件内容为如下
distributionUrl=https\://services.gradle.org/distributions/gradle-xx-xx.zip
修改Project(非Module)下的
Gradle文件,将gradle版本改为实验版本
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle-experimental:0.7.0-alpha1' } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
修改Module下的Gradle文件 ,细节方面请自行对照…
apply plugin: 'com.android.model.application' model { android { compileSdkVersion = 23 buildToolsVersion = "23.0.3" defaultConfig { applicationId = "com.wenld.jni.jnidemo" minSdkVersion.apiLevel = 14 targetSdkVersion.apiLevel = 23 } /* * native build settings */ ndk { moduleName = "test" // 设置生成的文件名 ldLibs.addAll(['log', 'android', 'EGL', 'GLESv1_CM']) } buildTypes { release { minifyEnabled = false proguardFiles.add(file('proguard-rules.pro')) } } productFlavors { 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']) compile 'com.android.support:appcompat-v7:23.2.1' }
根目录下
gradle.properties文件 添加如下一行
android.useDeprecatedNdk=true
生成jni文件夹
配置就差不多OK了,接下来进入实战
实战
编写声明了 native 方法的 Java 类
声明这是一个native函数,由本地代码实现,使用
native关键字;按照下图的操作就可以自动创建MyLibrary.c文件
/** * Created by wenld- on 2016/4/15. */ public class MyNdk { static { System.loadLibrary("test"); } public native String getString(); }
windows 使用
alt+ enter键,会自动创建
.c文件到
jni目录
修改 test.c 文件 内c++
代码
这边我输出字符串:"this wenld's jniDemo"
.so包
位置如下:最后结果如下:
参考:
Android Studio使用gradle-experimental构建NDK工程
一览新的 Android Gradle 构建工具:新的 DSL 结构 和 Gradle 2.5
Android Studio使用新的Gradle构建工具配置NDK环境:
Android Studio 1.5 RC1搭建NDK开发环境
JNI开发入门教程
Android NDK API
Android NDk 开发简易教程
使用Android Studio 1.3 版本进行NDK开发
IDEA 及 GRADLE 使用总结
JNI 开发流程
Android studio配置本地Gradle
Android Studio NDk调试(基于gradle-experimental插件与LLDB)
JNI资料
github:https://github.com/googlesamples/android-ndk
相关文章推荐
- 2016第17周四
- 20150112--抽象类+接口+重载+自动加载机制-01
- 转:linux守护进程的启动方法
- 用python实现把数字人民币金额转换成大写的脚本程序
- burpsuite中的几款插件推荐
- 贪心算法
- 测试作业
- ElasticSearch2.2.1之IK分词器的安装
- Oracle安装问题: 输入的ADMIN 口令不符合Oracle建议的标准
- StackOverflow程序员推荐:每个程序员都应读的30本书
- GridLayout 计算器
- 1-分布式架构
- 【Android】内存泄漏调试
- MarkDown学习笔记
- ASP.NET MVC之从控制器传递数据到视图四种方式
- C语言问卷调查
- 贪心-背包问题
- 特征提取相关网址
- [HTTP:101170]The servlet DelServletContextAttr is referenced in servlet-mapping /servlet/DelServlet
- postfix 配置之 开启SASL认证遇到的问题