android studio2.3.2增加jni之自定义Android.mk

基于前面一篇android studio增加jni https://my.oschina.net/hclydao/blog/1555612
现在在增加自定义Android.mk,在网上也找了一些,这里记录下比较简单的方法
在前一篇的基础上注释掉build.gradle和gradle.properties的修改,然后修改app的build.gradle增加如下内容

sourceSets { main { jni.srcDirs = [] jniLibs.srcDirs 'src/main/libs' } } task ndkBuild(type: Exec, description: 'Compile JNI source via NDK') { commandLine "/dao/ubapp/androidsdk/android-ndk-r10e/ndk-build", 'NDK_PROJECT_PATH=build/intermediates/ndk', 'NDK_LIBS_OUT=src/main/libs', 'APP_BUILD_SCRIPT=src/main/jni/Android.mk', 'NDK_APPLICATION_MK=src/main/jni/Application.mk' }tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild }android.applicationVariants.all { variant -> variant.outputs.each { output -> def file = output.outputFile output.outputFile = new File(file.parent, defaultConfig.applicationId + "-" + buildType.name + "-Ver" + defaultConfig.versionName + ".apk") } }

其中souceSets中jni.srcDirs这个一定要有,经过测试这个如果没有有可能会报错,
实际测试在有的环境中这样改编译不过,另一种可以,就是把上面的
sourceSets { main { jni.srcDirs = [] jniLibs.srcDirs 'src/main/libs' } }

【android studio2.3.2增加jni之自定义Android.mk】不加,然后在android中增加如下:
android { compileSdkVersion 26 buildToolsVersion "27.0.3" //使用Android Lib生成release jar需要 publishNonDefault true defaultConfig { minSdkVersion 19 targetSdkVersion 26 versionCode 1 versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" /* ndk { moduleName "Hardware" }*/ } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }sourceSets.main.jni.srcDirs = [] //禁用自带编译ndk功能 sourceSets.main.jniLibs.srcDir 'src/main/libs' }

task ndkBuild中commandLine后为ndk下的ndk-build的绝对路径
NDK_PROJECT_PATH

这个内容是通用的可以不用改
NDK_LIBS_OUT

这是设置生成的库文件存放的路径,一般也是通用的
APP_BUILD_SCRIPT

NDK_APPLICATION_MK

分别是指定Android.mk路径和Application.mk路径
然后下面的
android.applicationVariants.all

这个是用来重命名生成的apk的名字的.
附上我的mk文件
Android.mk
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE:= Hardware LOCAL_SRC_FILES := Hardware.c LOCAL_LDLIBS:= -llog include $(BUILD_SHARED_LIBRARY)

Application.mk
APP_ABI := armeabi

============================================
作者:hclydao
https://my.oschina.net/hclydao/blog
版权没有,但是转载请保留此段声明
============================================

    推荐阅读