您的位置:首页 > 其它

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: