基于前面一篇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
版权没有,但是转载请保留此段声明
============================================
推荐阅读
- Android除了三大动画,还有哪些动画()
- 使用ValueAnimator设置动画
- android4.0 USB Camera实例(三)UVC
- android系统|android4.4 电阻触摸校准修改说明
- Android ffmpeg解码
- Android中的EditText失去和得到焦点时的事件响应
- SQLite笔记之-重置表自动编号