import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'com.android.application'
android {
signingConfigs {
config {
storeFile file('my.keystore')
storePassword '123456'
}
}
compileSdkVersion 23
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "packagename"
minSdkVersion 22
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
moduleName = "libname"
abiFilters "armeabi-v7a"
ldLibs "android", "log", "m"
}
// Enabling multidex support.
//multiDexEnabled true
}
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
jni.srcDirs = ['src/main/jni'] //disable automatic ndk-build call
}
productFlavors {
'armeabi' {
flavorDimension "abi"
ndk {
abiFilter "armeabi"
}
}
'armeabi-v7a' {
flavorDimension "abi"
ndk {
abiFilter "armeabi-v7a"
}
}
'arm64-v8a' {
flavorDimension "abi"
ndk {
abiFilter "arm64-v8a"
}
}
'mips' {
flavorDimension "mips"
ndk {
abiFilter "mips"
}
}
'mips64' {
flavorDimension "mips64"
ndk {
abiFilter "mips64"
}
}
'x86' {
flavorDimension "abi"
ndk {
abiFilter "x86"
}
}
'x86_64' {
flavorDimension "abi"
ndk {
abiFilter "x86_64"
}
}
'fat' {
flavorDimension "abi"
}
}
project.ext.versionCodes = ['armeabi':1,
'armeabi-v7a':2,
'arm64-v8a':3,
'mips':5,
'mips64':6,
'x86':8,
'x86_64':9] //versionCode digit for each supported ABI, with 64bit>32bit and x86>armeabi-*
// make per-variant version code
applicationVariants.all { variant ->
// assign different version code for each output
variant.outputs.each { output ->
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 0) * 1000000 + defaultConfig.versionCode
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
jniDebuggable true
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
}
// call regular ndk-build(.cmd) script from app directory
task ndkBuild (type: Exec) {
def ndkBuildPath = project.plugins.findPlugin('com.android.application').sdkHandler.getNdkFolder().absolutePath + File.separator
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
ndkBuildPath += 'ndk-build.cmd'
} else {
ndkBuildPath += 'ndk-build'
}
commandLine ndkBuildPath, '-C', file('src/main').absolutePath
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn ndkBuild
}
Android Studio编译NDK app gradle配置
最新推荐文章于 2021-05-26 17:38:26 发布
这篇博客介绍了如何在Android Studio中配置NDK应用的构建,包括设置编译SDK版本、构建工具版本、ABI过滤器以及针对不同架构的flavor。内容详细说明了在gradle文件中配置jniLibs和jni源目录,启用多架构支持,并为每个支持的ABI分配不同的版本代码。此外,还提到了如何在构建过程中调用ndk-build脚本。
7006

被折叠的 条评论
为什么被折叠?



