Android Studio编译NDK app gradle配置

这篇博客介绍了如何在Android Studio中配置NDK应用的构建,包括设置编译SDK版本、构建工具版本、ABI过滤器以及针对不同架构的flavor。内容详细说明了在gradle文件中配置jniLibs和jni源目录,启用多架构支持,并为每个支持的ABI分配不同的版本代码。此外,还提到了如何在构建过程中调用ndk-build脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值