JNI开发(2)——开发实战
2017-07-29 09:43
369 查看
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
相关文章推荐
- Android培训实战教程之 Studio下JNI开发
- NDK-JNI实战教程(四)再谈新工具及NDK开发调试
- Android培训实战教程之 Studio下JNI开发
- Android培训实战教程之 Studio下JNI开发
- 安卓实战开发之JNI再深入了解
- 安卓实战开发之JNI入门及高效的配置
- Android培训实战教程之 Studio下JNI开发
- JNI开发(2)——开发实战
- Android培训实战教程之 Studio下JNI开发
- Android培训实战教程之 Studio下JNI开发
- Android的JNI【实战教程】5⃣️---Android Studio 2.2 以上 NDK开发
- 安卓实战开发之JNI从小白到伪老白深入了解JNI动态注册native方法及JNI数据使用
- Android培训实战教程之 Studio下JNI开发
- 安卓实战开发之JNI入门及高效的配置(android studio一键生成.h,so及方法签名)
- 安卓实战开发之JNI入门及高效的配置
- (4.1.27.7)JNI/NDK开发指南(四)——JNI 实战全面解析
- NDK-JNI实战教程(四)再谈新工具及NDK开发调试
- Android NDK开发:JNI实战篇
- [置顶] Android Studio中实战Jni开发
- 基于SSH+Maven+Extjs4+MySQL技术实战开发CRM客户关系管理系统