Android studio 使用android.mk来配置ndk

文章来源于博客:http://blog.csdn.net/u012391876/article/details/52137050 感谢作者的分享


当前环境: 
android studio 2.1.1 
android-ndk-r10b

1、创建as项目

2、新建jni文件夹

在下列文件目录下,右键 新建folder –jni folder

3、编写JNI类

package project.vvizware.com.androidmkdemo;

public class Jni {
    static {
        System.loadLibrary("hello");
    }
    public native int getInt();
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

利用as的命令行生成.h文件,并将该文件剪切到jni文件下。 
新建hello.cpp来实现.h

#include "project_vvizware_com_androidmkdemo_Jni.h"

JNIEXPORT jint JNICALL Java_project_vvizware_com_androidmkdemo_Jni_getInt
  (JNIEnv *, jobject){
      return 3;
  }

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

由于as在jni目录下只有一个.c/.cpp文件时,会有bug(这个问题好像在ndk12上面不会出现)

4、在jni文件下创建android.mk 和Application.mk

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)

LOCAL_MODULE := hello
LOCAL_SRC_FILES := hello.cpp

include $(BUILD_SHARED_LIBRARY)

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

LOCAL_MODULE:=hello 表示的是要生成的库是hello 
LOCAL_SRC_FILES :=hello.cpp 表示的是 以这个为源 
整体来说就是以hello.cpp来生成hell.so

Application.mk

APP_ABI:=all
 
 
  • 1

表示支持所有的abi版本,会生成所有版本的so文件 x86等


Android Studio 和Eclipse在ndk的差别在于,Eclipse会自己去加载相关的.mk文件,而在Android studio 上面是在gradle里面进行配置,在gradle里面可以直接

ndk{
    moduleName "test"
    abiFilter "x86"
}
....
resourceSets...
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

写上这些之后,as就会给你自动生成.mk的文件

如果想要在android studio 中使用Android.mk来直接进行ndk等的设置,需要在gradle 作出设置。 
下面是完整的app gradle的设置:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "project.vvizware.com.androidmkdemo"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets.main{
        jni.srcDirs=[]//禁用as自动生成mk
    }
    task ndkBuild(type:Exec,description:'Compile JNI source via NDK'){
        commandLine "E:\\android-ndk-r10b\\ndk-build.cmd",//配置ndk的路径
                'NDK_PROJECT_PATH=build/intermediates/ndk',//ndk默认的生成so的文件
                'NDK_LIBS_OUT=src/main/jniLibs',//配置的我们想要生成的so文件所在的位置
                'APP_BUILD_SCRIPT=src/main/jni/Android.mk',//指定项目以这个mk的方式
                'NDK_APPLOCATION_MK=src/main/jni/Application.mk'//指定项目以这个mk的方式
    }
    tasks.withType(JavaCompile){//使用ndkBuild
        compileTask ->compileTask.dependsOn ndkBuild
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.3.0'
}

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

注意: 
当前的android studio 并没有将ndk配置进行 ,没有在Project-structure里面配置ndk的路径

这里在defaultConfig 里面也没有配置ndk

和ndk相关的一切,路径等都在gradle里面另外做配置


demo下载地址: 
http://download.csdn.net/detail/u012391876/9597675



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值