JNI开发(2)——开发实战

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包

位置如下:
这里写图片描述

最后结果如下:

图片名称


参考:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值