Android Studio实现NDK编程学习笔记

年初列的计划中包含了NDK的学习,不过一直被耽搁了,这几天有时间就参考了网上的一些教程,做了一个简单的总结。主要参考学习,就作为转载了。

参考文章:(1)http://www.jianshu.com/p/7844aafe897d   这篇文章讲解的是使用非命令行方式实现NDK编程,更加简洁

(2)http://bbs.51cto.com/thread-1316339-1-1.html  这篇文章详细介绍了jdk的安装,android studio的安装等步骤,对NDK的讲解也比较细致,对初学者有很好的参考价值。

1、首先创建一个Android工程NdkTest2(由于之前创建过一个NdkTest项目删除不彻底,所以新建的项目名多了一个2),打开NdkTest2/gradle/wrapper目录下的gradle-wrapper.properties文件,修改gradle的版本为2.10,如下所示:

distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-all.zip

             


2、修改项目根目录下的build.gradle文件,将gradle的classpath修改为

classpath 'com.android.tools.build:gradle-experimental:0.6.0-beta5'

这是因为NDK需要“experimental”这个插件

3、修改app目录下的build.gradle文件,这个文件修改内容较多,红色代码是新增的部分(即被span包裹的代码)

apply plugin: 'com.android.model.application'//这个地方不再使用com.android.application,而是com.android.model.application

model{//在android{...}外层添加model{...}
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.3"

        defaultConfig.with {//defaultConfig改为defaultConfig.with
            applicationId "com.xuhui.ndktest"
            minSdkVersion.apiLevel 8  //minSdkVersion改为minSdkVersion.apiLevel,targetSdkVersion同样修改
            targetSdkVersion.apiLevel 23
            versionCode= 1//添加"="号
            versionName= "1.0"
        }
    }
    android.ndk {
        moduleName = "lb" //这是将来so文件的名称,自己取
    }
    android.buildTypes {//buildTypes从android{}中移出,放到model{}中,并添加前缀android.
        release {
            minifyEnabled= false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            proguardFiles.add(file("proguard-rules.pro"))//注释掉之前的混淆配置,改为这种方式
        }
    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
}

4、创建jni目录,右击“app”目录,在弹出的菜单中依次选择New→Folder→Jni Folder,然后点击finish完成

5、创建MyNdk.java文件,用来加载c++库

package com.xuhui.ndktest;

/**
 * Created by dell on 2016/12/7.
 */
public class MyNdk {
    static{//加载c++库
        System.loadLibrary("lb");//lb为库的名字
    }

    public native String getString();//库里的方法getString

}
按住Caps Lock+Alt+Enter键创建.c文件,(网上说是Options键,不过我的电脑是按Caps Lock键)lb.c文件默认创建在jni目录下,打开lb.c文件,内容如下,

#include <jni.h>

JNIEXPORT jstring JNICALL
Java_com_xuhui_ndktest_MyNdk_getString(JNIEnv *env, jobject instance) {

    // TODO


    return (*env)->NewStringUTF(env, returnValue);
}

修改"returnValue"值为“hello,ndk!”,在Activity中,设置TextView的值为getString的返回值,

textview.setText(new MyNdk().getString());

运行项目如下,

             

6、gradle各版本对应关系如下,

       


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值